ecs-test/ecs/physics_system.odin
2025-08-23 23:54:00 +02:00

34 lines
779 B
Odin

package ecs
Vec3 :: distinct [3]f32
Gravity :: struct {
force: Vec3
}
RigidBody :: struct {
velocity: Vec3,
acceleration: Vec3,
}
Transform :: struct {
position: Vec3,
rotation: Vec3,
scale: Vec3,
}
PhysicsSystem :: struct {
using base: SystemBase,
}
physics_system_update :: proc(physics_system: ^PhysicsSystem, coordinator: ^Coordinator, dt: f32) {
for entity in physics_system.entities {
rigid_body := coordinator_get_component(RigidBody, coordinator, entity)
transform := coordinator_get_component(Transform, coordinator, entity)
gravity := coordinator_get_component(Gravity, coordinator, entity)
transform.position += rigid_body.velocity * dt
rigid_body.velocity += gravity.force * dt
}
}