From 9939c84f094a792a612c0aaf1fa1603e1c280bbf Mon Sep 17 00:00:00 2001 From: Daniel Bross Date: Sun, 13 Oct 2024 00:54:26 +0200 Subject: [PATCH] Compiles again --- .build/.added_strings_w3.jai | 169 ++++++++++++++++++----------------- core/math.jai | 4 + core/particles.jai | 12 +-- core/scene.jai | 12 +-- editor/editor.jai | 2 - editor/editor_ui.jai | 12 +-- metaprogram.jai | 10 +-- module.jai | 40 +++++++-- networking/networking.jai | 58 ++++++------ 9 files changed, 172 insertions(+), 147 deletions(-) diff --git a/.build/.added_strings_w3.jai b/.build/.added_strings_w3.jai index 97fedb5..80887c9 100644 --- a/.build/.added_strings_w3.jai +++ b/.build/.added_strings_w3.jai @@ -5,6 +5,11 @@ // GAME_NAME :: "FPS"; +// +// String added via add_build_string() from c:/Personal/games/FPS/modules/Coven/metaprogram.jai:33. +// +#import "Bucket_Array"; + // // String added via add_build_string() from c:/Personal/games/FPS/modules/Coven/metaprogram.jai:246. // @@ -20,14 +25,14 @@ serialize_entity :: (e: *Entity, path: string) { } - write_entire_file(tprint("%/%.ent", path, e.id), builder_to_string(*builder)); + File.write_entire_file(tprint("%/%.ent", path, e.id), builder_to_string(*builder)); } // // String added via add_build_string() from c:/Personal/games/FPS/modules/Coven/metaprogram.jai:257. // deserialize_entity :: (scene: *Scene, path: string) -> *Entity { - content := read_entire_file(path); + content := File.read_entire_file(path); if content.count == 0 return null; lines := split(content, "\n"); @@ -55,19 +60,19 @@ deserialize_entity :: (scene: *Scene, path: string) -> *Entity { // new_block :: (scene: *Scene = null) -> *Block { _scene := scene; if _scene == null { -_scene = game_state.current_scene; } +_scene = current_scene; } p, locator := find_and_occupy_empty_slot(*_scene.by_type._Block); p._locator = locator; register_entity(_scene, p); p.transform = create_identity_transform(); init_entity(p); return p; } new_character :: (scene: *Scene = null) -> *Character { _scene := scene; if _scene == null { -_scene = game_state.current_scene; } +_scene = current_scene; } p, locator := find_and_occupy_empty_slot(*_scene.by_type._Character); p._locator = locator; register_entity(_scene, p); p.transform = create_identity_transform(); init_entity(p); return p; } new_item :: (scene: *Scene = null) -> *Item { _scene := scene; if _scene == null { -_scene = game_state.current_scene; } +_scene = current_scene; } p, locator := find_and_occupy_empty_slot(*_scene.by_type._Item); p._locator = locator; register_entity(_scene, p); p.transform = create_identity_transform(); init_entity(p); return p; } new_pistol :: (scene: *Scene = null) -> *Pistol { _scene := scene; if _scene == null { -_scene = game_state.current_scene; } +_scene = current_scene; } p, locator := find_and_occupy_empty_slot(*_scene.by_type._Pistol); p._locator = locator; register_entity(_scene, p); p.transform = create_identity_transform(); init_entity(p); return p; } // @@ -142,82 +147,6 @@ deserialize_entity :: (scene: *Scene, lines: [] string, e: *Item) { } } -// -// String added via add_build_string() from c:/Personal/games/FPS/modules/Coven/metaprogram.jai:270. -// -serialize_entity :: (e: *Block, builder: *String_Builder) { - print_to_builder(builder, "type: Block\n"); - print_to_builder(builder, "entity.enabled: %\n", e.entity.enabled); - print_to_builder(builder, "entity.flags: %\n", e.entity.flags); - print_to_builder(builder, "entity.transform.position.x: %\n", e.entity.transform.position.x); - print_to_builder(builder, "entity.transform.position.y: %\n", e.entity.transform.position.y); - print_to_builder(builder, "entity.transform.position.z: %\n", e.entity.transform.position.z); - print_to_builder(builder, "entity.transform.orientation.x: %\n", e.entity.transform.orientation.x); - print_to_builder(builder, "entity.transform.orientation.y: %\n", e.entity.transform.orientation.y); - print_to_builder(builder, "entity.transform.orientation.z: %\n", e.entity.transform.orientation.z); - print_to_builder(builder, "entity.transform.orientation.w: %\n", e.entity.transform.orientation.w); - print_to_builder(builder, "entity.transform.scale.x: %\n", e.entity.transform.scale.x); - print_to_builder(builder, "entity.transform.scale.y: %\n", e.entity.transform.scale.y); - print_to_builder(builder, "entity.transform.scale.z: %\n", e.entity.transform.scale.z); - print_to_builder(builder, "entity.grid_position.x: %\n", e.entity.grid_position.x); - print_to_builder(builder, "entity.grid_position.y: %\n", e.entity.grid_position.y); - print_to_builder(builder, "entity.grid_position.z: %\n", e.entity.grid_position.z); - print_to_builder(builder, "entity.snap_offset.x: %\n", e.entity.snap_offset.x); - print_to_builder(builder, "entity.snap_offset.y: %\n", e.entity.snap_offset.y); - print_to_builder(builder, "entity.snap_offset.z: %\n", e.entity.snap_offset.z); - print_to_builder(builder, "block_type: %\n", e.block_type); - print_to_builder(builder, "debug_id: %\n", e.debug_id); -} - -// -// String added via add_build_string() from c:/Personal/games/FPS/modules/Coven/metaprogram.jai:270. -// -deserialize_entity :: (scene: *Scene, lines: [] string, e: *Block) { - for line: lines { - values := split(line, ":"); - if values.count == 2 { - if trim(values[0], " ") == { - case "entity.enabled"; - scan2(values[1], "%", *e.entity.enabled); - case "entity.transform.position.x"; - scan2(values[1], "%", *e.entity.transform.position.x); - case "entity.transform.position.y"; - scan2(values[1], "%", *e.entity.transform.position.y); - case "entity.transform.position.z"; - scan2(values[1], "%", *e.entity.transform.position.z); - case "entity.transform.orientation.x"; - scan2(values[1], "%", *e.entity.transform.orientation.x); - case "entity.transform.orientation.y"; - scan2(values[1], "%", *e.entity.transform.orientation.y); - case "entity.transform.orientation.z"; - scan2(values[1], "%", *e.entity.transform.orientation.z); - case "entity.transform.orientation.w"; - scan2(values[1], "%", *e.entity.transform.orientation.w); - case "entity.transform.scale.x"; - scan2(values[1], "%", *e.entity.transform.scale.x); - case "entity.transform.scale.y"; - scan2(values[1], "%", *e.entity.transform.scale.y); - case "entity.transform.scale.z"; - scan2(values[1], "%", *e.entity.transform.scale.z); - case "entity.grid_position.x"; - scan2(values[1], "%", *e.entity.grid_position.x); - case "entity.grid_position.y"; - scan2(values[1], "%", *e.entity.grid_position.y); - case "entity.grid_position.z"; - scan2(values[1], "%", *e.entity.grid_position.z); - case "entity.snap_offset.x"; - scan2(values[1], "%", *e.entity.snap_offset.x); - case "entity.snap_offset.y"; - scan2(values[1], "%", *e.entity.snap_offset.y); - case "entity.snap_offset.z"; - scan2(values[1], "%", *e.entity.snap_offset.z); - case "debug_id"; - scan2(values[1], "%", *e.debug_id); - } - } - } -} - // // String added via add_build_string() from c:/Personal/games/FPS/modules/Coven/metaprogram.jai:270. // @@ -311,6 +240,82 @@ deserialize_entity :: (scene: *Scene, lines: [] string, e: *Pistol) { } } +// +// String added via add_build_string() from c:/Personal/games/FPS/modules/Coven/metaprogram.jai:270. +// +serialize_entity :: (e: *Block, builder: *String_Builder) { + print_to_builder(builder, "type: Block\n"); + print_to_builder(builder, "entity.enabled: %\n", e.entity.enabled); + print_to_builder(builder, "entity.flags: %\n", e.entity.flags); + print_to_builder(builder, "entity.transform.position.x: %\n", e.entity.transform.position.x); + print_to_builder(builder, "entity.transform.position.y: %\n", e.entity.transform.position.y); + print_to_builder(builder, "entity.transform.position.z: %\n", e.entity.transform.position.z); + print_to_builder(builder, "entity.transform.orientation.x: %\n", e.entity.transform.orientation.x); + print_to_builder(builder, "entity.transform.orientation.y: %\n", e.entity.transform.orientation.y); + print_to_builder(builder, "entity.transform.orientation.z: %\n", e.entity.transform.orientation.z); + print_to_builder(builder, "entity.transform.orientation.w: %\n", e.entity.transform.orientation.w); + print_to_builder(builder, "entity.transform.scale.x: %\n", e.entity.transform.scale.x); + print_to_builder(builder, "entity.transform.scale.y: %\n", e.entity.transform.scale.y); + print_to_builder(builder, "entity.transform.scale.z: %\n", e.entity.transform.scale.z); + print_to_builder(builder, "entity.grid_position.x: %\n", e.entity.grid_position.x); + print_to_builder(builder, "entity.grid_position.y: %\n", e.entity.grid_position.y); + print_to_builder(builder, "entity.grid_position.z: %\n", e.entity.grid_position.z); + print_to_builder(builder, "entity.snap_offset.x: %\n", e.entity.snap_offset.x); + print_to_builder(builder, "entity.snap_offset.y: %\n", e.entity.snap_offset.y); + print_to_builder(builder, "entity.snap_offset.z: %\n", e.entity.snap_offset.z); + print_to_builder(builder, "block_type: %\n", e.block_type); + print_to_builder(builder, "debug_id: %\n", e.debug_id); +} + +// +// String added via add_build_string() from c:/Personal/games/FPS/modules/Coven/metaprogram.jai:270. +// +deserialize_entity :: (scene: *Scene, lines: [] string, e: *Block) { + for line: lines { + values := split(line, ":"); + if values.count == 2 { + if trim(values[0], " ") == { + case "entity.enabled"; + scan2(values[1], "%", *e.entity.enabled); + case "entity.transform.position.x"; + scan2(values[1], "%", *e.entity.transform.position.x); + case "entity.transform.position.y"; + scan2(values[1], "%", *e.entity.transform.position.y); + case "entity.transform.position.z"; + scan2(values[1], "%", *e.entity.transform.position.z); + case "entity.transform.orientation.x"; + scan2(values[1], "%", *e.entity.transform.orientation.x); + case "entity.transform.orientation.y"; + scan2(values[1], "%", *e.entity.transform.orientation.y); + case "entity.transform.orientation.z"; + scan2(values[1], "%", *e.entity.transform.orientation.z); + case "entity.transform.orientation.w"; + scan2(values[1], "%", *e.entity.transform.orientation.w); + case "entity.transform.scale.x"; + scan2(values[1], "%", *e.entity.transform.scale.x); + case "entity.transform.scale.y"; + scan2(values[1], "%", *e.entity.transform.scale.y); + case "entity.transform.scale.z"; + scan2(values[1], "%", *e.entity.transform.scale.z); + case "entity.grid_position.x"; + scan2(values[1], "%", *e.entity.grid_position.x); + case "entity.grid_position.y"; + scan2(values[1], "%", *e.entity.grid_position.y); + case "entity.grid_position.z"; + scan2(values[1], "%", *e.entity.grid_position.z); + case "entity.snap_offset.x"; + scan2(values[1], "%", *e.entity.snap_offset.x); + case "entity.snap_offset.y"; + scan2(values[1], "%", *e.entity.snap_offset.y); + case "entity.snap_offset.z"; + scan2(values[1], "%", *e.entity.snap_offset.z); + case "debug_id"; + scan2(values[1], "%", *e.debug_id); + } + } + } +} + // // String added via add_build_string() from c:/Personal/games/FPS/modules/Coven/metaprogram.jai:270. // diff --git a/core/math.jai b/core/math.jai index 270c402..ba1cc27 100644 --- a/core/math.jai +++ b/core/math.jai @@ -81,6 +81,10 @@ operator - :: inline (a: Vector3i, b: Vector3i) -> Vector3i { return .{a.x - b.x, a.y - b.y, a.z - b.z}; } +transform_position :: (position: Vector3, matrix: Matrix4) -> Vector3 { + return to_v3(matrix * to_v4(position)); +} + to_v4 :: (v3: Vector3) -> Vector4 { v4 : Vector4; v4.x = v3.x; diff --git a/core/particles.jai b/core/particles.jai index 8c80c21..cfb9673 100644 --- a/core/particles.jai +++ b/core/particles.jai @@ -36,7 +36,7 @@ Particle_System :: struct { } create_particle_system :: (pipeline: Pipeline_State_Handle, update_func: (*Particle_System, float), owning_entity: *Entity = null, scene: *Scene = null) -> *Particle_System { - lvl := ifx scene == null then game_state.current_scene else scene; + lvl := ifx scene == null then current_scene else scene; particle_system, locator := find_and_occupy_empty_slot(*scene.particle_systems); particle_system._locator = locator; particle_system.vertex_buffer = create_vertex_buffer(renderer, null, size_of(Particle_Vertex) * MAX_PARTICLES, stride=size_of(Particle_Vertex), mappable=true); @@ -60,7 +60,7 @@ spawn_particle :: (system: *Particle_System, position: Vector3, velocity: Vector } update_particle_systems :: (dt: float) { - for *system: game_state.current_scene.particle_systems { + for *system: current_scene.particle_systems { if system.on_particle_update != null { system.on_particle_update(system, dt); } @@ -71,9 +71,9 @@ update_particle_system :: (system: *Particle_System, dt: float) { } prepare_particle_system_for_rendering :: (system: Particle_System) { - up := game_state.camera.up; - right := game_state.camera.right; - forward := game_state.camera.forward; + up := current_scene.camera.up; + right := current_scene.camera.right; + forward := current_scene.camera.forward; rendering_data : [..] Particle_Vertex; rendering_data.allocator = temp; @@ -140,7 +140,7 @@ prepare_particle_system_for_rendering :: (system: Particle_System) { } render_particle_systems :: () { - for system: game_state.current_scene.particle_systems { + for system: current_scene.particle_systems { prepare_particle_system_for_rendering(system); if system.particles.count > 0 { diff --git a/core/scene.jai b/core/scene.jai index 9852b02..bc41976 100644 --- a/core/scene.jai +++ b/core/scene.jai @@ -2,6 +2,8 @@ #load "particles.jai"; #placeholder Entity_Storage; +#placeholder serialize_entity; +#placeholder deserialize_entity; MAX_CACHED_PILES :: 8; @@ -12,8 +14,6 @@ Scene :: struct { particle_systems : Bucket_Array(Particle_System, 64); - bullet_impact_particle_systems : [..] *Particle_System; - by_type : Entity_Storage; pool : Flat_Pool; @@ -58,7 +58,6 @@ load_scene :: (path: string) -> *Scene { } save_scene :: (scene: *Scene, path: string) { - scene.camera = game_state.camera; builder : String_Builder; builder.allocator = temp; @@ -99,7 +98,6 @@ create_scene :: (name: string, max_entities: s64 = 256) -> *Scene { // Assign allocator to everything that needs allocations scene.entities.allocator = scene.allocator; scene.particle_systems.allocator = scene.allocator; - scene.bullet_impact_particle_systems.allocator = scene.allocator; array_reserve(*scene.entities, max_entities); @@ -111,12 +109,6 @@ create_scene :: (name: string, max_entities: s64 = 256) -> *Scene { dir_light_data.direction = scene.directional_light.direction; upload_data_to_buffer(renderer, directional_light_buffer, *dir_light_data, size_of(Directional_Light_Buffer_Data)); - array_resize(*scene.bullet_impact_particle_systems, 32); - - for 0..31 { - scene.bullet_impact_particle_systems[it] = create_particle_system(particle_pipeline, on_update_bullet_hit_particles, null, scene); - } - return scene; } diff --git a/editor/editor.jai b/editor/editor.jai index 95e7b72..1da44a3 100644 --- a/editor/editor.jai +++ b/editor/editor.jai @@ -72,8 +72,6 @@ Editor :: struct { menu_position: Vector2; } -editor : Editor; - update_transform_gizmo :: (ray: Ray, mouse_position: Vector2) -> bool { return false; // selected_entity := engine.editor.selected_entity; diff --git a/editor/editor_ui.jai b/editor/editor_ui.jai index 7e24dd5..a7bb8fd 100644 --- a/editor/editor_ui.jai +++ b/editor/editor_ui.jai @@ -7,7 +7,7 @@ pick_scene_view_at :: (coordinates: Vector2) { hit_entity : *Entity; closest : float = 100000000; - for game_state.current_scene.entities { + for current_scene.entities { if !(it.flags & .RENDERABLE) continue; //if it.flags & Entity_Flags.DELETED || !it.selectable || it.parent != null continue; @@ -64,7 +64,7 @@ editor_ui :: () { //if ui_button_with_texture(editor.icons.play) { // play_current_editor_scene(); //} - ui_label(tprint("Editing '%'", game_state.current_scene.name), .{1,1,1,1}); + ui_label(tprint("Editing '%'", current_scene.name), .{1,1,1,1}); //} //} } @@ -93,7 +93,7 @@ editor_ui :: () { ui_set_next_size_x(.PCT, 1.0); ui_tab_title_bar("ENTITIES"); - for game_state.current_scene.entities { + for current_scene.entities { ui_set_next_padding(20); clicked := false; if it.name.count == 0 { @@ -124,7 +124,7 @@ editor_ui :: () { ui_set_next_size_x(.PCT, 1.0); ui_set_next_size_y(.PCT, 0.9); - state := ui_interactable_texture(get_texture_from_pass("FXAA")); + state := ui_interactable_texture(get_texture_from_pass("UI Blend Pass")); if state.left_mouse_down { //pick_scene_view_at(.{state.normalized_local_mouse_coordinates.x, 1.0 - state.normalized_local_mouse_coordinates.y}); @@ -206,7 +206,7 @@ base_editor_update :: () { camera := *editor.camera; if key_pressed(.CTRL) && key_down(.S) { - save_scene(game_state.current_scene, "../assets/scenes/"); + save_scene(current_scene, "../assets/scenes/"); //show_message("Saved scene"); } @@ -232,7 +232,7 @@ base_editor_update :: () { // editor_undo(); //} - if game_state.mode == .EDITING { + if mode == .EDITING { if key_pressed(.MOUSE_RIGHT) { set_show_cursor(false); // Update camera diff --git a/metaprogram.jai b/metaprogram.jai index c16d38f..8e6d933 100644 --- a/metaprogram.jai +++ b/metaprogram.jai @@ -13,7 +13,7 @@ build :: (main_path: string, game_name: string, working_dir: string = #filepath) opts.output_type = .EXECUTABLE; opts.output_executable_name = game_name; - opts.output_path = "bin/"; + opts.output_path = "../../bin/"; new_path: [..] string; array_add(*new_path, ..opts.import_path); @@ -30,6 +30,7 @@ build :: (main_path: string, game_name: string, working_dir: string = #filepath) set_build_options(opts, w); add_build_string(tprint("GAME_NAME :: \"%\";", game_name), w); + add_build_string("#import \"Bucket_Array\";", w); add_build_file(main_path, w); message_loop(); @@ -164,7 +165,6 @@ generate_serialize_procedure_for_entity :: (code_struct: *Code_Struct) { } note_struct :: (code_struct: *Code_Struct) { - print("Type: %\n", code_struct.defined_type.name); if is_subclass_of(code_struct.defined_type, "Entity") { name := code_struct.defined_type.name; @@ -260,7 +260,7 @@ generate_code :: (w: Workspace) { builder: String_Builder; for entity_type_names { - print_to_builder(*builder, "new_%1 :: (scene: *Scene = null) -> *%2 { _scene := scene;\nif _scene == null { \n_scene = game_state.current_scene; }\np, locator := find_and_occupy_empty_slot(*_scene.by_type._%2); p._locator = locator; register_entity(_scene, p); p.transform = create_identity_transform(); init_entity(p); return p; }\n", to_lower_copy_new(it,, allocator=temp), it); + print_to_builder(*builder, "new_%1 :: (scene: *Scene = null) -> *%2 { _scene := scene;\nif _scene == null { \n_scene = current_scene; }\np, locator := find_and_occupy_empty_slot(*_scene.by_type._%2); p._locator = locator; register_entity(_scene, p); p.transform = create_identity_transform(); init_entity(p); return p; }\n", to_lower_copy_new(it,, allocator=temp), it); } add_build_string(builder_to_string(*builder), w); @@ -308,13 +308,13 @@ serialize_entity :: (e: *Entity, path: string) { %1 } - write_entire_file(tprint("%%/%%.ent", path, e.id), builder_to_string(*builder)); + File.write_entire_file(tprint("%%/%%.ent", path, e.id), builder_to_string(*builder)); } DONE DESERIALIZE_ENTITY :: #string DONE deserialize_entity :: (scene: *Scene, path: string) -> *Entity { - content := read_entire_file(path); + content := File.read_entire_file(path); if content.count == 0 return null; lines := split(content, "\n"); diff --git a/module.jai b/module.jai index 403c4b0..8946916 100644 --- a/module.jai +++ b/module.jai @@ -9,48 +9,71 @@ DEBUG :: true; editor: Editor; } +Engine_Mode :: enum { + PLAYING; + EDITING; +} +mode: Engine_Mode; + window: *Window; renderer: *Renderer; input : Input_State; +current_scene: *Scene; + +camera_buffer : Buffer_Handle; +screen_data_buffer : Buffer_Handle; +directional_light_buffer : Buffer_Handle; time: float; dt: float; quit: bool; +frame_index : u64 = 0; coven_init :: (window_title: string, window_width: u32, window_height: u32, fullscreen: bool) { - window = create_window(GAME_NAME, 1400, xx (1400.0*aspect), true); + window = create_window(window_title, window_width, window_height, fullscreen); renderer = create_renderer(window); renderer.vsync = true; init_input(); init_audio_system(); init_console(); + + ui_init(); } -coven_run :: (update_func: (float)) { +coven_run :: (game_update_proc: (float)) { time = xx seconds_since_init(); while !quit { //reset_temporary_storage(); frame_index += 1; + update_input(); - quit = key_down(.ESCAPE); + + // @Incomplete + if key_pressed(.SHIFT) && key_down(.ESCAPE) { + quit = true; + } now : float = xx seconds_since_init(); dt = now - time; time = now; + update_fps_counter(dt); + update_console(); - update_func(min(0.4, dt)); + ui_begin(); + + game_update_proc(min(0.4, dt)); + + ui_end(); update_audio(dt); render(); - - //SDL_Delay(1); } SDL_DestroyWindow(window); @@ -75,6 +98,9 @@ coven_run :: (update_func: (float)) { #load "core/camera.jai"; #load "core/console.jai"; #load "audio/audio.jai"; +#load "core/fps.jai"; + +#scope_export #import "Bucket_Array"; #import "Basic"; @@ -82,6 +108,6 @@ coven_run :: (update_func: (float)) { #import "System"; #import "Flat_Pool"; #import "Hash_Table"; -#import "File"; +File :: #import "File"; #import "File_Watcher"; #import "File_Utilities"; \ No newline at end of file diff --git a/networking/networking.jai b/networking/networking.jai index f4a06ec..9459429 100644 --- a/networking/networking.jai +++ b/networking/networking.jai @@ -178,8 +178,8 @@ Player_Update_Data :: struct { pitch: float; } -message_mutex: Mutex; -update_mutex: Mutex; +message_mutex: Thread.Mutex; +update_mutex: Thread.Mutex; net_init :: () { net_log("Init\n"); @@ -190,17 +190,17 @@ net_init :: () { net_log("Couldn't initialize Lyn\n"); } - if thread_init(*thread, networking_thread_proc) { - thread_start(*thread);; + if Thread.thread_init(*thread, networking_thread_proc) { + Thread.thread_start(*thread);; } - if thread_init(*message_thread, net_check_for_messages) { - thread_start(*message_thread);; + if Thread.thread_init(*message_thread, net_check_for_messages) { + Thread.thread_start(*message_thread);; } - init(*update_mutex); - init(*message_mutex); - init(*internal_message_mutex); + Thread.init(*update_mutex); + Thread.init(*message_mutex); + Thread.init(*internal_message_mutex); } net_get_state :: () -> Net_Networking_State { @@ -275,7 +275,7 @@ net_log_error :: inline (message: string, args: .. Any) { log_error(tprint("NET: %", message), args); } -networking_thread_proc :: (thread: *Thread) -> s64 { +networking_thread_proc :: (thread: *Thread.Thread) -> s64 { while true { update_networking(); sleep_milliseconds(10); @@ -283,12 +283,12 @@ networking_thread_proc :: (thread: *Thread) -> s64 { return 0; } -net_check_for_messages :: (thread: *Thread) -> s64 { +net_check_for_messages :: (thread: *Thread.Thread) -> s64 { while true { success, message, address := net_read_message(net_data.socket); if success { - lock(*internal_message_mutex); - defer unlock(*internal_message_mutex); + Thread.lock(*internal_message_mutex); + defer Thread.unlock(*internal_message_mutex); pending: Internal_Pending_Message; pending.message = message; @@ -460,29 +460,29 @@ on_message_received :: (message: Net_Message, address: Net_Address) { } case .START_GAME; { { - lock(*update_mutex); - defer unlock(*update_mutex); + Thread.lock(*update_mutex); + defer Thread.unlock(*update_mutex); array_add(*pending_net_messages, message); } } case .SPAWN_ENTITY; { { - lock(*update_mutex); - defer unlock(*update_mutex); + Thread.lock(*update_mutex); + defer Thread.unlock(*update_mutex); array_add(*pending_net_messages, message); } } case .TRANSFORM_UPDATE; { - lock(*update_mutex); - defer unlock(*update_mutex); + Thread.lock(*update_mutex); + defer Thread.unlock(*update_mutex); array_add(*pending_net_messages, message); } case; { - lock(*update_mutex); - defer unlock(*update_mutex); + Thread.lock(*update_mutex); + defer Thread.unlock(*update_mutex); array_add(*pending_net_messages, message); } @@ -493,8 +493,8 @@ update_networking :: () { reset_temporary_storage(); { - lock(*message_mutex); - defer unlock(*message_mutex); + Thread.lock(*message_mutex); + defer Thread.unlock(*message_mutex); for * messages_to_send { if net_is_client() { @@ -507,8 +507,8 @@ update_networking :: () { } { - lock(*internal_message_mutex); - defer unlock(*internal_message_mutex); + Thread.lock(*internal_message_mutex); + defer Thread.unlock(*internal_message_mutex); for internal_pending_messages { on_message_received(it.message, it.address); @@ -585,12 +585,12 @@ Internal_Pending_Message :: struct { } internal_pending_messages : [..] Internal_Pending_Message; -internal_message_mutex: Mutex; +internal_message_mutex: Thread.Mutex; -thread : Thread; -message_thread : Thread; +thread : Thread.Thread; +message_thread : Thread.Thread; state : Net_Networking_State; -#import "Thread"; +Thread :: #import "Thread"; #import "Basic"; Socket :: #import "Socket"; \ No newline at end of file