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