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