mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-20 07:23:51 +00:00
Deleting animations; Empty Functions/Planning
This commit is contained in:
parent
7eee54bcd7
commit
88c427543b
9 changed files with 48 additions and 4 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,6 +22,11 @@ namespace MWRender{
|
|||
out << "000";
|
||||
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){
|
||||
|
|
|
@ -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…
Reference in a new issue