diff --git a/source/gameengine/Ketsji/BL_ActionManager.cpp b/source/gameengine/Ketsji/BL_ActionManager.cpp index a4c8a7fe93f..ddbf287e501 100644 --- a/source/gameengine/Ketsji/BL_ActionManager.cpp +++ b/source/gameengine/Ketsji/BL_ActionManager.cpp @@ -66,6 +66,14 @@ void BL_ActionManager::StopAction(short layer) m_layers[layer] = 0; } +bool BL_ActionManager::IsActionDone(short layer) +{ + if (m_layers[layer]) + return m_layers[layer]->IsDone(); + + return true; +} + void BL_ActionManager::Update(float curtime) { for (int i=0; iPlayAction(this, name, start, end, layer, blendin, play_mode, blend_mode, playback_speed); +} + +void KX_GameObject::StopAction(short layer) +{ + m_actionManager->StopAction(layer); +} + +bool KX_GameObject::IsActionDone(short layer) +{ + return m_actionManager->IsActionDone(layer); +} + void KX_GameObject::UpdateActionManager(float curtime) { m_actionManager->Update(curtime); @@ -3024,7 +3046,7 @@ KX_PYMETHODDEF_DOC(KX_GameObject, playAction, blend_mode = BL_Action::ACT_BLEND_NONE; } - m_actionManager->PlayAction(this, name, start, end, layer, blendin, play_mode, blend_mode, speed); + PlayAction(name, start, end, layer, blendin, play_mode, blend_mode, speed); Py_RETURN_NONE; } diff --git a/source/gameengine/Ketsji/KX_GameObject.h b/source/gameengine/Ketsji/KX_GameObject.h index a5ca5f872d5..75c71833ce1 100644 --- a/source/gameengine/Ketsji/KX_GameObject.h +++ b/source/gameengine/Ketsji/KX_GameObject.h @@ -202,6 +202,28 @@ public: */ void RemoveParent(KX_Scene *scene); + /** + * Adds an action to the object's action manager + */ + void PlayAction(const char* name, + float start, + float end, + short layer=0, + float blendin=0.f, + short play_mode=0, + short blend_mode=0, + float playback_speed=1.f); + + /** + * Remove an action from the object's action manager + */ + void StopAction(short layer); + + /** + * Check if an action has finished playing + */ + bool IsActionDone(short layer); + /** * Kick the object's action manager */