|
感觉一个人物就应该是动画和node在一块的,就写了一个sprite封装了一下。
#include "ogre.h"
using namespace Ogre;
class Sprite
{
public:
Sprite (SceneManager *mgr, const Ogre::String &mesh, const Ogre::String &name);
~Sprite ();
void setAniState (const String &state, bool isloop);
void update (Real dtime) { if (ani) ani->addTime (dtime); }
SceneManager *mSceneMgr;
Entity *ent;
SceneNode *node;
AnimationState *ani;
Ogre::String name;
};
Sprite::Sprite (SceneManager *mgr, const Ogre::String &mesh, const Ogre::String &nam)
:mSceneMgr(mgr), ani(0), name(nam)
{
ent = mgr->createEntity (name, mesh);
node = mgr->getRootSceneNode()->createChildSceneNode (name);
node->attachObject (ent);
}
Sprite::~Sprite ()
{
mSceneMgr->destroyEntity (name);
mSceneMgr->destroySceneNode (name);
}
void Sprite::setAniState (const String &state, bool isloop)
{
ani = ent->getAnimationState (state);
ani->setLoop (isloop);
ani->setEnabled (true);
} |
|