Danbias/Code/GamePhysics/Implementation/SimpleRigidBody.h

76 lines
2.1 KiB
C
Raw Normal View History

#ifndef OYSTER_PHYSICS_SIMPLE_RIGIDBODY_H
#define OYSTER_PHYSICS_SIMPLE_RIGIDBODY_H
#include "..\PhysicsAPI.h"
2014-02-09 21:24:09 +01:00
#include <btBulletDynamicsCommon.h>
2014-02-10 13:55:01 +01:00
namespace Oyster
{
namespace Physics
{
2014-02-10 13:55:01 +01:00
class SimpleRigidBody : public ICustomBody
{
public:
SimpleRigidBody();
virtual ~SimpleRigidBody();
2014-02-10 14:50:40 +01:00
State GetState() const;
State& GetState( State &targetMem ) const;
void SetState( const State &state );
2014-02-12 08:50:10 +01:00
void ApplyImpulse(Math::Float3 impulse);
2014-02-10 13:55:01 +01:00
void SetCollisionShape(btCollisionShape* shape);
void SetMotionState(btDefaultMotionState* motionState);
void SetRigidBody(btRigidBody* rigidBody);
void SetSubscription(EventAction_AfterCollisionResponse function);
void SetSubscription(EventAction_Move function);
void SetLinearVelocity(Math::Float3 velocity);
void SetPosition(Math::Float3 position);
void SetRotation(Math::Float4 quaternion);
void SetRotation(Math::Quaternion quaternion);
void SetRotation(Math::Float3 eulerAngles);
void SetAngularFactor(Math::Float factor);
2014-02-11 13:09:46 +01:00
void SetGravity(Math::Float3 gravity);
void SetUpAndRight(::Oyster::Math::Float3 up, ::Oyster::Math::Float3 right);
void SetUpAndForward(::Oyster::Math::Float3 up, ::Oyster::Math::Float3 forward);
Math::Float4x4 GetRotation() const;
2014-02-11 13:53:44 +01:00
Math::Float4 GetRotationAsAngularAxis();
Math::Float4x4 GetOrientation() const;
Math::Float4x4 GetView() const;
Math::Float4x4 GetView( const ::Oyster::Math::Float3 &offset ) const;
2014-02-10 13:55:01 +01:00
void CallSubscription_AfterCollisionResponse(ICustomBody* bodyA, ICustomBody* bodyB, Math::Float kineticEnergyLoss);
void CallSubscription_Move();
btCollisionShape* GetCollisionShape() const;
btDefaultMotionState* GetMotionState() const;
btRigidBody* GetRigidBody() const;
void SetCustomTag( void *ref );
void* GetCustomTag() const;
private:
2014-02-11 13:09:46 +01:00
2014-02-10 13:55:01 +01:00
btCollisionShape* collisionShape;
btDefaultMotionState* motionState;
btRigidBody* rigidBody;
Struct::CustomBodyState state;
EventAction_AfterCollisionResponse afterCollision;
EventAction_Move onMovement;
void *customTag;
2014-02-11 13:09:46 +01:00
::Oyster::Math::Float3 gravity;
2014-02-10 13:55:01 +01:00
};
}
}
#endif