Revision: 36945 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36945 Author: moguri Date: 2011-05-27 08:45:48 +0000 (Fri, 27 May 2011) Log Message: ----------- Moving BL_Action and BL_ActionManager to Ketsji to avoid linking issues with gcc
Modified Paths: -------------- branches/soc-2011-pepper/source/gameengine/Converter/CMakeLists.txt branches/soc-2011-pepper/source/gameengine/Ketsji/CMakeLists.txt branches/soc-2011-pepper/source/gameengine/Ketsji/SConscript Added Paths: ----------- branches/soc-2011-pepper/source/gameengine/Ketsji/BL_Action.cpp branches/soc-2011-pepper/source/gameengine/Ketsji/BL_Action.h branches/soc-2011-pepper/source/gameengine/Ketsji/BL_ActionManager.cpp branches/soc-2011-pepper/source/gameengine/Ketsji/BL_ActionManager.h Removed Paths: ------------- branches/soc-2011-pepper/source/gameengine/Converter/BL_Action.cpp branches/soc-2011-pepper/source/gameengine/Converter/BL_Action.h branches/soc-2011-pepper/source/gameengine/Converter/BL_ActionManager.cpp branches/soc-2011-pepper/source/gameengine/Converter/BL_ActionManager.h Deleted: branches/soc-2011-pepper/source/gameengine/Converter/BL_Action.cpp =================================================================== --- branches/soc-2011-pepper/source/gameengine/Converter/BL_Action.cpp 2011-05-27 07:47:42 UTC (rev 36944) +++ branches/soc-2011-pepper/source/gameengine/Converter/BL_Action.cpp 2011-05-27 08:45:48 UTC (rev 36945) @@ -1,198 +0,0 @@ -/** - * $Id$ - * - * ***** 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. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#include "BL_Action.h" -#include "BL_ArmatureObject.h" -#include "KX_GameObject.h" - -// These three are for getting the action from the logic manager -#include "KX_Scene.h" -#include "KX_PythonInit.h" -#include "SCA_LogicManager.h" - -extern "C" { -#include "BKE_animsys.h" -#include "BKE_action.h" -#include "RNA_access.h" -#include "RNA_define.h" -} - -BL_Action::BL_Action(class KX_GameObject* gameobj, - const char* name, - float start, - float end, - float blendin, - short play_mode, - short blend_mode) -: - m_obj(gameobj), - m_startframe(start), - m_endframe(end), - m_blendin(blendin), - m_playmode(play_mode), - m_endtime(0.f), - m_localtime(start), - m_blendframe(0.f), - m_blendstart(0.f), - m_pose(NULL), - m_blendpose(NULL), - m_done(false) -{ - m_starttime = KX_GetActiveEngine()->GetFrameTime(); - m_action = (bAction*)KX_GetActiveScene()->GetLogicManager()->GetActionByName(name); - - if (!m_action) printf("Failed to load action: %s\n", name); -} - -BL_Action::~BL_Action() -{ - if (m_pose) - game_free_pose(m_pose); - if (m_blendpose) - game_free_pose(m_blendpose); -} - -void BL_Action::SetLocalTime(float curtime) -{ - float dt = (curtime-m_starttime)*KX_KetsjiEngine::GetAnimFrameRate(); - - if (m_endframe < m_startframe) - dt = -dt; - - m_localtime = m_startframe + dt; -} - -void BL_Action::Update(float curtime) -{ - curtime -= KX_KetsjiEngine::GetSuspendedDelta(); - - SetLocalTime(curtime); - - // Handle wrap around - if (m_localtime < m_startframe || m_localtime > m_endframe) - { - switch(m_playmode) - { - case ACT_MODE_PLAY: - // Clamp - m_localtime = m_endframe; - m_done = true; - break; - case ACT_MODE_LOOP: - // Put the time back to the beginning - m_localtime = m_startframe; - m_starttime = curtime; - break; - case ACT_MODE_PING_PONG: - // Swap the start and end frames - float temp = m_startframe; - m_startframe = m_endframe; - m_endframe = temp; - - m_starttime = curtime; - - break; - } - } - - if (m_obj->GetGameObjectType() == SCA_IObject::OBJ_ARMATURE) - { - bPose* prev_pose = NULL; - BL_ArmatureObject *obj = (BL_ArmatureObject*)m_obj; - obj->GetPose(&m_pose); - - // Save the old pose if we need to do some layer blending - if (m_blendmode != ACT_BLEND_NONE) - obj->GetMRDPose(&prev_pose); - - // Extract the pose from the action - { - struct PointerRNA id_ptr; - Object *arm = obj->GetArmatureObject(); - bPose *temp = arm->pose; - - arm->pose = m_pose; - RNA_id_pointer_create((ID*)arm, &id_ptr); - animsys_evaluate_action(&id_ptr, m_action, NULL, m_localtime); - - arm->pose = temp; - } - - // Handle blending between layers - switch(m_blendmode) - { - case ACT_BLEND_MIX: - game_blend_poses(m_pose, prev_pose, 0.5f); - break; - case ACT_BLEND_NONE: - default: - break; - } - - // Handle blending between actions - if (m_blendin && m_blendframe<m_blendin) - { - if (!m_blendpose) - { - obj->GetMRDPose(&m_blendpose); - m_blendstart = curtime; - } - - // Calculate weight - float weight = 1.f - (m_blendframe/m_blendin); - game_blend_poses(m_pose, m_blendpose, weight); - - // Bump the blend frame - m_blendframe = (curtime - m_blendstart)*KX_KetsjiEngine::GetAnimFrameRate(); - - // Clamp - if (m_blendframe>m_blendin) - m_blendframe = m_blendin; - } - else - { - if (m_blendpose) - { - game_free_pose(m_blendpose); - m_blendpose = NULL; - } - } - - obj->SetPose(m_pose); - - obj->SetActiveAction(NULL, 0, curtime); - - if (prev_pose) - game_free_pose(prev_pose); - } - else - { - printf("Only armature actions are currently supported\n"); - } -} Deleted: branches/soc-2011-pepper/source/gameengine/Converter/BL_Action.h =================================================================== --- branches/soc-2011-pepper/source/gameengine/Converter/BL_Action.h 2011-05-27 07:47:42 UTC (rev 36944) +++ branches/soc-2011-pepper/source/gameengine/Converter/BL_Action.h 2011-05-27 08:45:48 UTC (rev 36945) @@ -1,98 +0,0 @@ -/** - * $Id$ - * - * ***** 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. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL LICENSE BLOCK ***** - */ -#ifndef __BL_ACTION -#define __BL_ACTION - -#ifdef WITH_CXX_GUARDEDALLOC -#include "MEM_guardedalloc.h" -#endif - - -class BL_Action -{ -private: - struct bAction* m_action; - struct bPose* m_pose; - struct bPose* m_blendpose; - struct PointerRNA *m_ptrrna; - class KX_GameObject* m_obj; - - float m_startframe; - float m_endframe; - float m_starttime; - float m_endtime; - float m_localtime; - - float m_blendin; - float m_blendframe; - float m_blendstart; - - short m_playmode; - short m_blendmode; - - bool m_done; - - void SetLocalTime(float curtime); -public: - BL_Action(class KX_GameObject* gameobj, - const char* name, - float start, - float end, - float blendin, - short play_mode, - short blend_mode); - ~BL_Action(); - - bool IsDone() {return m_done;} - void Update(float curtime); - - enum - { - ACT_MODE_PLAY = 0, - ACT_MODE_LOOP, - ACT_MODE_PING_PONG, - ACT_MODE_MAX, - }; - - enum - { - ACT_BLEND_NONE = 0, - ACT_BLEND_MIX, - ACT_BLEND_MAX, - }; - -#ifdef WITH_CXX_GUARDEDALLOC -public: - void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:BL_Action"); } - void operator delete( void *mem ) { MEM_freeN(mem); } -#endif -}; - -#endif //BL_ACTION - Deleted: branches/soc-2011-pepper/source/gameengine/Converter/BL_ActionManager.cpp =================================================================== --- branches/soc-2011-pepper/source/gameengine/Converter/BL_ActionManager.cpp 2011-05-27 07:47:42 UTC (rev 36944) +++ branches/soc-2011-pepper/source/gameengine/Converter/BL_ActionManager.cpp 2011-05-27 08:45:48 UTC (rev 36945) @@ -1,80 +0,0 @@ -/** - * $Id$ - * - * ***** 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. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -#include "BL_ActionManager.h" - -BL_ActionManager::BL_ActionManager() -{ - for (int i=0; i<MAX_ACTION_LAYERS; ++i) - m_layers[i] = 0; -} - -BL_ActionManager::~BL_ActionManager() -{ - for (int i=0; i<MAX_ACTION_LAYERS; ++i) - if (m_layers[i]) - StopAction(i); -} - -void BL_ActionManager::PlayAction(class KX_GameObject* gameobj, - const char* name, - float start, - float end, - short layer, - float blendin, - short play_mode, - short blend_mode) -{ - // Remove a currently running action on this layer if there is one - if (m_layers[layer]) - StopAction(layer); - - // Create a new action - m_layers[layer] = new BL_Action(gameobj, name, start, end, blendin, play_mode, blend_mode); -} - -void BL_ActionManager::StopAction(short layer) -{ - delete m_layers[layer]; - m_layers[layer] = 0; -} - -void BL_ActionManager::Update(float curtime) -{ - for (int i=0; i<MAX_ACTION_LAYERS; ++i) - { - if (m_layers[i]) - { - if (m_layers[i]->IsDone()) - StopAction(i); - else - m_layers[i]->Update(curtime); - } - } -} Deleted: branches/soc-2011-pepper/source/gameengine/Converter/BL_ActionManager.h =================================================================== --- branches/soc-2011-pepper/source/gameengine/Converter/BL_ActionManager.h 2011-05-27 07:47:42 UTC (rev 36944) +++ branches/soc-2011-pepper/source/gameengine/Converter/BL_ActionManager.h 2011-05-27 08:45:48 UTC (rev 36945) @@ -1,64 +0,0 @@ -/** - * $Id$ - * - * ***** BEGIN GPL LICENSE BLOCK ***** - * @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs