diff options
Diffstat (limited to 'source/gameengine/Ketsji/BL_ActionManager.cpp')
-rw-r--r-- | source/gameengine/Ketsji/BL_ActionManager.cpp | 164 |
1 files changed, 0 insertions, 164 deletions
diff --git a/source/gameengine/Ketsji/BL_ActionManager.cpp b/source/gameengine/Ketsji/BL_ActionManager.cpp deleted file mode 100644 index 35f605f1a5f..00000000000 --- a/source/gameengine/Ketsji/BL_ActionManager.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/* - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * Contributor(s): Mitchell Stokes. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -/** \file BL_ActionManager.cpp - * \ingroup ketsji - */ - -#include "BL_Action.h" -#include "BL_ActionManager.h" -#include "DNA_ID.h" - -#define IS_TAGGED(_id) ((_id) && (((ID *)_id)->tag & LIB_TAG_DOIT)) - -BL_ActionManager::BL_ActionManager(class KX_GameObject *obj): - m_obj(obj), - m_prevUpdate(-1.0f) -{ -} - -BL_ActionManager::~BL_ActionManager() -{ - BL_ActionMap::iterator it; - - for (it = m_layers.begin(); it != m_layers.end(); it++) - delete it->second; - - m_layers.clear(); -} - -BL_Action *BL_ActionManager::GetAction(short layer) -{ - BL_ActionMap::iterator it = m_layers.find(layer); - - return (it != m_layers.end()) ? it->second : 0; -} - -float BL_ActionManager::GetActionFrame(short layer) -{ - BL_Action *action = GetAction(layer); - - return action ? action->GetFrame() : 0.f; -} - -const char *BL_ActionManager::GetActionName(short layer) -{ - BL_Action *action = GetAction(layer); - return action ? action->GetName() : ""; -} - -void BL_ActionManager::SetActionFrame(short layer, float frame) -{ - BL_Action *action = GetAction(layer); - - if (action) action->SetFrame(frame); -} - -struct bAction *BL_ActionManager::GetCurrentAction(short layer) -{ - BL_Action *action = GetAction(layer); - - return action ? action->GetAction() : 0; -} - -void BL_ActionManager::SetPlayMode(short layer, short mode) -{ - BL_Action *action = GetAction(layer); - - if (action) action->SetPlayMode(mode); -} - -void BL_ActionManager::SetTimes(short layer, float start, float end) -{ - BL_Action *action = GetAction(layer); - - if (action) action->SetTimes(start, end); -} - -bool BL_ActionManager::PlayAction(const char* name, - float start, - float end, - short layer, - short priority, - float blendin, - short play_mode, - float layer_weight, - short ipo_flags, - float playback_speed, - short blend_mode) -{ - // Only this method will create layer if non-existent - BL_Action *action = GetAction(layer); - if (!action) { - action = new BL_Action(m_obj); - m_layers[layer] = action; - } - - // Disable layer blending on the first layer - if (layer == 0) layer_weight = -1.f; - - return action->Play(name, start, end, priority, blendin, play_mode, layer_weight, ipo_flags, playback_speed, blend_mode); -} - -void BL_ActionManager::StopAction(short layer) -{ - BL_Action *action = GetAction(layer); - - if (action) { - m_layers.erase(layer); - delete action; - } -} - -void BL_ActionManager::RemoveTaggedActions() -{ - for (BL_ActionMap::iterator it = m_layers.begin(); it != m_layers.end();) { - if (IS_TAGGED(it->second->GetAction())) { - delete it->second; - m_layers.erase(it++); - } - else - ++it; - } -} - -bool BL_ActionManager::IsActionDone(short layer) -{ - BL_Action *action = GetAction(layer); - - return action ? action->IsDone() : true; -} - -void BL_ActionManager::Update(float curtime) -{ - if (m_prevUpdate == curtime) - return; - m_prevUpdate = curtime; - - BL_ActionMap::iterator it; - for (it = m_layers.begin(); it != m_layers.end(); ++it) - { - if (!it->second->IsDone()) { - it->second->Update(curtime); - } - } -} |