package main import rl "vendor:raylib" SCREEN_W :: 1280 SCREEN_H :: 720 TARGET_FPS :: 60 main :: proc() { rl.InitWindow(SCREEN_W, SCREEN_H, "Iso Arena 3D") rl.SetTargetFPS(TARGET_FPS) defer rl.CloseWindow() camera := rl.Camera3D { position = {0, 80, 80}, target = {0, 0, 0}, up = {0, 1, 0}, fovy = 400, projection = .ORTHOGRAPHIC, } state := GameState { camera = camera, } state.collisions = make([dynamic]CollisionPair) defer delete(state.collisions) state.player = spawn(&state, make_player()) spawn(&state, make_enemy({200, 200})) spawn(&state, make_enemy({-200, 200})) spawn(&state, make_enemy({200, -200})) for !rl.WindowShouldClose() { dt := rl.GetFrameTime() sys_input(&state, dt) sys_update(&state, dt) sys_sweep(&state) if pe := get_entity(&state, state.player); pe != nil { p := get_base(pe).pos state.camera.target = {p.x, 0, p.y} state.camera.position = state.camera.target + {600, 600, 600} } sys_draw(&state) } }