Deleting animations; Empty Functions/Planning

actorid
Jason Hooks 13 years ago
parent 7eee54bcd7
commit 88c427543b

@ -71,6 +71,7 @@ void Actors::insertCreature (const MWWorld::Ptr& ptr){
bool Actors::deleteObject (const MWWorld::Ptr& ptr)
{
delete mAllActors[ptr];
mAllActors.erase(ptr);
if (Ogre::SceneNode *base = ptr.getRefData().getBaseNode())
{
@ -105,6 +106,7 @@ void Actors::removeCell(MWWorld::Ptr::CellStore* store){
for(std::map<MWWorld::Ptr, Animation*>::iterator iter = mAllActors.begin(); iter != mAllActors.end(); iter++)
{
if(iter->first.getCell() == store){
delete iter->second;
mAllActors.erase(iter);
}
}

@ -23,6 +23,11 @@ namespace MWRender{
out << counter;
return out.str();
}
void Animation::startScript(std::string groupname, int mode, int loops){
//If groupname is recognized set animate to true
//Set the start time and stop time
//How many times to loop
}
void Animation::handleShapes(std::vector<Nif::NiTriShapeCopy>* allshapes, Ogre::Entity* creaturemodel, Ogre::SkeletonInstance *skel){
shapeNumber = 0;

@ -23,6 +23,7 @@ class Animation{
float startTime;
float stopTime;
bool loop;
bool animate;
//Represents a rotation index for each bone
std::vector<int>rindexI;
//Represents a translation index for each bone
@ -43,8 +44,11 @@ class Animation{
void handleAnimationTransforms();
bool timeIndex( float time, std::vector<float> times, int & i, int & j, float & x );
std::string getUniqueID(std::string mesh);
public:
Animation(MWWorld::Environment& _env, OEngine::Render::OgreRenderer& _rend): mRend(_rend), mEnvironment(_env){};
Animation(MWWorld::Environment& _env, OEngine::Render::OgreRenderer& _rend): mRend(_rend), mEnvironment(_env), loop(false), animate(false){};
virtual void runAnimation(float timepassed) = 0;
void startScript(std::string groupname, int mode, int loops);
~Animation();

@ -35,9 +35,21 @@ CreatureAnimation::CreatureAnimation(const MWWorld::Ptr& ptr, MWWorld::Environme
skel = base->getSkeleton();
stopTime = transformations->begin()->getStopTime();
//a.startTime = NIFLoader::getSingletonPtr()->getTime(item.smodel, "IdleSneak: Start");
startTime = transformations->end()->getStartTime();
startTime = transformations->begin()->getStartTime();
shapes = (NIFLoader::getSingletonPtr())->getShapes(meshZero);
}
insert->attachObject(base);
}
}
void CreatureAnimation::runAnimation(float timepassed){
if(animate){
//Add the amount of time passed to time
//Handle the animation transforms dependent on time
//Handle the shapes dependent on animation transforms
}
}
}

@ -14,10 +14,13 @@
namespace MWRender{
class CreatureAnimation: public Animation{
std::vector<Nif::NiTriShapeCopy> shapes; //All the NiTriShapeData for this creature
std::vector<Nif::NiTriShapeCopy>* shapes; //All the NiTriShapeData for this creature
public:
~CreatureAnimation();
CreatureAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env, OEngine::Render::OgreRenderer& _rend);
virtual void runAnimation(float timepassed);
};
}
#endif

@ -9,6 +9,7 @@ NpcAnimation::~NpcAnimation(){
}
NpcAnimation::NpcAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env,OEngine::Render::OgreRenderer& _rend): Animation(_env,_rend){
ESMS::LiveCellRef<ESM::NPC, MWWorld::RefData> *ref =
ptr.get<ESM::NPC>();
@ -69,7 +70,7 @@ NpcAnimation::NpcAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env,O
skel = base->getSkeleton();
stopTime = transformations->begin()->getStopTime();
//a.startTime = NIFLoader::getSingletonPtr()->getTime(item.smodel, "IdleSneak: Start");
startTime = transformations->end()->getStartTime();
startTime = transformations->begin()->getStartTime();
}
insert->attachObject(base);
@ -217,4 +218,14 @@ void NpcAnimation::insertFreePart(const std::string &mesh, const std::string suf
}
void NpcAnimation::runAnimation(float timepassed){
if(animate){
//Add the amount of time passed to time
//Handle the animation transforms dependent on time
//Handle the shapes dependent on animation transforms
}
}
}

@ -23,6 +23,8 @@ class NpcAnimation: public Animation{
~NpcAnimation();
Ogre::Entity* insertBoundedPart(const std::string &mesh, std::string bonename);
void insertFreePart(const std::string &mesh, const std::string suffix, Ogre::SceneNode* insert);
virtual void runAnimation(float timepassed);
};
}
#endif

@ -240,5 +240,8 @@ void RenderingManager::skipAnimation (const MWWorld::Ptr& ptr)
{
std::cout<<"skip animation"<<std::endl;
}
void RenderingManager::addTime(float timepassed){
//Notify each animation that time has passed
}
}

@ -105,6 +105,8 @@ class RenderingManager: private RenderingInterface {
///< Skip the animation for the given MW-reference for one frame. Calls to this function for
/// references that are currently not in the rendered scene should be ignored.
void addTime(float timepassed);
private:
void setAmbientMode();

Loading…
Cancel
Save