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
|
MWMechanics::CreatureStats& Class::getCreatureStats (const Ptr& ptr) const
|
||||||
{
|
{
|
||||||
throw std::runtime_error ("class does not have creature stats");
|
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;
|
virtual void insertObject(const Ptr& ptr, MWWorld::PhysicsSystem& physics) const;
|
||||||
///< Add reference into a cell for rendering (default implementation: don't render anything).
|
///< 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;
|
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);
|
///< \return name (the one that is to be presented to the user; not the internal one);
|
||||||
/// can return an empty string.
|
/// can return an empty string.
|
||||||
|
|
|
@ -41,7 +41,6 @@ namespace
|
||||||
{
|
{
|
||||||
rendering.addObject(ptr);
|
rendering.addObject(ptr);
|
||||||
class_.insertObject(ptr, physics);
|
class_.insertObject(ptr, physics);
|
||||||
class_.enable (ptr);
|
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
|
@ -459,8 +458,20 @@ namespace MWWorld
|
||||||
|
|
||||||
mRendering.addObject(newPtr);
|
mRendering.addObject(newPtr);
|
||||||
MWWorld::Class::get(newPtr).insertObject(newPtr, *mPhysics);
|
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 insertObject(MWWorld::Ptr object, Ptr::CellStore* cell);
|
||||||
|
|
||||||
void update (float duration);
|
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();
|
reference.getRefData().enable();
|
||||||
|
|
||||||
|
if(mWorldScene->getActiveCells().find (reference.getCell()) != mWorldScene->getActiveCells().end() && reference.getRefData().getCount())
|
||||||
//render->enable (reference.getRefData().getHandle());
|
mWorldScene->addObjectToScene (reference);
|
||||||
if(mWorldScene->getActiveCells().find (reference.getCell()) != mWorldScene->getActiveCells().end())
|
|
||||||
Class::get (reference).enable (reference);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,14 +368,8 @@ namespace MWWorld
|
||||||
{
|
{
|
||||||
reference.getRefData().disable();
|
reference.getRefData().disable();
|
||||||
|
|
||||||
|
if(mWorldScene->getActiveCells().find (reference.getCell())!=mWorldScene->getActiveCells().end() && reference.getRefData().getCount())
|
||||||
//render->disable (reference.getRefData().getHandle());
|
mWorldScene->removeObjectFromScene (reference);
|
||||||
if(mWorldScene->getActiveCells().find (reference.getCell())!=mWorldScene->getActiveCells().end()){
|
|
||||||
Class::get (reference).disable (reference);
|
|
||||||
MWBase::Environment::get().getSoundManager()->stopSound3D (reference);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -553,15 +543,10 @@ namespace MWWorld
|
||||||
{
|
{
|
||||||
ptr.getRefData().setCount (0);
|
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);
|
mWorldScene->removeObjectFromScene (ptr);
|
||||||
|
|
||||||
MWBase::Environment::get().getSoundManager()->stopSound3D (ptr);
|
|
||||||
|
|
||||||
mPhysics->removeObject (ptr.getRefData().getHandle());
|
|
||||||
mRendering->removeObject(ptr);
|
|
||||||
|
|
||||||
mLocalScripts.remove (ptr);
|
mLocalScripts.remove (ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue