43 lines
1.3 KiB
C
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
|