diff --git a/apps/openmw/mwclass/apparatus.cpp b/apps/openmw/mwclass/apparatus.cpp index c45fe9b1c..b409b4c84 100644 --- a/apps/openmw/mwclass/apparatus.cpp +++ b/apps/openmw/mwclass/apparatus.cpp @@ -25,9 +25,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwclass/armor.cpp b/apps/openmw/mwclass/armor.cpp index 8dd8bb6d6..27b3870cb 100644 --- a/apps/openmw/mwclass/armor.cpp +++ b/apps/openmw/mwclass/armor.cpp @@ -30,9 +30,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwclass/book.cpp b/apps/openmw/mwclass/book.cpp index 05a0085f3..05d0ac69f 100644 --- a/apps/openmw/mwclass/book.cpp +++ b/apps/openmw/mwclass/book.cpp @@ -23,9 +23,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwclass/clothing.cpp b/apps/openmw/mwclass/clothing.cpp index 884b27aed..2485728b1 100644 --- a/apps/openmw/mwclass/clothing.cpp +++ b/apps/openmw/mwclass/clothing.cpp @@ -27,9 +27,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwclass/container.cpp b/apps/openmw/mwclass/container.cpp index db715813d..6aad8422e 100644 --- a/apps/openmw/mwclass/container.cpp +++ b/apps/openmw/mwclass/container.cpp @@ -61,9 +61,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwclass/door.cpp b/apps/openmw/mwclass/door.cpp index ebf2e4bf9..cc202865e 100644 --- a/apps/openmw/mwclass/door.cpp +++ b/apps/openmw/mwclass/door.cpp @@ -29,9 +29,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwclass/ingredient.cpp b/apps/openmw/mwclass/ingredient.cpp index 6ec11b457..a53fc5a28 100644 --- a/apps/openmw/mwclass/ingredient.cpp +++ b/apps/openmw/mwclass/ingredient.cpp @@ -36,9 +36,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwclass/light.cpp b/apps/openmw/mwclass/light.cpp index 8d9eeae2d..cdd41751f 100644 --- a/apps/openmw/mwclass/light.cpp +++ b/apps/openmw/mwclass/light.cpp @@ -26,18 +26,10 @@ namespace MWClass { void Light::insertObjectRendering (const MWWorld::Ptr& ptr, MWRender::RenderingInterface& renderingInterface) const { - MWWorld::LiveCellRef *ref = - ptr.get(); - assert (ref->mBase != NULL); - - const std::string &model = ref->mBase->mModel; - - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - if(!model.empty()) - objects.insertMesh(ptr, "meshes\\" + model); - else - objects.insertMesh(ptr, ""); + const std::string model = getModel(ptr); + if(!model.empty()) { + renderingInterface.getObjects().insertModel(ptr, model); + } } void Light::insertObject(const MWWorld::Ptr& ptr, MWWorld::PhysicsSystem& physics) const diff --git a/apps/openmw/mwclass/lockpick.cpp b/apps/openmw/mwclass/lockpick.cpp index 6cca2000c..65af5b52b 100644 --- a/apps/openmw/mwclass/lockpick.cpp +++ b/apps/openmw/mwclass/lockpick.cpp @@ -26,9 +26,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwclass/misc.cpp b/apps/openmw/mwclass/misc.cpp index 65d1fda56..9345ed9ae 100644 --- a/apps/openmw/mwclass/misc.cpp +++ b/apps/openmw/mwclass/misc.cpp @@ -42,9 +42,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwclass/potion.cpp b/apps/openmw/mwclass/potion.cpp index 87b40ec4b..51fcd1c13 100644 --- a/apps/openmw/mwclass/potion.cpp +++ b/apps/openmw/mwclass/potion.cpp @@ -28,9 +28,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwclass/probe.cpp b/apps/openmw/mwclass/probe.cpp index 1e5c43092..c140d9471 100644 --- a/apps/openmw/mwclass/probe.cpp +++ b/apps/openmw/mwclass/probe.cpp @@ -26,9 +26,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwclass/repair.cpp b/apps/openmw/mwclass/repair.cpp index 1d3116daa..b5af02eff 100644 --- a/apps/openmw/mwclass/repair.cpp +++ b/apps/openmw/mwclass/repair.cpp @@ -25,9 +25,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwclass/static.cpp b/apps/openmw/mwclass/static.cpp index ada473676..bd7deca88 100644 --- a/apps/openmw/mwclass/static.cpp +++ b/apps/openmw/mwclass/static.cpp @@ -15,9 +15,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwclass/weapon.cpp b/apps/openmw/mwclass/weapon.cpp index 74ed6a8e3..dce1f288a 100644 --- a/apps/openmw/mwclass/weapon.cpp +++ b/apps/openmw/mwclass/weapon.cpp @@ -33,9 +33,7 @@ namespace MWClass { const std::string model = getModel(ptr); if (!model.empty()) { - MWRender::Objects& objects = renderingInterface.getObjects(); - objects.insertBegin(ptr); - objects.insertMesh(ptr, model); + renderingInterface.getObjects().insertModel(ptr, model); } } diff --git a/apps/openmw/mwrender/actors.hpp b/apps/openmw/mwrender/actors.hpp index af5888398..4547db9ad 100644 --- a/apps/openmw/mwrender/actors.hpp +++ b/apps/openmw/mwrender/actors.hpp @@ -27,6 +27,8 @@ namespace MWRender CellSceneNodeMap mCellSceneNodes; PtrAnimationMap mAllActors; + void insertBegin(const MWWorld::Ptr &ptr); + public: Actors(OEngine::Render::OgreRenderer& _rend, MWRender::RenderingManager* rendering) : mRend(_rend) @@ -36,7 +38,7 @@ namespace MWRender ~Actors(); void setRootNode(Ogre::SceneNode* root); - void insertBegin (const MWWorld::Ptr& ptr); + void insertNPC(const MWWorld::Ptr& ptr, MWWorld::InventoryStore& inv); void insertCreature (const MWWorld::Ptr& ptr); void insertActivator (const MWWorld::Ptr& ptr); diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index 6563238d0..337327dc4 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -29,7 +29,7 @@ void Objects::setRootNode(Ogre::SceneNode* root) mRootNode = root; } -void Objects::insertBegin (const MWWorld::Ptr& ptr) +void Objects::insertBegin(const MWWorld::Ptr& ptr) { Ogre::SceneNode* root = mRootNode; Ogre::SceneNode* cellnode; @@ -69,16 +69,15 @@ void Objects::insertBegin (const MWWorld::Ptr& ptr) ptr.getRefData().setBaseNode(insert); } -void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh) +void Objects::insertModel(const MWWorld::Ptr &ptr, const std::string &mesh) { - Ogre::SceneNode* insert = ptr.getRefData().getBaseNode(); - assert(insert); + insertBegin(ptr); std::auto_ptr anim(new ObjectAnimation(ptr, mesh)); Ogre::AxisAlignedBox bounds = anim->getWorldBounds(); Ogre::Vector3 extents = bounds.getSize(); - extents *= insert->getScale(); + extents *= ptr.getRefData().getBaseNode()->getScale(); float size = std::max(std::max(extents.x, extents.y), extents.z); bool small = (size < Settings::Manager::getInt("small object size", "Viewing distance")) && diff --git a/apps/openmw/mwrender/objects.hpp b/apps/openmw/mwrender/objects.hpp index 815233a66..22dd1e4f5 100644 --- a/apps/openmw/mwrender/objects.hpp +++ b/apps/openmw/mwrender/objects.hpp @@ -31,14 +31,15 @@ class Objects{ static int uniqueID; + void insertBegin(const MWWorld::Ptr& ptr); + public: Objects(OEngine::Render::OgreRenderer &renderer) : mRenderer(renderer) , mRootNode(NULL) {} ~Objects(){} - void insertBegin (const MWWorld::Ptr& ptr); - void insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh); + void insertModel(const MWWorld::Ptr& ptr, const std::string &model); void enableLights(); void disableLights();