BGE Animations: Adding more functions to BL_ActionManager and KX_GameObject:

BL_ActionManager:
    * IsActionDone(short layer) - Checks to see if the animation on the given layer has finished.

  KX_GameObject:
    * PlayAction(...) - Adds an action to the object's action manager
    * StopAction(short layer) - Remove an action from the object's action manager
    * IsActionDone(short layer) - Check if an action has finished playing
This commit is contained in:
Mitchell Stokes 2011-06-01 05:46:19 +00:00
parent b31385f3bd
commit 54a37ba855
4 changed files with 54 additions and 1 deletions

@ -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; i<MAX_ACTION_LAYERS; ++i)

@ -53,6 +53,7 @@ public:
float playback_speed=1.f);
void StopAction(short layer);
bool IsActionDone(short layer);
void Update(float);
#ifdef WITH_CXX_GUARDEDALLOC
public:

@ -352,6 +352,28 @@ void KX_GameObject::RemoveParent(KX_Scene *scene)
}
}
void KX_GameObject::PlayAction(const char* name,
float start,
float end,
short layer,
float blendin,
short play_mode,
short blend_mode,
float playback_speed)
{
m_actionManager->PlayAction(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;
}

@ -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
*/