[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37393] branches/soc-2011-pepper/source/ gameengine/Ketsji: BGE Animations: KX_GameObjects now only instantiate a BL_ActionManger if they need one.

Mitchell Stokes mogurijin at gmail.com
Sat Jun 11 02:22:35 CEST 2011


Revision: 37393
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37393
Author:   moguri
Date:     2011-06-11 00:22:35 +0000 (Sat, 11 Jun 2011)
Log Message:
-----------
BGE Animations: KX_GameObjects now only instantiate a BL_ActionManger if they need one.

Modified Paths:
--------------
    branches/soc-2011-pepper/source/gameengine/Ketsji/KX_GameObject.cpp
    branches/soc-2011-pepper/source/gameengine/Ketsji/KX_GameObject.h

Modified: branches/soc-2011-pepper/source/gameengine/Ketsji/KX_GameObject.cpp
===================================================================
--- branches/soc-2011-pepper/source/gameengine/Ketsji/KX_GameObject.cpp	2011-06-11 00:22:10 UTC (rev 37392)
+++ branches/soc-2011-pepper/source/gameengine/Ketsji/KX_GameObject.cpp	2011-06-11 00:22:35 UTC (rev 37393)
@@ -109,7 +109,8 @@
 	m_pGraphicController(NULL),
 	m_xray(false),
 	m_pHitObject(NULL),
-	m_isDeformable(false)
+	m_isDeformable(false),
+	m_actionManager(NULL)
 #ifdef WITH_PYTHON
 	, m_attr_dict(NULL)
 #endif
@@ -123,8 +124,6 @@
 	KX_NormalParentRelation * parent_relation = 
 		KX_NormalParentRelation::New();
 	m_pSGNode->SetParentRelation(parent_relation);
-
-	m_actionManager = new BL_ActionManager(this);
 };
 
 
@@ -352,6 +351,15 @@
 	}
 }
 
+BL_ActionManager* KX_GameObject::GetActionManager()
+{
+	// We only want to create an action manager if we need it
+	if (!m_actionManager)
+		m_actionManager = new BL_ActionManager(this);
+
+	return m_actionManager;
+}
+
 void KX_GameObject::PlayAction(const char* name,
 								float start,
 								float end,
@@ -361,32 +369,32 @@
 								short blend_mode,
 								float playback_speed)
 {
-	m_actionManager->PlayAction(name, start, end, layer, blendin, play_mode, blend_mode, playback_speed);
+	GetActionManager()->PlayAction(name, start, end, layer, blendin, play_mode, blend_mode, playback_speed);
 }
 
 void KX_GameObject::StopAction(short layer)
 {
-	m_actionManager->StopAction(layer);
+	GetActionManager()->StopAction(layer);
 }
 
 bool KX_GameObject::IsActionDone(short layer)
 {
-	return m_actionManager->IsActionDone(layer);
+	return GetActionManager()->IsActionDone(layer);
 }
 
 void KX_GameObject::UpdateActionManager(float curtime)
 {
-	m_actionManager->Update(curtime);
+	GetActionManager()->Update(curtime);
 }
 
 float KX_GameObject::GetActionFrame(short layer)
 {
-	return m_actionManager->GetActionFrame(layer);
+	return GetActionManager()->GetActionFrame(layer);
 }
 
 void KX_GameObject::SetActionFrame(short layer, float frame)
 {
-	m_actionManager->SetActionFrame(layer, frame);
+	GetActionManager()->SetActionFrame(layer, frame);
 }
 
 void KX_GameObject::ProcessReplica()
@@ -398,7 +406,8 @@
 	m_pSGNode = NULL;
 	m_pClient_info = new KX_ClientObjectInfo(*m_pClient_info);
 	m_pClient_info->m_gameobject = this;
-	m_actionManager = new BL_ActionManager(this);
+	if (m_actionManager)
+		m_actionManager = new BL_ActionManager(this);
 	m_state = 0;
 
 #ifdef WITH_PYTHON

Modified: branches/soc-2011-pepper/source/gameengine/Ketsji/KX_GameObject.h
===================================================================
--- branches/soc-2011-pepper/source/gameengine/Ketsji/KX_GameObject.h	2011-06-11 00:22:10 UTC (rev 37392)
+++ branches/soc-2011-pepper/source/gameengine/Ketsji/KX_GameObject.h	2011-06-11 00:22:35 UTC (rev 37393)
@@ -116,6 +116,8 @@
 
 	// The action manager is used to play/stop/update actions
 	BL_ActionManager*				m_actionManager;
+
+	BL_ActionManager* GetActionManager();
 	
 public:
 	bool								m_isDeformable;




More information about the Bf-blender-cvs mailing list