Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErwin Coumans <blender@erwincoumans.com>2006-05-23 01:03:43 +0400
committerErwin Coumans <blender@erwincoumans.com>2006-05-23 01:03:43 +0400
commitab71e2a9b55e0982d1134792d10af55464c7ac9e (patch)
tree4a53791a67d3234360107a33c5365d4de4844bb7 /source/gameengine/Ketsji/KX_Scene.cpp
parent677cf7f1333c634a52227a15d6dcb3351b39febc (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.cpp22
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);
+
+ }
+
+
}