diff --git a/engines/wintermute/ad/ad_game.h b/engines/wintermute/ad/ad_game.h index 2b8663a9d5d..24e820c8f7a 100644 --- a/engines/wintermute/ad/ad_game.h +++ b/engines/wintermute/ad/ad_game.h @@ -100,7 +100,7 @@ public: TShadowType getMaxShadowType(BaseObject *object) override; - bool getFogParams(FogParameters &fogParameters) override; + bool getFogParams(bool *fogEnabled, uint32 *fogColor, float *start, float *end) override; #endif bool getVersion(byte *verMajor, byte *verMinor, byte *extMajor, byte *extMinor) const override; diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp index 2a8efa3599d..f0e33adee1d 100644 --- a/engines/wintermute/ad/ad_scene.cpp +++ b/engines/wintermute/ad/ad_scene.cpp @@ -159,10 +159,10 @@ void AdScene::setDefaults() { _ambientLightColor = 0x00000000; - _fogParameters._enabled = false; - _fogParameters._color = 0x00FFFFFF; - _fogParameters._start = 0.0f; - _fogParameters._end = 0.0f; + _fogEnabled = false; + _fogColor = 0x00FFFFFF; + _fogStart = 0.0f; + _fogEnd = 0.0f; #endif _viewport = nullptr; @@ -2252,10 +2252,10 @@ bool AdScene::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, ////////////////////////////////////////////////////////////////////////// else if (strcmp(name, "EnableFog") == 0) { stack->correctParams(3); - _fogParameters._enabled = true; - _fogParameters._color = stack->pop()->getInt(); - _fogParameters._start = stack->pop()->getFloat(); - _fogParameters._end = stack->pop()->getFloat(); + _fogEnabled = true; + _fogColor = stack->pop()->getInt(); + _fogStart = stack->pop()->getFloat(); + _fogEnd = stack->pop()->getFloat(); stack->pushNULL(); return STATUS_OK; @@ -2266,7 +2266,7 @@ bool AdScene::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, ////////////////////////////////////////////////////////////////////////// else if (strcmp(name, "DisableFog") == 0) { stack->correctParams(0); - _fogParameters._enabled = false; + _fogEnabled = false; stack->pushNULL(); return STATUS_OK; @@ -2984,13 +2984,13 @@ bool AdScene::persist(BasePersistenceManager *persistMgr) { persistMgr->transferFloat(TMEMBER(_farPlane)); persistMgr->transferSint32(TMEMBER_INT(_maxShadowType)); persistMgr->transferUint32(TMEMBER(_ambientLightColor)); - persistMgr->transferBool(TMEMBER(_fogParameters._enabled)); - persistMgr->transferUint32(TMEMBER(_fogParameters._color)); - persistMgr->transferFloat(TMEMBER(_fogParameters._start)); - persistMgr->transferFloat(TMEMBER(_fogParameters._end)); + persistMgr->transferBool(TMEMBER(_fogEnabled)); + persistMgr->transferUint32(TMEMBER(_fogColor)); + persistMgr->transferFloat(TMEMBER(_fogStart)); + persistMgr->transferFloat(TMEMBER(_fogEnd)); } else { _sceneGeometry = nullptr; - _fogParameters._enabled = false; + _fogEnabled = false; } #endif diff --git a/engines/wintermute/ad/ad_scene.h b/engines/wintermute/ad/ad_scene.h index 3a5163f8438..894cbfea5d0 100644 --- a/engines/wintermute/ad/ad_scene.h +++ b/engines/wintermute/ad/ad_scene.h @@ -67,7 +67,10 @@ public: float _nearPlane; float _farPlane; - FogParameters _fogParameters; + bool _fogEnabled; + uint32 _fogColor; + float _fogStart; + float _fogEnd; #endif bool afterLoad(); diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h index f25db55aa8d..cbeb0e5ff9f 100644 --- a/engines/wintermute/base/base_game.h +++ b/engines/wintermute/base/base_game.h @@ -78,7 +78,7 @@ public: #ifdef ENABLE_WME3D virtual uint32 getAmbientLightColor(); - virtual bool getFogParams(FogParameters &fogParameters); + virtual bool getFogParams(bool *fogEnabled, uint32 *fogColor, float *start, float *end); #endif virtual bool onScriptShutdown(ScScript *script); diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp index 58e7661f054..87adeaa21bb 100644 --- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp +++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d.cpp @@ -505,16 +505,17 @@ bool BaseRenderOpenGL3D::setup3D(Camera3D *camera, bool force) { glLightfv(GL_LIGHT0 + i, GL_SPOT_DIRECTION, _lightDirections[i].getData()); } - FogParameters fogParameters; - _gameRef->getFogParams(fogParameters); + bool fogEnabled; + uint32 fogColor; + float fogStart, fogEnd; - if (fogParameters._enabled) { + _gameRef->getFogParams(&fogEnabled, &fogColor, &fogStart, &fogEnd); + if (fogEnabled) { glEnable(GL_FOG); glFogi(GL_FOG_MODE, GL_LINEAR); - glFogf(GL_FOG_START, fogParameters._start); - glFogf(GL_FOG_END, fogParameters._end); + glFogf(GL_FOG_START, fogStart); + glFogf(GL_FOG_END, fogEnd); - uint32 fogColor = fogParameters._color; GLfloat color[4] = { RGBCOLGetR(fogColor) / 255.0f, RGBCOLGetG(fogColor) / 255.0f, RGBCOLGetB(fogColor) / 255.0f, diff --git a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp index 9e349e85e85..533329911bb 100644 --- a/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp +++ b/engines/wintermute/base/gfx/opengl/base_render_opengl3d_shader.cpp @@ -632,17 +632,18 @@ bool BaseRenderOpenGL3DShader::setup3D(Camera3D *camera, bool force) { _lastViewMatrix = viewMatrix; } - FogParameters fogParameters; + bool fogEnabled; + uint32 fogColor; + float fogStart, fogEnd; - _gameRef->getFogParams(fogParameters); - - if (fogParameters._enabled) { + _gameRef->getFogParams(&fogEnabled, &fogColor, &fogStart, &fogEnd); + if (fogEnabled) { // TODO: Implement fog GLfloat color[4]; - color[0] = RGBCOLGetR(fogParameters._color) / 255.0f; - color[1] = RGBCOLGetG(fogParameters._color) / 255.0f; - color[2] = RGBCOLGetB(fogParameters._color) / 255.0f; - color[3] = RGBCOLGetA(fogParameters._color) / 255.0f; + color[0] = RGBCOLGetR(fogColor) / 255.0f; + color[1] = RGBCOLGetG(fogColor) / 255.0f; + color[2] = RGBCOLGetB(fogColor) / 255.0f; + color[3] = RGBCOLGetA(fogColor) / 255.0f; debug(5, "BaseRenderOpenGL3DShader::setup3D fog not yet implemented! [%f %f %f %f]", color[0], color[1], color[2], color[3]); } else { // TODO: Disable fog in shader diff --git a/engines/wintermute/dctypes.h b/engines/wintermute/dctypes.h index 992a92e04f8..f71a1d23126 100644 --- a/engines/wintermute/dctypes.h +++ b/engines/wintermute/dctypes.h @@ -231,19 +231,6 @@ enum TShadowType { SHADOW_STENCIL = 3 }; -#ifdef ENABLE_WME3D - -struct FogParameters { - FogParameters() : _start(0.0f), _end(0.0f), _color(0x00000000), _enabled(false) {} - - float _start; - float _end; - uint32 _color; - bool _enabled; -}; - -#endif - } // End of namespace Wintermute #endif