working physics
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
//================= Copyright kotofyt, All rights reserved ==================//
|
||||
//
|
||||
// Purpose: Wrap rapier bindings into C++
|
||||
//
|
||||
//===========================================================================//
|
||||
|
||||
#include "physics.h"
|
||||
#define PHYSICS_OBJECT_DEFINED
|
||||
#include "iphysics.h"
|
||||
#include "tier1/interface.h"
|
||||
|
||||
class CRapierPhysicsBody: public IPhysicsBody
|
||||
{
|
||||
public:
|
||||
virtual void SetPosition( Vector vPosition ) override
|
||||
{
|
||||
|
||||
CRapierPhysicsBody_SetPosition(m_pBody, vPosition.x, vPosition.y, vPosition.z);
|
||||
}
|
||||
|
||||
virtual void SetRotation( Quat vRotation ) override
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
virtual void SetGravityScale( float fScale ) override
|
||||
{
|
||||
|
||||
}
|
||||
RapierPhysicsBody_t *m_pBody;
|
||||
|
||||
};
|
||||
class CRapierPhysicsWorld: public IPhysicsWorld
|
||||
{
|
||||
public:
|
||||
virtual void Frame( float fDelta ) override
|
||||
{
|
||||
CRapierPhysicsWorld_Frame(m_pWorld, fDelta);
|
||||
}
|
||||
virtual IPhysicsBody *CreateRigidBody( HCollider hCollider, EPhysicsBodyType eType) override
|
||||
{
|
||||
RapierPhysicsBody_t *pBody = CRapierPhysicsWorld_CreateRigidBody(m_pWorld, (RapierCollider_t*)hCollider, eType);
|
||||
if (!pBody)
|
||||
return NULL;
|
||||
CRapierPhysicsBody *pPhysicsBody = new CRapierPhysicsBody;
|
||||
pPhysicsBody->m_pBody = pBody;
|
||||
return pPhysicsBody;
|
||||
}
|
||||
|
||||
virtual void DestroyPhysicsBody( IPhysicsBody *pBody ) override
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
virtual void SetGravity( float fGravity ) override
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
RapierWorld_t *m_pWorld;
|
||||
};
|
||||
|
||||
class CRapierPhysics: public IPhysics
|
||||
{
|
||||
public:
|
||||
CRapierPhysics()
|
||||
{
|
||||
m_pRustHandle = CRapierPhysics_New();
|
||||
}
|
||||
|
||||
virtual HShape CreateBall( BallShape_t ball ) override
|
||||
{
|
||||
return CRapierPhysics_CreateBall(m_pRustHandle, ball);
|
||||
}
|
||||
|
||||
virtual HShape CreateCube( CuboidShape_t ball ) override
|
||||
{
|
||||
return CRapierPhysics_CreateCube(m_pRustHandle, ball);
|
||||
}
|
||||
|
||||
virtual void DestroyShape( HShape hShape ) override
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
virtual HCollider CreateCollider( HShape hShape ) override
|
||||
{
|
||||
return CRapierPhysics_CreateCollider(m_pRustHandle, (RapierShape_t*)hShape);
|
||||
}
|
||||
|
||||
|
||||
virtual IPhysicsWorld *CreateWorld() override
|
||||
{
|
||||
RapierWorld_t *pWorld = CRapierPhysics_CreateWorld(m_pRustHandle);
|
||||
if (!pWorld)
|
||||
return NULL;
|
||||
|
||||
CRapierPhysicsWorld *pPhysicsWorld = new CRapierPhysicsWorld;
|
||||
pPhysicsWorld->m_pWorld = pWorld;
|
||||
return pPhysicsWorld;
|
||||
}
|
||||
|
||||
virtual void DestroyWorld( IPhysicsWorld *pWorld ) override
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
RapierPhysics_t *m_pRustHandle;
|
||||
};
|
||||
|
||||
EXPOSE_INTERFACE(CRapierPhysics, IPhysics, PHYSICS_INTERFACE_VERSION)
|
||||
|
||||
Reference in New Issue
Block a user