From 084cdea6862cb65fe4bb807a211a9e1c17cffec8 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 24 Dec 2016 14:26:03 +0100 Subject: [PATCH] Irrlicht 1.9 support --- src/cguittfont/CGUITTFont.h | 7 +++++++ src/client/tile.cpp | 2 +- src/drawscene.cpp | 5 +++++ src/game.cpp | 2 ++ src/guiChatConsole.cpp | 2 +- src/irrlicht_changes/static_text.cpp | 4 ++++ 6 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/cguittfont/CGUITTFont.h b/src/cguittfont/CGUITTFont.h index 0aa540c5c..77c9e34f8 100644 --- a/src/cguittfont/CGUITTFont.h +++ b/src/cguittfont/CGUITTFont.h @@ -125,6 +125,10 @@ namespace gui bool flgmip = driver->getTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS); driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, false); +#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8 + bool flgcpy = driver->getTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY); + driver->setTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY, true); +#endif // Set the texture color format. switch (pixel_mode) @@ -140,6 +144,9 @@ namespace gui // Restore our texture creation flags. driver->setTextureCreationFlag(video::ETCF_CREATE_MIP_MAPS, flgmip); +#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8 + driver->setTextureCreationFlag(video::ETCF_ALLOW_MEMORY_COPY, flgcpy); +#endif return texture ? true : false; } diff --git a/src/client/tile.cpp b/src/client/tile.cpp index 8f0c39465..7f7535df6 100644 --- a/src/client/tile.cpp +++ b/src/client/tile.cpp @@ -938,7 +938,7 @@ video::ITexture* TextureSource::generateTextureFromMesh( smgr->drop(); // Unset render target - driver->setRenderTarget(0, false, true, 0); + driver->setRenderTarget(0, false, true, video::SColor(0,0,0,0)); if (params.delete_texture_on_shutdown) m_texture_trash.push_back(rtt); diff --git a/src/drawscene.cpp b/src/drawscene.cpp index c6abda4ac..32a078b8e 100644 --- a/src/drawscene.cpp +++ b/src/drawscene.cpp @@ -383,6 +383,10 @@ void draw_pageflip_3d_mode(Camera& camera, bool show_hud, bool draw_wield_tool, Client& client, gui::IGUIEnvironment* guienv, video::SColor skycolor) { +#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR > 8 + errorstream << "Pageflip 3D mode is not supported" + << " with your Irrlicht version!" << std::endl; +#else /* preserve old setup*/ irr::core::vector3df oldPosition = camera.getCameraNode()->getPosition(); irr::core::vector3df oldTarget = camera.getCameraNode()->getTarget(); @@ -451,6 +455,7 @@ void draw_pageflip_3d_mode(Camera& camera, bool show_hud, camera.getCameraNode()->setPosition(oldPosition); camera.getCameraNode()->setTarget(oldTarget); +#endif } void draw_plain(Camera &camera, bool show_hud, Hud &hud, diff --git a/src/game.cpp b/src/game.cpp index 966c23073..5bdbea617 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -2071,9 +2071,11 @@ void Game::run() void Game::shutdown() { +#if IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR <= 8 if (g_settings->get("3d_mode") == "pageflip") { driver->setRenderTarget(irr::video::ERT_STEREO_BOTH_BUFFERS); } +#endif showOverlayMessage(wgettext("Shutting down..."), 0, 0, false); diff --git a/src/guiChatConsole.cpp b/src/guiChatConsole.cpp index 8dd5ab032..867576175 100644 --- a/src/guiChatConsole.cpp +++ b/src/guiChatConsole.cpp @@ -630,7 +630,7 @@ bool GUIChatConsole::OnEvent(const SEvent& event) } else if(event.KeyInput.Char != 0 && !event.KeyInput.Control) { - #if (defined(__linux__)) + #if defined(__linux__) && (IRRLICHT_VERSION_MAJOR == 1 && IRRLICHT_VERSION_MINOR < 9) wchar_t wc = L'_'; mbtowc( &wc, (char *) &event.KeyInput.Char, sizeof(event.KeyInput.Char) ); prompt.input(wc); diff --git a/src/irrlicht_changes/static_text.cpp b/src/irrlicht_changes/static_text.cpp index 703287eb3..50c6c6a68 100644 --- a/src/irrlicht_changes/static_text.cpp +++ b/src/irrlicht_changes/static_text.cpp @@ -20,6 +20,10 @@ #if USE_FREETYPE #include "cguittfont/xCGUITTFont.h" #endif +#ifndef _IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX + // newer Irrlicht versions no longer have this + #define _IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX +#endif #include "util/string.h"