diff --git a/apps/openmw/mwrender/animation.hpp b/apps/openmw/mwrender/animation.hpp index e08b86e8d..d1e8071f0 100644 --- a/apps/openmw/mwrender/animation.hpp +++ b/apps/openmw/mwrender/animation.hpp @@ -66,7 +66,7 @@ class Animation{ void stopScript(); - ~Animation(); + virtual ~Animation(); }; } diff --git a/apps/openmw/mwrender/creatureanimation.hpp b/apps/openmw/mwrender/creatureanimation.hpp index 179991442..2229eeec9 100644 --- a/apps/openmw/mwrender/creatureanimation.hpp +++ b/apps/openmw/mwrender/creatureanimation.hpp @@ -16,7 +16,7 @@ namespace MWRender{ class CreatureAnimation: public Animation{ public: - ~CreatureAnimation(); + virtual ~CreatureAnimation(); CreatureAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env, OEngine::Render::OgreRenderer& _rend); virtual void runAnimation(float timepassed); diff --git a/apps/openmw/mwrender/npcanimation.hpp b/apps/openmw/mwrender/npcanimation.hpp index e8ce735f7..e2071957c 100644 --- a/apps/openmw/mwrender/npcanimation.hpp +++ b/apps/openmw/mwrender/npcanimation.hpp @@ -20,7 +20,7 @@ class NpcAnimation: public Animation{ public: NpcAnimation(const MWWorld::Ptr& ptr, MWWorld::Environment& _env, OEngine::Render::OgreRenderer& _rend); - ~NpcAnimation(); + virtual ~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); diff --git a/apps/openmw/mwrender/sky.hpp b/apps/openmw/mwrender/sky.hpp index 2678165e3..c3ff00b50 100644 --- a/apps/openmw/mwrender/sky.hpp +++ b/apps/openmw/mwrender/sky.hpp @@ -34,6 +34,8 @@ namespace MWRender Ogre::SceneNode* rootNode ); BillboardObject(); + + virtual ~BillboardObject() {} void setColour(const Ogre::ColourValue& pColour); void setPosition(const Ogre::Vector3& pPosition); @@ -69,6 +71,8 @@ namespace MWRender const Ogre::Vector3& position, Ogre::SceneNode* rootNode ); + + virtual ~Moon() {} enum Phase { diff --git a/components/esm_store/reclists.hpp b/components/esm_store/reclists.hpp index 4aacf2332..678f794c8 100644 --- a/components/esm_store/reclists.hpp +++ b/components/esm_store/reclists.hpp @@ -22,6 +22,8 @@ namespace ESMS struct RecList { + virtual ~RecList() {} + virtual void load(ESMReader &esm, const std::string &id) = 0; virtual int getSize() = 0; virtual void listIdentifier (std::vector& identifier) const = 0; @@ -42,6 +44,8 @@ namespace ESMS template struct RecListT : RecList { + virtual ~RecListT() {} + typedef std::map MapType; MapType list; @@ -90,6 +94,8 @@ namespace ESMS template struct RecListWithIDT : RecList { + virtual ~RecListWithIDT() {} + typedef std::map MapType; MapType list; @@ -139,6 +145,8 @@ namespace ESMS template struct RecIDListT : RecList { + virtual ~RecIDListT() {} + typedef std::map MapType; MapType list; @@ -189,6 +197,8 @@ namespace ESMS */ struct LTexList : RecList { + virtual ~LTexList() {} + // TODO: For multiple ESM/ESP files we need one list per file. std::vector ltex; int count; @@ -223,6 +233,8 @@ namespace ESMS */ struct LandList : RecList { + virtual ~LandList() {} + // Map containing all landscapes typedef std::map LandsCol; typedef std::map Lands; @@ -296,7 +308,7 @@ namespace ESMS identifier.push_back (iter->first); } - ~CellList() + virtual ~CellList() { for (IntCells::iterator it = intCells.begin(); it!=intCells.end(); ++it) delete it->second; @@ -404,7 +416,7 @@ namespace ESMS PathgridList() : count(0) {} - ~PathgridList() + virtual ~PathgridList() { for (IntGrids::iterator it = intGrids.begin(); it!=intGrids.end(); ++it) delete it->second; @@ -482,6 +494,8 @@ namespace ESMS template struct ScriptListT : RecList { + virtual ~ScriptListT() {} + typedef std::map MapType; MapType list; @@ -533,6 +547,8 @@ namespace ESMS template struct IndexListT { + virtual ~IndexListT() {} + typedef std::map MapType; MapType list;