From 1e2d9a7067ad335e5cba7fe99a25d26bec93b9b3 Mon Sep 17 00:00:00 2001 From: Sara Date: Wed, 25 Oct 2023 11:23:52 +0200 Subject: [PATCH] cleanup in physics entity and physics world --- src/physics_entity.c | 1 - src/physics_world.c | 19 ++++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/physics_entity.c b/src/physics_entity.c index 8c7c672..f193456 100644 --- a/src/physics_entity.c +++ b/src/physics_entity.c @@ -93,7 +93,6 @@ void physics_entity_update(PhysicsEntity self) { rigidbody_collect_contacts(body); - List* contacts = rigidbody_get_contacts(body); if(contacts->len > 0) { physics_entity_apply_collision_forces(self, contacts); diff --git a/src/physics_world.c b/src/physics_world.c index 2ad33bc..a8ed3fc 100644 --- a/src/physics_world.c +++ b/src/physics_world.c @@ -74,7 +74,7 @@ void physics_world_remove_entity(PhysicsEntity entity) { ASSERT_RETURN(0,, "Physics entity with data at %p is not registered in physics world", entity.data); } -static +static inline void _internal_physics_world_resize_maps(size_t minimum) { if(minimum < _world_maps_cap) { return; @@ -99,7 +99,7 @@ void physics_world_add_map(Tilemap* map) { ++_world_maps_len; } -static +static inline void _internal_physics_world_remove_map(Tilemap** at) { Tilemap** from = at + 1; memmove(at, from, (at - _world_maps + _world_bodies_len) * sizeof(Tilemap*)); @@ -118,7 +118,7 @@ void physics_world_remove_map(Tilemap* map) { ASSERT_RETURN(0,, "Physics tilemap with data at %p is not registered in physics world and cannot be removed.", map); } -static +static inline void _internal_physics_narrow_collision() { PhysicsEntity* end = _world_bodies + _world_bodies_len; PhysicsEntity* half_end = _world_bodies + _world_bodies_len/2; @@ -136,7 +136,7 @@ void _internal_physics_narrow_collision() { } } -static +static inline void _internal_tilemap_entity_collision_check(Tilemap* map, PhysicsEntity entity) { Collision collision_a; Collision collision_b; @@ -154,7 +154,7 @@ void _internal_tilemap_entity_collision_check(Tilemap* map, PhysicsEntity entity } } -static +static inline void _internal_physics_tilemap_collision() { PhysicsEntity* bodies_end = _world_bodies + _world_bodies_len; Tilemap** maps_end = _world_maps + _world_maps_len; @@ -165,7 +165,7 @@ void _internal_physics_tilemap_collision() { } } -static +static inline void _internal_physics_apply() { PhysicsEntity* end = _world_bodies + _world_bodies_len; @@ -174,10 +174,15 @@ void _internal_physics_apply() { } } -void physics_world_tick() { +static inline +void _internal_physics_integrate_forces() { PhysicsEntity* end = _world_bodies + _world_bodies_len; for(PhysicsEntity* entity = _world_bodies; entity < end; ++entity) rigidbody_integrate_forces(entity->tc->get_rigidbody(entity->data)); +} + +void physics_world_tick() { + _internal_physics_integrate_forces(); _internal_physics_narrow_collision(); _internal_physics_tilemap_collision(); _internal_physics_apply();