From 57fb065a86cf02ef6a23b03584014aa0589969e5 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 5 Aug 2013 16:17:40 -0700 Subject: [PATCH] Add Ogre::Light objects to the object list Note that NIFs actually have NiLight-based light records which could be used to create Ogre::Light objects. However, no Morrowind NIF uses them, as far as I can tell. --- apps/openmw/mwrender/animation.cpp | 3 +++ apps/openmw/mwrender/objects.cpp | 2 +- components/nifogre/ogrenifloader.hpp | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/animation.cpp b/apps/openmw/mwrender/animation.cpp index 0bb7485723..b3f601270b 100644 --- a/apps/openmw/mwrender/animation.cpp +++ b/apps/openmw/mwrender/animation.cpp @@ -35,11 +35,14 @@ void Animation::AnimationValue::setValue(Ogre::Real) void Animation::destroyObjectList(Ogre::SceneManager *sceneMgr, NifOgre::ObjectList &objects) { + for(size_t i = 0;i < objects.mLights.size();i++) + sceneMgr->destroyLight(objects.mLights[i]); for(size_t i = 0;i < objects.mParticles.size();i++) sceneMgr->destroyParticleSystem(objects.mParticles[i]); for(size_t i = 0;i < objects.mEntities.size();i++) sceneMgr->destroyEntity(objects.mEntities[i]); objects.mControllers.clear(); + objects.mLights.clear(); objects.mParticles.clear(); objects.mEntities.clear(); objects.mSkelBase = NULL; diff --git a/apps/openmw/mwrender/objects.cpp b/apps/openmw/mwrender/objects.cpp index b92b17ba80..bede95a266 100644 --- a/apps/openmw/mwrender/objects.cpp +++ b/apps/openmw/mwrender/objects.cpp @@ -159,7 +159,7 @@ void Objects::insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh, bool } if(!mIsStatic || !Settings::Manager::getBool("use static geometry", "Objects") || - anyTransparency || !objects.mParticles.empty()) + anyTransparency || !objects.mParticles.empty() || !objects.mLights.empty()) { for(size_t i = 0;i < objects.mEntities.size();i++) { diff --git a/components/nifogre/ogrenifloader.hpp b/components/nifogre/ogrenifloader.hpp index 45f3cbcd8a..edad13a9a3 100644 --- a/components/nifogre/ogrenifloader.hpp +++ b/components/nifogre/ogrenifloader.hpp @@ -43,6 +43,7 @@ struct ObjectList { Ogre::Entity *mSkelBase; std::vector mEntities; std::vector mParticles; + std::vector mLights; std::map mTextKeys;