fencer/src/rigidbody.h
2023-10-19 13:51:17 +02:00

43 lines
1.3 KiB
C

#ifndef _fencer_rigidbody_h
#define _fencer_rigidbody_h
#include "shape.h"
#include "transformable.h"
#include "list.h"
struct Collision;
typedef struct RigidBody RigidBody;
// Referenced transform is stored but not owned by the rigidbody.
extern RigidBody* rigidbody_make(Transformable transform);
extern void rigidbody_destroy(RigidBody* self);
extern void rigidbody_add_contact(RigidBody* self, struct Collision hit);
extern void rigidbody_solve_contacts(RigidBody* self);
extern void rigidbody_apply_physics(RigidBody* self);
extern float rigidbody_get_mass(const RigidBody* self);
extern void rigidbody_set_mass(RigidBody* self, float mass);
extern void rigidbody_add_impulse(RigidBody* self, Vector force, int use_mass);
extern void rigidbody_accelerate(RigidBody* self, Vector force, int use_mass);
extern int rigidbody_is_static(const RigidBody* self);
extern void rigidbody_set_static(RigidBody* self, int is_static);
extern Vector rigidbody_get_velocity(const RigidBody* self);
extern void rigidbody_set_velocity(RigidBody* self, Vector velocity);
extern Vector rigidbody_get_force(RigidBody* self);
extern void rigidbody_debug_draw_contacts(RigidBody* self);
extern Transform* rigidbody_get_transform(RigidBody* self);
impl_Transformable_for(RigidBody,
rigidbody_get_transform
)
#endif // !_fencer_rigidbody_h