1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-26 09:35:28 +00:00
OpenMW/apps/openmw/mwmechanics/movementsolver.hpp
Chris Robinson 39cf7b0b42 Pass the Ptr of the object being moved to the move method
This prevents having to store another copy of it, which risks getting out of
sync.
2013-02-04 11:17:48 -08:00

46 lines
1.2 KiB
C++

#ifndef GAME_MWMECHANICS_MOVEMENTSOLVER_H
#define GAME_MWMECHANICS_MOVEMENTSOLVER_H
#include <OgreVector3.h>
namespace MWWorld
{
class Ptr;
}
namespace OEngine
{
namespace Physic
{
class PhysicEngine;
class PhysicActor;
}
}
namespace MWMechanics
{
class MovementSolver
{
public:
MovementSolver();
virtual ~MovementSolver();
Ogre::Vector3 move(const MWWorld::Ptr &ptr, const Ogre::Vector3 &movement, float time, const Ogre::Vector3 &halfExtents);
private:
bool stepMove(Ogre::Vector3& position, const Ogre::Vector3 &velocity, float remainingTime, float verticalRotation, const Ogre::Vector3 &halfExtents, bool isInterior);
void clipVelocity(const Ogre::Vector3& in, const Ogre::Vector3& normal, Ogre::Vector3& out, const float overbounce);
void projectVelocity(Ogre::Vector3& velocity, const Ogre::Vector3& direction);
float getSlope(const Ogre::Vector3 &normal);
OEngine::Physic::PhysicEngine *mEngine;
OEngine::Physic::PhysicActor *mPhysicActor;
float verticalVelocity;
};
}
#endif /* GAME_MWMECHANICS_MOVEMENTSOLVER_H */