mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-01 22:45:33 +00:00
Rename Mechanics' Activators to Objects
This commit is contained in:
parent
10d04c928c
commit
04aeb3dd07
7 changed files with 136 additions and 136 deletions
|
@ -63,7 +63,7 @@ add_openmw_dir (mwclass
|
||||||
)
|
)
|
||||||
|
|
||||||
add_openmw_dir (mwmechanics
|
add_openmw_dir (mwmechanics
|
||||||
mechanicsmanagerimp stat character creaturestats magiceffects movement actors activators
|
mechanicsmanagerimp stat character creaturestats magiceffects movement actors objects
|
||||||
drawstate spells activespells npcstats aipackage aisequence alchemy aiwander aitravel aifollow
|
drawstate spells activespells npcstats aipackage aisequence alchemy aiwander aitravel aifollow
|
||||||
aiescort aiactivate repair enchanting
|
aiescort aiactivate repair enchanting
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,81 +0,0 @@
|
||||||
#include "activators.hpp"
|
|
||||||
|
|
||||||
#include <OgreVector3.h>
|
|
||||||
|
|
||||||
#include "movement.hpp"
|
|
||||||
|
|
||||||
#include "../mwbase/environment.hpp"
|
|
||||||
#include "../mwbase/world.hpp"
|
|
||||||
|
|
||||||
namespace MWMechanics
|
|
||||||
{
|
|
||||||
|
|
||||||
Activators::Activators()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void Activators::addActivator(const MWWorld::Ptr& ptr)
|
|
||||||
{
|
|
||||||
MWRender::Animation *anim = MWBase::Environment::get().getWorld()->getAnimation(ptr);
|
|
||||||
if(anim != NULL)
|
|
||||||
mActivators.insert(std::make_pair(ptr, CharacterController(ptr, anim, CharState_Idle, true)));
|
|
||||||
}
|
|
||||||
|
|
||||||
void Activators::removeActivator (const MWWorld::Ptr& ptr)
|
|
||||||
{
|
|
||||||
PtrControllerMap::iterator iter = mActivators.find(ptr);
|
|
||||||
if(iter != mActivators.end())
|
|
||||||
mActivators.erase(iter);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Activators::updateActivator(const MWWorld::Ptr &old, const MWWorld::Ptr &ptr)
|
|
||||||
{
|
|
||||||
PtrControllerMap::iterator iter = mActivators.find(old);
|
|
||||||
if(iter != mActivators.end())
|
|
||||||
{
|
|
||||||
CharacterController ctrl = iter->second;
|
|
||||||
mActivators.erase(iter);
|
|
||||||
|
|
||||||
ctrl.updatePtr(ptr);
|
|
||||||
mActivators.insert(std::make_pair(ptr, ctrl));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Activators::dropActivators (const MWWorld::Ptr::CellStore *cellStore)
|
|
||||||
{
|
|
||||||
PtrControllerMap::iterator iter = mActivators.begin();
|
|
||||||
while(iter != mActivators.end())
|
|
||||||
{
|
|
||||||
if(iter->first.getCell()==cellStore)
|
|
||||||
mActivators.erase(iter++);
|
|
||||||
else
|
|
||||||
++iter;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Activators::update(float duration, bool paused)
|
|
||||||
{
|
|
||||||
if(!paused)
|
|
||||||
{
|
|
||||||
for(PtrControllerMap::iterator iter(mActivators.begin());iter != mActivators.end();++iter)
|
|
||||||
{
|
|
||||||
Movement movement;
|
|
||||||
iter->second.update(duration, movement);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Activators::playAnimationGroup(const MWWorld::Ptr& ptr, const std::string& groupName, int mode, int number)
|
|
||||||
{
|
|
||||||
PtrControllerMap::iterator iter = mActivators.find(ptr);
|
|
||||||
if(iter != mActivators.end())
|
|
||||||
iter->second.playGroup(groupName, mode, number);
|
|
||||||
}
|
|
||||||
void Activators::skipAnimation(const MWWorld::Ptr& ptr)
|
|
||||||
{
|
|
||||||
PtrControllerMap::iterator iter = mActivators.find(ptr);
|
|
||||||
if(iter != mActivators.end())
|
|
||||||
iter->second.skipAnim();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
#ifndef GAME_MWMECHANICS_ACTIVATORS_H
|
|
||||||
#define GAME_MWMECHANICS_ACTOVATRS_H
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <map>
|
|
||||||
|
|
||||||
#include "character.hpp"
|
|
||||||
|
|
||||||
namespace MWWorld
|
|
||||||
{
|
|
||||||
class Ptr;
|
|
||||||
class CellStore;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace MWMechanics
|
|
||||||
{
|
|
||||||
class Activators
|
|
||||||
{
|
|
||||||
typedef std::map<MWWorld::Ptr,CharacterController> PtrControllerMap;
|
|
||||||
PtrControllerMap mActivators;
|
|
||||||
|
|
||||||
public:
|
|
||||||
Activators();
|
|
||||||
|
|
||||||
void addActivator (const MWWorld::Ptr& ptr);
|
|
||||||
///< Register an animated activator
|
|
||||||
|
|
||||||
void removeActivator (const MWWorld::Ptr& ptr);
|
|
||||||
///< Deregister an activator
|
|
||||||
|
|
||||||
void updateActivator(const MWWorld::Ptr &old, const MWWorld::Ptr& ptr);
|
|
||||||
///< Updates an activator with a new Ptr
|
|
||||||
|
|
||||||
void dropActivators (const MWWorld::CellStore *cellStore);
|
|
||||||
///< Deregister all activators in the given cell.
|
|
||||||
|
|
||||||
void update (float duration, bool paused);
|
|
||||||
///< Update activator animations
|
|
||||||
|
|
||||||
void playAnimationGroup(const MWWorld::Ptr& ptr, const std::string& groupName, int mode, int number);
|
|
||||||
void skipAnimation(const MWWorld::Ptr& ptr);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -181,7 +181,7 @@ namespace MWMechanics
|
||||||
if(MWWorld::Class::get(ptr).isActor())
|
if(MWWorld::Class::get(ptr).isActor())
|
||||||
mActors.addActor(ptr);
|
mActors.addActor(ptr);
|
||||||
else
|
else
|
||||||
mActivators.addActivator(ptr);
|
mObjects.addObject(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MechanicsManager::remove(const MWWorld::Ptr& ptr)
|
void MechanicsManager::remove(const MWWorld::Ptr& ptr)
|
||||||
|
@ -189,7 +189,7 @@ namespace MWMechanics
|
||||||
if(ptr == mWatched)
|
if(ptr == mWatched)
|
||||||
mWatched = MWWorld::Ptr();
|
mWatched = MWWorld::Ptr();
|
||||||
mActors.removeActor(ptr);
|
mActors.removeActor(ptr);
|
||||||
mActivators.removeActivator(ptr);
|
mObjects.removeObject(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MechanicsManager::updateCell(const MWWorld::Ptr &old, const MWWorld::Ptr &ptr)
|
void MechanicsManager::updateCell(const MWWorld::Ptr &old, const MWWorld::Ptr &ptr)
|
||||||
|
@ -197,7 +197,7 @@ namespace MWMechanics
|
||||||
if(MWWorld::Class::get(ptr).isActor())
|
if(MWWorld::Class::get(ptr).isActor())
|
||||||
mActors.updateActor(old, ptr);
|
mActors.updateActor(old, ptr);
|
||||||
else
|
else
|
||||||
mActivators.updateActivator(old, ptr);
|
mObjects.updateObject(old, ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ namespace MWMechanics
|
||||||
mWatched = MWWorld::Ptr();
|
mWatched = MWWorld::Ptr();
|
||||||
|
|
||||||
mActors.dropActors(cellStore);
|
mActors.dropActors(cellStore);
|
||||||
mActivators.dropActivators(cellStore);
|
mObjects.dropObjects(cellStore);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -319,7 +319,7 @@ namespace MWMechanics
|
||||||
}
|
}
|
||||||
|
|
||||||
mActors.update(duration, paused);
|
mActors.update(duration, paused);
|
||||||
mActivators.update(duration, paused);
|
mObjects.update(duration, paused);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MechanicsManager::restoreDynamicStats()
|
void MechanicsManager::restoreDynamicStats()
|
||||||
|
@ -659,14 +659,14 @@ namespace MWMechanics
|
||||||
if(MWWorld::Class::get(ptr).isActor())
|
if(MWWorld::Class::get(ptr).isActor())
|
||||||
mActors.playAnimationGroup(ptr, groupName, mode, number);
|
mActors.playAnimationGroup(ptr, groupName, mode, number);
|
||||||
else
|
else
|
||||||
mActivators.playAnimationGroup(ptr, groupName, mode, number);
|
mObjects.playAnimationGroup(ptr, groupName, mode, number);
|
||||||
}
|
}
|
||||||
void MechanicsManager::skipAnimation(const MWWorld::Ptr& ptr)
|
void MechanicsManager::skipAnimation(const MWWorld::Ptr& ptr)
|
||||||
{
|
{
|
||||||
if(MWWorld::Class::get(ptr).isActor())
|
if(MWWorld::Class::get(ptr).isActor())
|
||||||
mActors.skipAnimation(ptr);
|
mActors.skipAnimation(ptr);
|
||||||
else
|
else
|
||||||
mActivators.skipAnimation(ptr);
|
mObjects.skipAnimation(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#include "creaturestats.hpp"
|
#include "creaturestats.hpp"
|
||||||
#include "npcstats.hpp"
|
#include "npcstats.hpp"
|
||||||
#include "activators.hpp"
|
#include "objects.hpp"
|
||||||
#include "actors.hpp"
|
#include "actors.hpp"
|
||||||
|
|
||||||
namespace Ogre
|
namespace Ogre
|
||||||
|
@ -31,7 +31,7 @@ namespace MWMechanics
|
||||||
bool mClassSelected;
|
bool mClassSelected;
|
||||||
bool mRaceSelected;
|
bool mRaceSelected;
|
||||||
|
|
||||||
Activators mActivators;
|
Objects mObjects;
|
||||||
Actors mActors;
|
Actors mActors;
|
||||||
|
|
||||||
void buildPlayer();
|
void buildPlayer();
|
||||||
|
|
81
apps/openmw/mwmechanics/objects.cpp
Normal file
81
apps/openmw/mwmechanics/objects.cpp
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
#include "objects.hpp"
|
||||||
|
|
||||||
|
#include <OgreVector3.h>
|
||||||
|
|
||||||
|
#include "movement.hpp"
|
||||||
|
|
||||||
|
#include "../mwbase/environment.hpp"
|
||||||
|
#include "../mwbase/world.hpp"
|
||||||
|
|
||||||
|
namespace MWMechanics
|
||||||
|
{
|
||||||
|
|
||||||
|
Objects::Objects()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Objects::addObject(const MWWorld::Ptr& ptr)
|
||||||
|
{
|
||||||
|
MWRender::Animation *anim = MWBase::Environment::get().getWorld()->getAnimation(ptr);
|
||||||
|
if(anim != NULL)
|
||||||
|
mObjects.insert(std::make_pair(ptr, CharacterController(ptr, anim, CharState_Idle, true)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void Objects::removeObject(const MWWorld::Ptr& ptr)
|
||||||
|
{
|
||||||
|
PtrControllerMap::iterator iter = mObjects.find(ptr);
|
||||||
|
if(iter != mObjects.end())
|
||||||
|
mObjects.erase(iter);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Objects::updateObject(const MWWorld::Ptr &old, const MWWorld::Ptr &ptr)
|
||||||
|
{
|
||||||
|
PtrControllerMap::iterator iter = mObjects.find(old);
|
||||||
|
if(iter != mObjects.end())
|
||||||
|
{
|
||||||
|
CharacterController ctrl = iter->second;
|
||||||
|
mObjects.erase(iter);
|
||||||
|
|
||||||
|
ctrl.updatePtr(ptr);
|
||||||
|
mObjects.insert(std::make_pair(ptr, ctrl));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Objects::dropObjects (const MWWorld::Ptr::CellStore *cellStore)
|
||||||
|
{
|
||||||
|
PtrControllerMap::iterator iter = mObjects.begin();
|
||||||
|
while(iter != mObjects.end())
|
||||||
|
{
|
||||||
|
if(iter->first.getCell()==cellStore)
|
||||||
|
mObjects.erase(iter++);
|
||||||
|
else
|
||||||
|
++iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Objects::update(float duration, bool paused)
|
||||||
|
{
|
||||||
|
if(!paused)
|
||||||
|
{
|
||||||
|
for(PtrControllerMap::iterator iter(mObjects.begin());iter != mObjects.end();++iter)
|
||||||
|
{
|
||||||
|
Movement movement;
|
||||||
|
iter->second.update(duration, movement);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Objects::playAnimationGroup(const MWWorld::Ptr& ptr, const std::string& groupName, int mode, int number)
|
||||||
|
{
|
||||||
|
PtrControllerMap::iterator iter = mObjects.find(ptr);
|
||||||
|
if(iter != mObjects.end())
|
||||||
|
iter->second.playGroup(groupName, mode, number);
|
||||||
|
}
|
||||||
|
void Objects::skipAnimation(const MWWorld::Ptr& ptr)
|
||||||
|
{
|
||||||
|
PtrControllerMap::iterator iter = mObjects.find(ptr);
|
||||||
|
if(iter != mObjects.end())
|
||||||
|
iter->second.skipAnim();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
45
apps/openmw/mwmechanics/objects.hpp
Normal file
45
apps/openmw/mwmechanics/objects.hpp
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
#ifndef GAME_MWMECHANICS_ACTIVATORS_H
|
||||||
|
#define GAME_MWMECHANICS_ACTOVATRS_H
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
#include "character.hpp"
|
||||||
|
|
||||||
|
namespace MWWorld
|
||||||
|
{
|
||||||
|
class Ptr;
|
||||||
|
class CellStore;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace MWMechanics
|
||||||
|
{
|
||||||
|
class Objects
|
||||||
|
{
|
||||||
|
typedef std::map<MWWorld::Ptr,CharacterController> PtrControllerMap;
|
||||||
|
PtrControllerMap mObjects;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Objects();
|
||||||
|
|
||||||
|
void addObject (const MWWorld::Ptr& ptr);
|
||||||
|
///< Register an animated object
|
||||||
|
|
||||||
|
void removeObject (const MWWorld::Ptr& ptr);
|
||||||
|
///< Deregister an object
|
||||||
|
|
||||||
|
void updateObject(const MWWorld::Ptr &old, const MWWorld::Ptr& ptr);
|
||||||
|
///< Updates an object with a new Ptr
|
||||||
|
|
||||||
|
void dropObjects(const MWWorld::CellStore *cellStore);
|
||||||
|
///< Deregister all objects in the given cell.
|
||||||
|
|
||||||
|
void update(float duration, bool paused);
|
||||||
|
///< Update object animations
|
||||||
|
|
||||||
|
void playAnimationGroup(const MWWorld::Ptr& ptr, const std::string& groupName, int mode, int number);
|
||||||
|
void skipAnimation(const MWWorld::Ptr& ptr);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in a new issue