⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 animmanager.cpp

📁 吃豆子游戏源码
💻 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 + -