package ecs import sa "../sokol/app" InputSystem :: struct { using _: SystemBase, } input_system_update :: proc(input_system: ^InputSystem, coordinator: ^Coordinator, event: ^sa.Event) { for entity_id in input_system.entities { input := coordinator_get_component(coordinator, InputComponent, entity_id) #partial switch event.type { case .MOUSE_MOVE: input.mouse_movement += {event.mouse_dx, event.mouse_dy} case .KEY_DOWN: input.key_down[event.key_code] = true case .KEY_UP: input.key_down[event.key_code] = false } if input.key_down[.ESCAPE] do sa.quit() } } input_system_mouse_reset :: proc(input_system: ^InputSystem, coordinator: ^Coordinator) { for entity_id in input_system.entities { input_id := coordinator_get_component(coordinator, InputComponent, entity_id) input_id.mouse_movement = { 0, 0 } } }