package ecs import "core:log" import program_config "../config" PhysicsSystem :: struct { using _: SystemBase, } physics_system_update :: proc(physics_system: ^PhysicsSystem, coordinator: ^Coordinator, dt: f32) { entities_to_delete := make([dynamic]EntityID) defer delete(entities_to_delete) for entity_id in physics_system.entities { rigid_body := coordinator_get_component(coordinator, RigidBodyComponent, entity_id) transform := coordinator_get_component(coordinator, TransformComponent, entity_id) gravity := coordinator_get_component(coordinator, GravityComponent, entity_id) transform.position += rigid_body.velocity * dt rigid_body.velocity += gravity.force * dt if transform.position.y < program_config.Y_DESPAWN_CUTOFF { append(&entities_to_delete, entity_id) } } for entity in entities_to_delete { coordinator_destroy_entity(coordinator, entity) } }