diff options
author | Mitchell Stokes <mogurijin@gmail.com> | 2013-01-01 01:32:46 +0400 |
---|---|---|
committer | Mitchell Stokes <mogurijin@gmail.com> | 2013-01-01 01:32:46 +0400 |
commit | d0981c279b9705e076045c7af7faf6e90937cd96 (patch) | |
tree | 6dc9c534e5c83bd9f7fecf7b2444f74b2bd0d243 /source/gameengine | |
parent | 2787c78175eb7f12e48afe65098779444ff83720 (diff) |
BGE: Fixing a crash that occurred when LibLoading a scene with a 2D Filter Actuator. The actuator was still referencing the old scene.
Diffstat (limited to 'source/gameengine')
-rw-r--r-- | source/gameengine/GameLogic/SCA_2DFilterActuator.cpp | 5 | ||||
-rw-r--r-- | source/gameengine/GameLogic/SCA_2DFilterActuator.h | 2 | ||||
-rw-r--r-- | source/gameengine/Ketsji/KX_Scene.cpp | 6 |
3 files changed, 13 insertions, 0 deletions
diff --git a/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp b/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp index 5ad5aedbd39..6a87d3ccb98 100644 --- a/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp +++ b/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp @@ -97,6 +97,11 @@ bool SCA_2DFilterActuator::Update() } +void SCA_2DFilterActuator::SetScene(SCA_IScene *scene) +{ + m_scene = scene; +} + void SCA_2DFilterActuator::SetShaderText(const char *text) { m_shaderText = text; diff --git a/source/gameengine/GameLogic/SCA_2DFilterActuator.h b/source/gameengine/GameLogic/SCA_2DFilterActuator.h index a754d950859..4635a8ad9f8 100644 --- a/source/gameengine/GameLogic/SCA_2DFilterActuator.h +++ b/source/gameengine/GameLogic/SCA_2DFilterActuator.h @@ -64,6 +64,8 @@ public: virtual ~SCA_2DFilterActuator(); virtual bool Update(); + void SetScene(SCA_IScene *scene); + virtual CValue* GetReplica(); }; #endif diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp index 9483b864d52..55c9ff5307f 100644 --- a/source/gameengine/Ketsji/KX_Scene.cpp +++ b/source/gameengine/Ketsji/KX_Scene.cpp @@ -47,6 +47,7 @@ //#include "SCA_AlwaysEventManager.h" //#include "SCA_RandomEventManager.h" //#include "KX_RayEventManager.h" +#include "SCA_2DFilterActuator.h" #include "KX_TouchEventManager.h" #include "SCA_KeyboardManager.h" #include "SCA_MouseManager.h" @@ -1781,6 +1782,11 @@ static void MergeScene_LogicBrick(SCA_ILogicBrick* brick, KX_Scene *to) if (sensor) { sensor->Replace_EventManager(logicmgr); } + + SCA_2DFilterActuator *filter_actuator = dynamic_cast<class SCA_2DFilterActuator*>(brick); + if (filter_actuator) { + filter_actuator->SetScene(to); + } } #ifdef USE_BULLET |