📄 animmanager.cpp
字号:
/**
* AnimManager , manages the animation in Irrlicht
*
* Author : Kevin Lynx
* History :
* 2007.7.31 : First version
*/
#include "stdafx.h"
#include "AnimManager.h"
AnimManager::AnimManager( IAnimatedMeshSceneNode *node )
{
mNode = node;
IAnimatedMesh *mesh = mNode->getMesh();
mFrameCount = mesh->getFrameCount();
mCurrentState = 0;
}
AnimManager::~AnimManager()
{
release();
}
bool AnimManager::addState( int state, int begin , int end, float fps, bool bloop )
{
if( begin < 0 || end >= mFrameCount )
{
return false;
}
AnimState *animState = new AnimState( begin, end, fps, bloop );
mAnimStates.insert( std::make_pair( state, animState ) );
return true;
}
void AnimManager::release()
{
for( tAnimStates::iterator it = mAnimStates.begin();
it != mAnimStates.end();
++ it )
{
delete (it->second);
}
mAnimStates.clear();
}
bool AnimManager::setCurrentState( int state )
{
tAnimStates::iterator it = mAnimStates.find( state );
if( it == mAnimStates.end() )
{
return false;
}
AnimState *animState = it->second;
//apply the properties
mNode->setFrameLoop( animState->mBeginFrame, animState->mEndFrame );
mNode->setLoopMode( animState->mLoop );
mNode->setAnimationSpeed( animState->mFPS );
mCurrentState = state;
return true;
}
int AnimManager::getCurrentState()
{
return mCurrentState;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -