[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