cleanup in physics entity and physics world
This commit is contained in:
parent
3263c87cca
commit
1e2d9a7067
|
@ -93,7 +93,6 @@ void physics_entity_update(PhysicsEntity self) {
|
||||||
|
|
||||||
rigidbody_collect_contacts(body);
|
rigidbody_collect_contacts(body);
|
||||||
|
|
||||||
|
|
||||||
List* contacts = rigidbody_get_contacts(body);
|
List* contacts = rigidbody_get_contacts(body);
|
||||||
if(contacts->len > 0) {
|
if(contacts->len > 0) {
|
||||||
physics_entity_apply_collision_forces(self, contacts);
|
physics_entity_apply_collision_forces(self, contacts);
|
||||||
|
|
|
@ -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);
|
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) {
|
void _internal_physics_world_resize_maps(size_t minimum) {
|
||||||
if(minimum < _world_maps_cap) {
|
if(minimum < _world_maps_cap) {
|
||||||
return;
|
return;
|
||||||
|
@ -99,7 +99,7 @@ void physics_world_add_map(Tilemap* map) {
|
||||||
++_world_maps_len;
|
++_world_maps_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static inline
|
||||||
void _internal_physics_world_remove_map(Tilemap** at) {
|
void _internal_physics_world_remove_map(Tilemap** at) {
|
||||||
Tilemap** from = at + 1;
|
Tilemap** from = at + 1;
|
||||||
memmove(at, from, (at - _world_maps + _world_bodies_len) * sizeof(Tilemap*));
|
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);
|
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() {
|
void _internal_physics_narrow_collision() {
|
||||||
PhysicsEntity* end = _world_bodies + _world_bodies_len;
|
PhysicsEntity* end = _world_bodies + _world_bodies_len;
|
||||||
PhysicsEntity* half_end = _world_bodies + _world_bodies_len/2;
|
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) {
|
void _internal_tilemap_entity_collision_check(Tilemap* map, PhysicsEntity entity) {
|
||||||
Collision collision_a;
|
Collision collision_a;
|
||||||
Collision collision_b;
|
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() {
|
void _internal_physics_tilemap_collision() {
|
||||||
PhysicsEntity* bodies_end = _world_bodies + _world_bodies_len;
|
PhysicsEntity* bodies_end = _world_bodies + _world_bodies_len;
|
||||||
Tilemap** maps_end = _world_maps + _world_maps_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() {
|
void _internal_physics_apply() {
|
||||||
PhysicsEntity* end = _world_bodies + _world_bodies_len;
|
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;
|
PhysicsEntity* end = _world_bodies + _world_bodies_len;
|
||||||
for(PhysicsEntity* entity = _world_bodies; entity < end; ++entity)
|
for(PhysicsEntity* entity = _world_bodies; entity < end; ++entity)
|
||||||
rigidbody_integrate_forces(entity->tc->get_rigidbody(entity->data));
|
rigidbody_integrate_forces(entity->tc->get_rigidbody(entity->data));
|
||||||
|
}
|
||||||
|
|
||||||
|
void physics_world_tick() {
|
||||||
|
_internal_physics_integrate_forces();
|
||||||
_internal_physics_narrow_collision();
|
_internal_physics_narrow_collision();
|
||||||
_internal_physics_tilemap_collision();
|
_internal_physics_tilemap_collision();
|
||||||
_internal_physics_apply();
|
_internal_physics_apply();
|
||||||
|
|
Loading…
Reference in a new issue