forked from mirror/openmw-tes3mp
Issue #176: removed enable/disable functions from MWWorld::Class
This commit is contained in:
parent
36885b2e40
commit
0131c53005
5 changed files with 26 additions and 44 deletions
|
@ -32,16 +32,6 @@ namespace MWWorld
|
|||
|
||||
}
|
||||
|
||||
void Class::enable (const Ptr& ptr) const
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Class::disable (const Ptr& ptr) const
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
MWMechanics::CreatureStats& Class::getCreatureStats (const Ptr& ptr) const
|
||||
{
|
||||
throw std::runtime_error ("class does not have creature stats");
|
||||
|
|
|
@ -68,16 +68,6 @@ namespace MWWorld
|
|||
virtual void insertObject(const Ptr& ptr, MWWorld::PhysicsSystem& physics) const;
|
||||
///< Add reference into a cell for rendering (default implementation: don't render anything).
|
||||
|
||||
virtual void enable (const Ptr& ptr) const;
|
||||
///< Enable reference; only does the non-rendering part (default implementation: ignore)
|
||||
/// \attention This is not the same as the script instruction with the same name. References
|
||||
/// should only be enabled while in an active cell.
|
||||
|
||||
virtual void disable (const Ptr& ptr) const;
|
||||
///< Enable reference; only does the non-rendering part (default implementation: ignore)
|
||||
/// \attention This is not the same as the script instruction with the same name. References
|
||||
/// should only be enabled while in an active cell.
|
||||
|
||||
virtual std::string getName (const Ptr& ptr) const = 0;
|
||||
///< \return name (the one that is to be presented to the user; not the internal one);
|
||||
/// can return an empty string.
|
||||
|
|
|
@ -41,7 +41,6 @@ namespace
|
|||
{
|
||||
rendering.addObject(ptr);
|
||||
class_.insertObject(ptr, physics);
|
||||
class_.enable (ptr);
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
|
@ -459,8 +458,20 @@ namespace MWWorld
|
|||
|
||||
mRendering.addObject(newPtr);
|
||||
MWWorld::Class::get(newPtr).insertObject(newPtr, *mPhysics);
|
||||
MWWorld::Class::get(newPtr).enable(newPtr);
|
||||
|
||||
}
|
||||
|
||||
void Scene::addObjectToScene (const Ptr& ptr)
|
||||
{
|
||||
mRendering.addObject (ptr);
|
||||
MWWorld::Class::get (ptr).insertObject (ptr, *mPhysics);
|
||||
}
|
||||
|
||||
void Scene::removeObjectFromScene (const Ptr& ptr)
|
||||
{
|
||||
MWBase::Environment::get().getMechanicsManager()->removeActor (ptr);
|
||||
MWBase::Environment::get().getSoundManager()->stopSound3D (ptr);
|
||||
mPhysics->removeObject (ptr.getRefData().getHandle());
|
||||
mRendering.removeObject (ptr);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -105,6 +105,12 @@ namespace MWWorld
|
|||
void insertObject(MWWorld::Ptr object, Ptr::CellStore* cell);
|
||||
|
||||
void update (float duration);
|
||||
|
||||
void addObjectToScene (const Ptr& ptr);
|
||||
///< Add an object that already exists in the world model to the scene.
|
||||
|
||||
void removeObjectFromScene (const Ptr& ptr);
|
||||
///< Remove an object from the scene, but not from the world model.
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -357,12 +357,8 @@ namespace MWWorld
|
|||
{
|
||||
reference.getRefData().enable();
|
||||
|
||||
|
||||
//render->enable (reference.getRefData().getHandle());
|
||||
if(mWorldScene->getActiveCells().find (reference.getCell()) != mWorldScene->getActiveCells().end())
|
||||
Class::get (reference).enable (reference);
|
||||
|
||||
|
||||
if(mWorldScene->getActiveCells().find (reference.getCell()) != mWorldScene->getActiveCells().end() && reference.getRefData().getCount())
|
||||
mWorldScene->addObjectToScene (reference);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -372,14 +368,8 @@ namespace MWWorld
|
|||
{
|
||||
reference.getRefData().disable();
|
||||
|
||||
|
||||
//render->disable (reference.getRefData().getHandle());
|
||||
if(mWorldScene->getActiveCells().find (reference.getCell())!=mWorldScene->getActiveCells().end()){
|
||||
Class::get (reference).disable (reference);
|
||||
MWBase::Environment::get().getSoundManager()->stopSound3D (reference);
|
||||
}
|
||||
|
||||
|
||||
if(mWorldScene->getActiveCells().find (reference.getCell())!=mWorldScene->getActiveCells().end() && reference.getRefData().getCount())
|
||||
mWorldScene->removeObjectFromScene (reference);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -553,15 +543,10 @@ namespace MWWorld
|
|||
{
|
||||
ptr.getRefData().setCount (0);
|
||||
|
||||
if (mWorldScene->getActiveCells().find (ptr.getCell())!=mWorldScene->getActiveCells().end())
|
||||
if (mWorldScene->getActiveCells().find (ptr.getCell())!=mWorldScene->getActiveCells().end() &&
|
||||
ptr.getRefData().isEnabled())
|
||||
{
|
||||
MWBase::Environment::get().getMechanicsManager()->removeActor (ptr);
|
||||
|
||||
MWBase::Environment::get().getSoundManager()->stopSound3D (ptr);
|
||||
|
||||
mPhysics->removeObject (ptr.getRefData().getHandle());
|
||||
mRendering->removeObject(ptr);
|
||||
|
||||
mWorldScene->removeObjectFromScene (ptr);
|
||||
mLocalScripts.remove (ptr);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue