#ifndef PHYSICS_H #define PHYSICS_H #include "tier0/lib.h" #include "stdint.h" #include "tier1/utlvector.h" typedef void Collider; typedef void RigidBodyHandle; template struct Point { T x, y, z; }; typedef struct u128 { uint64_t a; uint64_t b; } u128; #include "physics_gen.h" extern funnyphysics *px; class CPxCollider { public: virtual void Spawn( float fFriction = 0.5 ) = 0; virtual void Destroy( void ); Collider *m_pCollider; }; class CPxBallMesh: public CPxCollider { public: virtual void Spawn( float fFriction = 0.5 ) override; virtual void Destroy( void ) override; float m_fRadius; }; class CPxBoxMesh: public CPxCollider { public: virtual void Spawn( float fFriction = 0.5 ) override; virtual void Destroy( void ) override; float m_fRadius[3]; }; class CPxTriangleMesh: public CPxCollider { public: virtual void Spawn( float fFriction = 0.5 ) override; virtual void Destroy( void ) override; }; class CPxRigidKinematicPosition { public: void Spawn( CPxCollider *pCollider, px_matrix matrix, px_rigidbody_params params ); px_vec3 GetPosition( void ); px_matrix GetMatrix ( void ); void Destroy( void ); CPxCollider *m_pCollider; RigidBodyHandle *m_pRigidBody; }; class CPxRigidBody { public: void Spawn( CPxCollider *pCollider, px_matrix matrix, px_rigidbody_params params ); px_vec3 GetPosition( void ); px_vec3 GetVelocity( void ); void SetPosition( px_vec3 position ); void SetVelocity( px_vec3 velocity ); px_matrix GetMatrix ( void ); void Destroy( void ); CPxCollider *m_pCollider; RigidBodyHandle *m_pRigidBody; }; class CPxStaticBody { public: void Spawn( CPxCollider *pCollider, px_matrix matrix, px_rigidbody_params params ); px_vec3 GetPosition( void ); px_matrix GetMatrix ( void ); void Destroy( void ); CPxCollider *m_pCollider; }; class CPxFixedBody { public: void Spawn( CPxCollider *pCollider, px_matrix matrix, px_rigidbody_params params ); px_vec3 GetPosition( void ); px_matrix GetMatrix ( void ); void Destroy( void ); CPxCollider *m_pCollider; }; #endif