]> git.lizzy.rs Git - nothing.git/blob - src/game/level/rigid_bodies.h
Merge pull request #1046 from tsoding/704
[nothing.git] / src / game / level / rigid_bodies.h
1 #ifndef RIGID_BODIES_H_
2 #define RIGID_BODIES_H_
3
4 #include "math/mat3x3.h"
5
6 typedef struct RigidBodies RigidBodies;
7 typedef struct Camera Camera;
8 typedef struct Platforms Platforms;
9 typedef struct LineStream LineStream;
10
11 typedef size_t RigidBodyId;
12
13 RigidBodies *create_rigid_bodies(size_t capacity);
14 void destroy_rigid_bodies(RigidBodies *rigid_bodies);
15
16 int rigid_bodies_collide(RigidBodies *rigid_bodies,
17                          const Platforms *platforms);
18
19 int rigid_bodies_update(RigidBodies *rigid_bodies,
20                         RigidBodyId id,
21                         float delta_time);
22
23 int rigid_bodies_render(RigidBodies *rigid_bodies,
24                         RigidBodyId id,
25                         Color color,
26                         Camera *camera);
27 RigidBodyId rigid_bodies_add(RigidBodies *rigid_bodies,
28                              Rect rect);
29 void rigid_bodies_remove(RigidBodies *rigid_bodies,
30                          RigidBodyId id);
31
32 Rect rigid_bodies_hitbox(const RigidBodies *rigid_bodies,
33                          RigidBodyId id);
34
35 void rigid_bodies_move(RigidBodies *rigid_bodies,
36                        RigidBodyId id,
37                        Vec movement);
38
39 int rigid_bodies_touches_ground(const RigidBodies *rigid_bodies,
40                                 RigidBodyId id);
41
42 void rigid_bodies_apply_force(RigidBodies * rigid_bodies,
43                               RigidBodyId id,
44                               Vec force);
45
46 void rigid_bodies_apply_omniforce(RigidBodies *rigid_bodies,
47                                   Vec force);
48
49 void rigid_bodies_transform_velocity(RigidBodies *rigid_bodies,
50                                      RigidBodyId id,
51                                      mat3x3 trans_mat);
52
53 void rigid_bodies_teleport_to(RigidBodies *rigid_bodies,
54                               RigidBodyId id,
55                               Vec position);
56
57 void rigid_bodies_damper(RigidBodies *rigid_bodies,
58                          RigidBodyId id,
59                          Vec v);
60
61 void rigid_bodies_disable(RigidBodies *rigid_bodies,
62                           RigidBodyId id,
63                           bool disabled);
64
65 #endif  // RIGID_BODIES_H_