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