From 509009e5c16b41d389378abd0655d26df85972db Mon Sep 17 00:00:00 2001 From: Jason Hooks Date: Sun, 11 Dec 2011 23:42:39 -0500 Subject: [PATCH] Putting the actors in a list --- apps/openmw/mwrender/actors.cpp | 8 +++++--- apps/openmw/mwrender/actors.hpp | 2 ++ apps/openmw/mwrender/animation.cpp | 7 +++++++ apps/openmw/mwrender/animation.hpp | 1 + apps/openmw/mwrender/creatureanimation.cpp | 4 ++++ apps/openmw/mwrender/creatureanimation.hpp | 1 + apps/openmw/mwrender/npcanimation.cpp | 5 +++-- apps/openmw/mwrender/npcanimation.hpp | 1 + 8 files changed, 24 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwrender/actors.cpp b/apps/openmw/mwrender/actors.cpp index 2f605dd731..f2fa597868 100644 --- a/apps/openmw/mwrender/actors.cpp +++ b/apps/openmw/mwrender/actors.cpp @@ -13,7 +13,8 @@ void Actors::setMwRoot(Ogre::SceneNode* root){ } void Actors::insertNPC(const MWWorld::Ptr& ptr){ insertBegin(ptr, true, true); - MWRender::NpcAnimation(ptr, mEnvironment, mRend); + MWRender::Animation anim = MWRender::NpcAnimation(ptr, mEnvironment, mRend); + mAllActors.push_back(anim); } @@ -57,8 +58,8 @@ void Actors::insertBegin (const MWWorld::Ptr& ptr, bool enabled, bool static_){ } void Actors::insertCreature (const MWWorld::Ptr& ptr){ insertBegin(ptr, true, true); - - MWRender::CreatureAnimation(ptr, mEnvironment, mRend); + MWRender::Animation anim = MWRender::CreatureAnimation(ptr, mEnvironment, mRend); + mAllActors.push_back(anim); } bool Actors::deleteObject (const MWWorld::Ptr& ptr) @@ -92,4 +93,5 @@ void Actors::removeCell(MWWorld::Ptr::CellStore* store){ mRend.getScene()->destroySceneNode(base); base = 0; } + } \ No newline at end of file diff --git a/apps/openmw/mwrender/actors.hpp b/apps/openmw/mwrender/actors.hpp index 1fe0c2e348..82e4de6ad0 100644 --- a/apps/openmw/mwrender/actors.hpp +++ b/apps/openmw/mwrender/actors.hpp @@ -3,6 +3,7 @@ #include "components/esm_store/cell_store.hpp" #include +#include @@ -22,6 +23,7 @@ namespace MWRender{ std::map mCellSceneNodes; Ogre::SceneNode* mMwRoot; MWWorld::Environment& mEnvironment; + std::list mAllActors; diff --git a/apps/openmw/mwrender/animation.cpp b/apps/openmw/mwrender/animation.cpp index e69de29bb2..067fb8f2a6 100644 --- a/apps/openmw/mwrender/animation.cpp +++ b/apps/openmw/mwrender/animation.cpp @@ -0,0 +1,7 @@ +#include "animation.hpp" + +namespace MWRender{ + Animation::~Animation(){ + base = 0; + } +} \ No newline at end of file diff --git a/apps/openmw/mwrender/animation.hpp b/apps/openmw/mwrender/animation.hpp index 81938155ff..82dca80b27 100644 --- a/apps/openmw/mwrender/animation.hpp +++ b/apps/openmw/mwrender/animation.hpp @@ -20,6 +20,7 @@ class Animation{ Ogre::Entity* base; public: Animation(MWWorld::Environment& _env, OEngine::Render::OgreRenderer& _rend): mRend(_rend), mEnvironment(_env){}; + ~Animation(); }; } diff --git a/apps/openmw/mwrender/creatureanimation.cpp b/apps/openmw/mwrender/creatureanimation.cpp index 403f5da61d..66bc4d4d98 100644 --- a/apps/openmw/mwrender/creatureanimation.cpp +++ b/apps/openmw/mwrender/creatureanimation.cpp @@ -5,6 +5,10 @@ using namespace Ogre; using namespace NifOgre; namespace MWRender{ + +CreatureAnimation::~CreatureAnimation(){ + +} CreatureAnimation::CreatureAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env,OEngine::Render::OgreRenderer& _rend): Animation(_env,_rend){ Ogre::SceneNode* insert = ptr.getRefData().getBaseNode(); assert(insert); diff --git a/apps/openmw/mwrender/creatureanimation.hpp b/apps/openmw/mwrender/creatureanimation.hpp index 26e4f33e0b..9bbd149ce1 100644 --- a/apps/openmw/mwrender/creatureanimation.hpp +++ b/apps/openmw/mwrender/creatureanimation.hpp @@ -16,6 +16,7 @@ namespace MWRender{ class CreatureAnimation: public Animation{ std::vector shapes; //All the NiTriShapeData for this creature public: + ~CreatureAnimation(); CreatureAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env, OEngine::Render::OgreRenderer& _rend); }; } diff --git a/apps/openmw/mwrender/npcanimation.cpp b/apps/openmw/mwrender/npcanimation.cpp index b2a3d58258..c33892c213 100644 --- a/apps/openmw/mwrender/npcanimation.cpp +++ b/apps/openmw/mwrender/npcanimation.cpp @@ -4,6 +4,9 @@ using namespace Ogre; using namespace NifOgre; namespace MWRender{ +NpcAnimation::~NpcAnimation(){ + +} NpcAnimation::NpcAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env,OEngine::Render::OgreRenderer& _rend): Animation(_env,_rend){ ESMS::LiveCellRef *ref = @@ -52,7 +55,6 @@ NpcAnimation::NpcAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env,O base = mRend.getScene()->createEntity(smodel); insert->attachObject(base); - std::cout << "Nifloader\n"; std::string headModel = "meshes\\" + mEnvironment.mWorld->getStore().bodyParts.find(headID)->model; @@ -82,7 +84,6 @@ NpcAnimation::NpcAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env,O const ESM::BodyPart* forearmr = forearml; const ESM::BodyPart* wristr = wristl; const ESM::BodyPart* armr = arml; - std::cout << "upperleg"; if(upperleg){ insertBoundedPart("meshes\\" + upperleg->model + "*|", "Left Upper Leg"); insertBoundedPart("meshes\\" + upperleg->model, "Right Upper Leg"); diff --git a/apps/openmw/mwrender/npcanimation.hpp b/apps/openmw/mwrender/npcanimation.hpp index b9c55ff93d..90204f6d5c 100644 --- a/apps/openmw/mwrender/npcanimation.hpp +++ b/apps/openmw/mwrender/npcanimation.hpp @@ -15,6 +15,7 @@ class NpcAnimation: public Animation{ std::vector> shapeparts; //All the NiTriShape data that we need for animating this particular npc public: NpcAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env, OEngine::Render::OgreRenderer& _rend); + ~NpcAnimation(); Ogre::Entity* insertBoundedPart(const std::string &mesh, std::string bonename); }; }