MEM_DEBUG :: false; #if MEM_DEBUG { #import "Basic"()(MEMORY_DEBUGGER=true); } else { #import "Basic"; } #import "Math"; #import "Input"; #import "Hash_Table"; #import "Hash"; #import "Simple_Package_Reader"; String :: #import "String"; Jaison :: #import "Jaison"; stbi :: #import "stb_image"; #load "pseudophysics/core.jai"; #load "trile.jai"; #load "rendering/rendering.jai"; #load "input/hotkeys.jai"; #load "ui/ui.jai"; #load "editor/editor.jai"; #load "time.jai"; #load "events.jai"; #load "load.jai"; #load "ray.jai"; #load "world.jai"; #if USE_SAMPLE_GAME { #load "../sample_game/game.jai"; } else { #load "../game/game.jai"; } last_frame_time : float64; // timestamp of the last frame delta\ _time : float64; latest_frametime : float64; // latest frame generation duration V_MAJOR :: 0; V_MINOR :: 6; state: struct { pass_action_clear : sg_pass_action; pass_action_clear_gbuf : sg_pass_action; pass_action : sg_pass_action; dpi_scale : float; fons : *FONScontext; font_default : Ui_Font; }; Window_Info :: struct { width : s32; height : s32; title : *u8; }; get_window_info :: () -> Window_Info { return Window_Info.{ 1920, 1080, "trueno!" }; } round_pow2 :: (v: float) -> s32 { vi := (cast(u32) v) - 1; for i : 0..4 { vi |= (vi >> (1< (1.0/60.0) { game_tick(1.0/60.0); delta_time_accumulator -= (1.0/60.0); input_per_frame_event_and_flag_update(); } } fonsClearState(state.fons); for event: Input.events_this_frame { GR.getrect_handle_event(event); } tick_ui(); // This populates our render task queue. if !in_editor_view then game_draw(); ui_clear_mouse_occluders(); ui_pass(); prepare_text(debug_font, tprint("frametime: % ms", latest_frametime * 1000)); draw_prepared_text(debug_font, 10, 10, .{0.0, 1.0, 0.0, 1.0}); draw_editor(); render(); #if MEM_DEBUG { memory_visualizer_per_frame_update(); } #if OS != .WASM { profiler_update(); } reset_temporary_storage(); frame_end_time := get_time(); latest_frametime = frame_end_time - frame_start_time; } cleanup :: () { sg_shutdown(); } get_window_size :: () -> (s32, s32) { return sapp_width(), sapp_height(); }