diff options
author | HG1 <HG1_public@gmx.net> | 2014-07-12 02:18:43 +0400 |
---|---|---|
committer | Mitchell Stokes <mogurijin@gmail.com> | 2014-07-12 03:00:14 +0400 |
commit | 984d6c8677a365cf47cc6ad6c89c93b04877a948 (patch) | |
tree | 0433fe2f7f5646d4afddca0c769c42c6cbfca56b /source/gameengine/GameLogic | |
parent | 93278165937273fd0c14eb54deb1c4c25ebb1296 (diff) |
BGE debug API and actuator
This patch adds some new debug methods to the KX_GameObject for manually adding the debug list and bge.render for controlling the debug visualization.
It also adds a new debug actuator, which allows to control the same functions.
This patch is a updated version of T33701.
Thread on Blenderartists:
http://blenderartists.org/forum/showthread.php?264745-Debug-proerties-for-added-objects-patch&p=2256018&viewfull=1#post2256018
Reviewers: moguri
Reviewed By: moguri
Differential Revision: https://developer.blender.org/D635
Diffstat (limited to 'source/gameengine/GameLogic')
-rw-r--r-- | source/gameengine/GameLogic/SCA_IScene.cpp | 44 | ||||
-rw-r--r-- | source/gameengine/GameLogic/SCA_IScene.h | 6 |
2 files changed, 48 insertions, 2 deletions
diff --git a/source/gameengine/GameLogic/SCA_IScene.cpp b/source/gameengine/GameLogic/SCA_IScene.cpp index c98c86639d3..3ca4b6607b3 100644 --- a/source/gameengine/GameLogic/SCA_IScene.cpp +++ b/source/gameengine/GameLogic/SCA_IScene.cpp @@ -70,6 +70,32 @@ std::vector<SCA_DebugProp*>& SCA_IScene::GetDebugProperties() } +bool SCA_IScene::PropertyInDebugList( class CValue *gameobj, const STR_String &name ) +{ + for (std::vector<SCA_DebugProp*>::iterator it = m_debugList.begin(); + !(it==m_debugList.end());++it) { + STR_String debugname = (*it)->m_name; + CValue *debugobj = (*it)->m_obj; + + if (debugobj == gameobj && debugname == name) + return true; + } + return false; +} + + +bool SCA_IScene::ObjectInDebugList( class CValue *gameobj ) +{ + for (std::vector<SCA_DebugProp*>::iterator it = m_debugList.begin(); + !(it==m_debugList.end());++it) { + CValue* debugobj = (*it)->m_obj; + + if (debugobj == gameobj) + return true; + } + return false; +} + void SCA_IScene::AddDebugProperty(class CValue* debugprop, const STR_String &name) @@ -84,6 +110,24 @@ void SCA_IScene::AddDebugProperty(class CValue* debugprop, } +void SCA_IScene::RemoveDebugProperty(class CValue *gameobj, + const STR_String &name) +{ + vector<SCA_DebugProp*>::iterator it = m_debugList.begin(); + while(it != m_debugList.end()) { + STR_String debugname = (*it)->m_name; + CValue *debugobj = (*it)->m_obj; + + if (debugobj == gameobj && debugname == name) { + delete (*it); + m_debugList.erase(it); + break; + } + ++it; + } +} + + void SCA_IScene::RemoveObjectDebugProperties(class CValue* gameobj) { vector<SCA_DebugProp*>::iterator it = m_debugList.begin(); diff --git a/source/gameengine/GameLogic/SCA_IScene.h b/source/gameengine/GameLogic/SCA_IScene.h index e2e1edd4354..b76b5636b13 100644 --- a/source/gameengine/GameLogic/SCA_IScene.h +++ b/source/gameengine/GameLogic/SCA_IScene.h @@ -67,9 +67,11 @@ public: virtual void ReplaceMesh(class CValue* gameobj, void* meshobj, bool use_gfx, bool use_phys)=0; std::vector<SCA_DebugProp*>& GetDebugProperties(); + bool PropertyInDebugList(class CValue *gameobj, const STR_String &name); + bool ObjectInDebugList(class CValue *gameobj); void RemoveAllDebugProperties(); - void AddDebugProperty(class CValue* debugprop, - const STR_String &name); + void AddDebugProperty(class CValue* debugprop, const STR_String &name); + void RemoveDebugProperty(class CValue *gameobj, const STR_String &name); void RemoveObjectDebugProperties(class CValue* gameobj); virtual void Update2DFilter(std::vector<STR_String>& propNames, void* gameObj, |