diff options
author | Erwin Coumans <blender@erwincoumans.com> | 2006-05-23 01:03:43 +0400 |
---|---|---|
committer | Erwin Coumans <blender@erwincoumans.com> | 2006-05-23 01:03:43 +0400 |
commit | ab71e2a9b55e0982d1134792d10af55464c7ac9e (patch) | |
tree | 4a53791a67d3234360107a33c5365d4de4844bb7 /source/gameengine/Ketsji/KX_Scene.cpp | |
parent | 677cf7f1333c634a52227a15d6dcb3351b39febc (diff) |
-added basic support for GameActuator 'load game', relative paths were broken, just load file into memory and load blend from memory.
-near sensor support
- python binding for PhysicsConstraints.setNumTimeSubSteps (dividing the physics timestep to tradeoff quality for performance)
Diffstat (limited to 'source/gameengine/Ketsji/KX_Scene.cpp')
-rw-r--r-- | source/gameengine/Ketsji/KX_Scene.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp index 1706937f8df..a5bbfa41e3e 100644 --- a/source/gameengine/Ketsji/KX_Scene.cpp +++ b/source/gameengine/Ketsji/KX_Scene.cpp @@ -125,6 +125,7 @@ KX_Scene::KX_Scene(class SCA_IInputDevice* keyboarddevice, m_parentlist = new CListValue(); m_lightlist= new CListValue(); m_euthanasyobjects = new CListValue(); + m_delayReleaseObjects = new CListValue(); m_logicmgr = new SCA_LogicManager(); @@ -193,6 +194,8 @@ KX_Scene::~KX_Scene() if (m_euthanasyobjects) m_euthanasyobjects->Release(); + if (m_delayReleaseObjects) + m_delayReleaseObjects->Release(); if (m_logicmgr) delete m_logicmgr; @@ -654,8 +657,13 @@ void KX_Scene::RemoveObject(class CValue* gameobj) // recursively destruct node->Destruct(); } + newobj->SetSGNode(0); } +void KX_Scene::DelayedReleaseObject(CValue* gameobj) +{ + m_delayReleaseObjects->Add(gameobj->AddRef()); +} void KX_Scene::DelayedRemoveObject(class CValue* gameobj) @@ -1087,12 +1095,22 @@ void KX_Scene::LogicEndFrame() { m_logicmgr->EndFrame(); int numobj = m_euthanasyobjects->GetCount(); - - for (int i = numobj - 1; i >= 0; i--) + int i; + for (i = numobj - 1; i >= 0; i--) { KX_GameObject* gameobj = (KX_GameObject*)m_euthanasyobjects->GetValue(i); this->RemoveObject(gameobj); } + + numobj= m_delayReleaseObjects->GetCount(); + for (i = numobj-1;i>=0;i--) + { + KX_GameObject* gameobj = (KX_GameObject*)m_delayReleaseObjects->GetValue(i); + m_delayReleaseObjects->RemoveValue(gameobj); + + } + + } |