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;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to