diff --git a/apps/openmw/mwclass/activator.cpp b/apps/openmw/mwclass/activator.cpp index cd34997d2..fcad0d333 100644 --- a/apps/openmw/mwclass/activator.cpp +++ b/apps/openmw/mwclass/activator.cpp @@ -1,5 +1,6 @@ #include "activator.hpp" +#include "../mwrender/objects.hpp" #include diff --git a/apps/openmw/mwclass/apparatus.hpp b/apps/openmw/mwclass/apparatus.hpp index 9a5a9b955..4c8a2c0e2 100644 --- a/apps/openmw/mwclass/apparatus.hpp +++ b/apps/openmw/mwclass/apparatus.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_APPARATUS_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/armor.hpp b/apps/openmw/mwclass/armor.hpp index 123713a38..c5f9812b7 100644 --- a/apps/openmw/mwclass/armor.hpp +++ b/apps/openmw/mwclass/armor.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_ARMOR_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/book.hpp b/apps/openmw/mwclass/book.hpp index 6e38ea0d3..f0e38cceb 100644 --- a/apps/openmw/mwclass/book.hpp +++ b/apps/openmw/mwclass/book.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_BOOK_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/clothing.hpp b/apps/openmw/mwclass/clothing.hpp index 353f7f606..76c2c4a3e 100644 --- a/apps/openmw/mwclass/clothing.hpp +++ b/apps/openmw/mwclass/clothing.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_CLOTHING_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/container.hpp b/apps/openmw/mwclass/container.hpp index 9d65927f8..01763870a 100644 --- a/apps/openmw/mwclass/container.hpp +++ b/apps/openmw/mwclass/container.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_CONTAINER_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/creature.cpp b/apps/openmw/mwclass/creature.cpp index 2eca30539..12978c0dc 100644 --- a/apps/openmw/mwclass/creature.cpp +++ b/apps/openmw/mwclass/creature.cpp @@ -33,9 +33,9 @@ namespace MWClass if (!model.empty()) { - MWRender::Objects objects = renderingInterface.getObjects(); - objects.insertBegin(ptr, ptr.getRefData().isEnabled(), false); - objects.insertMesh(ptr, "meshes\\" + model); + MWRender::Creatures creatures = renderingInterface.getCreatures(); + //creatures.insertBegin(ptr, ptr.getRefData().isEnabled(), false); + //creatures.insertMesh(ptr, "meshes\\" + model); } } diff --git a/apps/openmw/mwclass/creature.hpp b/apps/openmw/mwclass/creature.hpp index e1657b2c7..f74cdf991 100644 --- a/apps/openmw/mwclass/creature.hpp +++ b/apps/openmw/mwclass/creature.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_CREATURE_H #include "../mwworld/class.hpp" +#include "../mwrender/creatures.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/door.cpp b/apps/openmw/mwclass/door.cpp index 9e2b17b2e..5073afb12 100644 --- a/apps/openmw/mwclass/door.cpp +++ b/apps/openmw/mwclass/door.cpp @@ -13,6 +13,7 @@ #include "../mwworld/world.hpp" #include "../mwrender/cellimp.hpp" +#include "../mwrender/objects.hpp" #include diff --git a/apps/openmw/mwclass/door.hpp b/apps/openmw/mwclass/door.hpp index aecb4224c..c230cf357 100644 --- a/apps/openmw/mwclass/door.hpp +++ b/apps/openmw/mwclass/door.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_DOOR_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/ingredient.hpp b/apps/openmw/mwclass/ingredient.hpp index 6c7409665..47bd1a9e5 100644 --- a/apps/openmw/mwclass/ingredient.hpp +++ b/apps/openmw/mwclass/ingredient.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_INGREDIENT_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/itemlevlist.hpp b/apps/openmw/mwclass/itemlevlist.hpp index 0b71b072c..c7d630aee 100644 --- a/apps/openmw/mwclass/itemlevlist.hpp +++ b/apps/openmw/mwclass/itemlevlist.hpp @@ -9,6 +9,11 @@ namespace MWClass { public: + virtual void insertObjectRendering (const MWWorld::Ptr& ptr, MWRender::RenderingInterface& renderingInterface) const; + ///< Add reference into a cell for rendering + + virtual void insertObject(const MWWorld::Ptr& ptr, MWWorld::PhysicsSystem& physics, MWWorld::Environment& environment) const; + virtual std::string getName (const MWWorld::Ptr& ptr) const; ///< \return name (the one that is to be presented to the user; not the internal one); /// can return an empty string. diff --git a/apps/openmw/mwclass/light.hpp b/apps/openmw/mwclass/light.hpp index 7df82ae5d..34421ff51 100644 --- a/apps/openmw/mwclass/light.hpp +++ b/apps/openmw/mwclass/light.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_LIGHT_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/lockpick.hpp b/apps/openmw/mwclass/lockpick.hpp index 074a07c93..c5f1539b4 100644 --- a/apps/openmw/mwclass/lockpick.hpp +++ b/apps/openmw/mwclass/lockpick.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_LOCKPICK_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/misc.hpp b/apps/openmw/mwclass/misc.hpp index cb1858315..36ee2c1b2 100644 --- a/apps/openmw/mwclass/misc.hpp +++ b/apps/openmw/mwclass/misc.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_MISC_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/npc.cpp b/apps/openmw/mwclass/npc.cpp index ccca0f688..6ecdc6e4e 100644 --- a/apps/openmw/mwclass/npc.cpp +++ b/apps/openmw/mwclass/npc.cpp @@ -15,6 +15,7 @@ #include "../mwmechanics/mechanicsmanager.hpp" #include +#include "../mwrender/objects.hpp" namespace { @@ -42,9 +43,9 @@ namespace MWClass if (!model.empty()) { - MWRender::Objects objects = renderingInterface.getObjects(); - objects.insertBegin(ptr, ptr.getRefData().isEnabled(), false); - objects.insertMesh(ptr, "meshes\\" + model); + MWRender::Npcs npcs = renderingInterface.getNPCs(); + //npcs.insertBegin(ptr, ptr.getRefData().isEnabled(), false); + //npcs.insertMesh(ptr, "meshes\\" + model); } } diff --git a/apps/openmw/mwclass/npc.hpp b/apps/openmw/mwclass/npc.hpp index 095f0de41..271d66392 100644 --- a/apps/openmw/mwclass/npc.hpp +++ b/apps/openmw/mwclass/npc.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_NPC_H #include "../mwworld/class.hpp" +#include "../mwrender/npcs.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/potion.hpp b/apps/openmw/mwclass/potion.hpp index e1a54db3c..85678121f 100644 --- a/apps/openmw/mwclass/potion.hpp +++ b/apps/openmw/mwclass/potion.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_POTION_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/probe.hpp b/apps/openmw/mwclass/probe.hpp index 287dd0475..d3495bb48 100644 --- a/apps/openmw/mwclass/probe.hpp +++ b/apps/openmw/mwclass/probe.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_PROBE_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/repair.hpp b/apps/openmw/mwclass/repair.hpp index 174197d9a..1e0ea5178 100644 --- a/apps/openmw/mwclass/repair.hpp +++ b/apps/openmw/mwclass/repair.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_REPAIR_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/static.hpp b/apps/openmw/mwclass/static.hpp index a4b1d8c54..be3fdb180 100644 --- a/apps/openmw/mwclass/static.hpp +++ b/apps/openmw/mwclass/static.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_STATIC_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwclass/weapon.hpp b/apps/openmw/mwclass/weapon.hpp index 84c633ab3..79bc4d4de 100644 --- a/apps/openmw/mwclass/weapon.hpp +++ b/apps/openmw/mwclass/weapon.hpp @@ -2,6 +2,7 @@ #define GAME_MWCLASS_WEAPON_H #include "../mwworld/class.hpp" +#include "../mwrender/objects.hpp" namespace MWClass { diff --git a/apps/openmw/mwrender/creatures.hpp b/apps/openmw/mwrender/creatures.hpp index 17946f050..9aabb175b 100644 --- a/apps/openmw/mwrender/creatures.hpp +++ b/apps/openmw/mwrender/creatures.hpp @@ -1,7 +1,10 @@ +#ifndef _GAME_RENDER_CREATURES_H +#define _GAME_RENDER_CREATURES_H #include namespace MWRender{ class Creatures{ }; -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/apps/openmw/mwrender/npcs.hpp b/apps/openmw/mwrender/npcs.hpp index c9701f195..88ee5ca30 100644 --- a/apps/openmw/mwrender/npcs.hpp +++ b/apps/openmw/mwrender/npcs.hpp @@ -1,6 +1,9 @@ +#ifndef _GAME_RENDER_NPCS_H +#define _GAME_RENDER_NPCS_H #include namespace MWRender{ class Npcs{ }; } +#endif diff --git a/apps/openmw/mwrender/objects.hpp b/apps/openmw/mwrender/objects.hpp index e830d0993..0dd7fdd4c 100644 --- a/apps/openmw/mwrender/objects.hpp +++ b/apps/openmw/mwrender/objects.hpp @@ -1,3 +1,6 @@ +#ifndef _GAME_RENDER_OBJECTS_H +#define _GAME_RENDER_OBJECTS_H + #include "components/esm_store/cell_store.hpp" #include "../mwworld/refdata.hpp" @@ -40,4 +43,5 @@ public: /// insert a light related to the most recent insertBegin call. }; -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/apps/openmw/mwrender/renderinginterface.hpp b/apps/openmw/mwrender/renderinginterface.hpp index fed1fd3ec..ebd4af2bd 100644 --- a/apps/openmw/mwrender/renderinginterface.hpp +++ b/apps/openmw/mwrender/renderinginterface.hpp @@ -1,14 +1,17 @@ -#include "objects.hpp" -#include "npcs.hpp" -#include "creatures.hpp" -#include "player.hpp" -#define RENDERING_INTERFACE 1 +#ifndef _GAME_RENDERING_INTERFACE_H +#define _GAME_RENDERING_INTERFACE_H namespace MWRender{ + class Npcs; + class Creatures; + class Objects; + class Player; class RenderingInterface{ public: virtual MWRender::Npcs& getNPCs() = 0; virtual MWRender::Creatures& getCreatures() = 0; virtual MWRender::Objects& getObjects() = 0; virtual MWRender::Player& getPlayer() = 0; + virtual ~RenderingInterface(){}; }; -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 9242fac67..a413b0372 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -12,7 +12,7 @@ #include "../mwworld/world.hpp" // these includes can be removed once the static-hack is gone #include "../mwworld/ptr.hpp" #include - +#include "renderinginterface.hpp" using namespace MWRender; diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index f3bc7005d..9e1f86372 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -19,10 +19,11 @@ #include -#ifndef RENDERING_INTERFACE #include "renderinginterface.hpp" -#endif - +#include "npcs.hpp" +#include "creatures.hpp" +#include "objects.hpp" +#include "player.hpp" namespace Ogre { @@ -42,7 +43,7 @@ namespace MWWorld namespace MWRender { - class Player; + class RenderingManager: private RenderingInterface { @@ -51,7 +52,7 @@ class RenderingManager: private RenderingInterface { public: RenderingManager(OEngine::Render::OgreRenderer& _rend, const boost::filesystem::path& resDir, OEngine::Physic::PhysicEngine* engine); - ~RenderingManager(); + virtual ~RenderingManager(); virtual MWRender::Npcs& getNPCs(); virtual MWRender::Creatures& getCreatures(); virtual MWRender::Objects& getObjects(); @@ -96,7 +97,7 @@ class RenderingManager: private RenderingInterface { SkyManager* mSkyManager; OEngine::Render::OgreRenderer &rend; Ogre::Camera* camera; - MWRender::Npcs npcs; + MWRender::Npcs npcs; MWRender::Creatures creatures; MWRender::Objects objects; diff --git a/apps/openmw/mwworld/class.hpp b/apps/openmw/mwworld/class.hpp index 44de4888f..706b11aaa 100644 --- a/apps/openmw/mwworld/class.hpp +++ b/apps/openmw/mwworld/class.hpp @@ -9,11 +9,8 @@ #include "action.hpp" #include "containerstore.hpp" #include "refdata.hpp" - -#include "physicssystem.hpp" -#ifndef RENDERING_INTERFACE #include "../mwrender/renderinginterface.hpp" -#endif +#include "physicssystem.hpp" namespace Ogre {