From 39b04d84b27abfac01d91c0a08fdfa2c59923a57 Mon Sep 17 00:00:00 2001 From: Daniel Bross Date: Wed, 23 Oct 2024 23:49:54 +0200 Subject: [PATCH] Water test --- .build/.added_strings_w3.jai | 464 +++++++++++++++++++++-------------- renderer/model.jai | 2 + 2 files changed, 278 insertions(+), 188 deletions(-) diff --git a/.build/.added_strings_w3.jai b/.build/.added_strings_w3.jai index ef1732f..9780430 100644 --- a/.build/.added_strings_w3.jai +++ b/.build/.added_strings_w3.jai @@ -14,14 +14,14 @@ GAME_NAME :: "OCT24"; // String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:248. // init_scene :: (scene: *Scene) { - scene.by_type._Block.allocator = scene.allocator;scene.by_type._Character.allocator = scene.allocator;scene.by_type._Crab.allocator = scene.allocator;scene.by_type._Item.allocator = scene.allocator; + scene.by_type._Block.allocator = scene.allocator;scene.by_type._Character.allocator = scene.allocator;scene.by_type._Crab.allocator = scene.allocator;scene.by_type._Item.allocator = scene.allocator;scene.by_type._Water.allocator = scene.allocator; } // // String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:260. // editor_ui_entity_creation :: () -> *Entity { - if ui_clickable_label("New Block") return new_block();if ui_clickable_label("New Character") return new_character();if ui_clickable_label("New Crab") return new_crab();if ui_clickable_label("New Item") return new_item(); + if ui_clickable_label("New Block") return new_block();if ui_clickable_label("New Character") return new_character();if ui_clickable_label("New Crab") return new_crab();if ui_clickable_label("New Item") return new_item();if ui_clickable_label("New Water") return new_water(); return null; } @@ -37,7 +37,7 @@ delete_entity :: (e: *Entity) { destroy_entity(e); if e.type == { - case Block; bucket_array_remove(*e.scene.by_type._Block, e._locator); case Character; bucket_array_remove(*e.scene.by_type._Character, e._locator); case Crab; bucket_array_remove(*e.scene.by_type._Crab, e._locator); case Item; bucket_array_remove(*e.scene.by_type._Item, e._locator); + case Block; bucket_array_remove(*e.scene.by_type._Block, e._locator); case Character; bucket_array_remove(*e.scene.by_type._Character, e._locator); case Crab; bucket_array_remove(*e.scene.by_type._Crab, e._locator); case Item; bucket_array_remove(*e.scene.by_type._Item, e._locator); case Water; bucket_array_remove(*e.scene.by_type._Water, e._locator); } } @@ -56,6 +56,7 @@ serialize_entity :: (e: *Entity, path: string) { case Character; serialize_entity(cast(*Character)e, *builder); case Crab; serialize_entity(cast(*Crab)e, *builder); case Item; serialize_entity(cast(*Item)e, *builder); + case Water; serialize_entity(cast(*Water)e, *builder); } @@ -83,6 +84,7 @@ deserialize_entity :: (scene: *Scene, id: Entity_Id, path: string) -> *Entity { case "Character"; p, locator := find_and_occupy_empty_slot(*scene.by_type._Character); p._locator = locator; e = p; register_entity(scene, p, id); init_entity(p); deserialize_entity(scene, lines, cast(*Character)e); update_matrix(*e.transform); case "Crab"; p, locator := find_and_occupy_empty_slot(*scene.by_type._Crab); p._locator = locator; e = p; register_entity(scene, p, id); init_entity(p); deserialize_entity(scene, lines, cast(*Crab)e); update_matrix(*e.transform); case "Item"; p, locator := find_and_occupy_empty_slot(*scene.by_type._Item); p._locator = locator; e = p; register_entity(scene, p, id); init_entity(p); deserialize_entity(scene, lines, cast(*Item)e); update_matrix(*e.transform); + case "Water"; p, locator := find_and_occupy_empty_slot(*scene.by_type._Water); p._locator = locator; e = p; register_entity(scene, p, id); init_entity(p); deserialize_entity(scene, lines, cast(*Water)e); update_matrix(*e.transform); } @@ -108,6 +110,274 @@ new_item :: (scene: *Scene = null) -> *Item { _scene := scene; if _scene == null { _scene = engine.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_water :: (scene: *Scene = null) -> *Water { _scene := scene; +if _scene == null { +_scene = engine.current_scene; } +p, locator := find_and_occupy_empty_slot(*_scene.by_type._Water); p._locator = locator; register_entity(_scene, p); p.transform = create_identity_transform(); init_entity(p); return p; } + +// +// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307. +// +serialize_entity :: (e: *Item, builder: *String_Builder) { + print_to_builder(builder, "type: Item\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.rendering_offset.x: %\n", e.entity.rendering_offset.x); + print_to_builder(builder, "entity.rendering_offset.y: %\n", e.entity.rendering_offset.y); + print_to_builder(builder, "entity.rendering_offset.z: %\n", e.entity.rendering_offset.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, "entity.snap_intervals.x: %\n", e.entity.snap_intervals.x); + print_to_builder(builder, "entity.snap_intervals.y: %\n", e.entity.snap_intervals.y); + print_to_builder(builder, "entity.snap_intervals.z: %\n", e.entity.snap_intervals.z); +} + +// +// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307. +// +deserialize_entity :: (scene: *Scene, lines: [] string, e: *Item) { + 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.rendering_offset.x"; + scan2(values[1], "%", *e.entity.rendering_offset.x); + case "entity.rendering_offset.y"; + scan2(values[1], "%", *e.entity.rendering_offset.y); + case "entity.rendering_offset.z"; + scan2(values[1], "%", *e.entity.rendering_offset.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 "entity.snap_intervals.x"; + scan2(values[1], "%", *e.entity.snap_intervals.x); + case "entity.snap_intervals.y"; + scan2(values[1], "%", *e.entity.snap_intervals.y); + case "entity.snap_intervals.z"; + scan2(values[1], "%", *e.entity.snap_intervals.z); + } + } + } +} + +// +// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307. +// +serialize_entity :: (e: *Crab, builder: *String_Builder) { + print_to_builder(builder, "type: Crab\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.rendering_offset.x: %\n", e.entity.rendering_offset.x); + print_to_builder(builder, "entity.rendering_offset.y: %\n", e.entity.rendering_offset.y); + print_to_builder(builder, "entity.rendering_offset.z: %\n", e.entity.rendering_offset.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, "entity.snap_intervals.x: %\n", e.entity.snap_intervals.x); + print_to_builder(builder, "entity.snap_intervals.y: %\n", e.entity.snap_intervals.y); + print_to_builder(builder, "entity.snap_intervals.z: %\n", e.entity.snap_intervals.z); + print_to_builder(builder, "current_yaw: %\n", e.current_yaw); + print_to_builder(builder, "target_look_direction.x: %\n", e.target_look_direction.x); + print_to_builder(builder, "target_look_direction.y: %\n", e.target_look_direction.y); + print_to_builder(builder, "target_look_direction.z: %\n", e.target_look_direction.z); + print_to_builder(builder, "current_direction.x: %\n", e.current_direction.x); + print_to_builder(builder, "current_direction.y: %\n", e.current_direction.y); + print_to_builder(builder, "current_direction.z: %\n", e.current_direction.z); +} + +// +// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307. +// +deserialize_entity :: (scene: *Scene, lines: [] string, e: *Crab) { + 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.rendering_offset.x"; + scan2(values[1], "%", *e.entity.rendering_offset.x); + case "entity.rendering_offset.y"; + scan2(values[1], "%", *e.entity.rendering_offset.y); + case "entity.rendering_offset.z"; + scan2(values[1], "%", *e.entity.rendering_offset.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 "entity.snap_intervals.x"; + scan2(values[1], "%", *e.entity.snap_intervals.x); + case "entity.snap_intervals.y"; + scan2(values[1], "%", *e.entity.snap_intervals.y); + case "entity.snap_intervals.z"; + scan2(values[1], "%", *e.entity.snap_intervals.z); + case "current_yaw"; + scan2(values[1], "%", *e.current_yaw); + case "target_look_direction.x"; + scan2(values[1], "%", *e.target_look_direction.x); + case "target_look_direction.y"; + scan2(values[1], "%", *e.target_look_direction.y); + case "target_look_direction.z"; + scan2(values[1], "%", *e.target_look_direction.z); + case "current_direction.x"; + scan2(values[1], "%", *e.current_direction.x); + case "current_direction.y"; + scan2(values[1], "%", *e.current_direction.y); + case "current_direction.z"; + scan2(values[1], "%", *e.current_direction.z); + } + } + } +} + +// +// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307. +// +serialize_entity :: (e: *Water, builder: *String_Builder) { + print_to_builder(builder, "type: Water\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.rendering_offset.x: %\n", e.entity.rendering_offset.x); + print_to_builder(builder, "entity.rendering_offset.y: %\n", e.entity.rendering_offset.y); + print_to_builder(builder, "entity.rendering_offset.z: %\n", e.entity.rendering_offset.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, "entity.snap_intervals.x: %\n", e.entity.snap_intervals.x); + print_to_builder(builder, "entity.snap_intervals.y: %\n", e.entity.snap_intervals.y); + print_to_builder(builder, "entity.snap_intervals.z: %\n", e.entity.snap_intervals.z); +} + +// +// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307. +// +deserialize_entity :: (scene: *Scene, lines: [] string, e: *Water) { + 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.rendering_offset.x"; + scan2(values[1], "%", *e.entity.rendering_offset.x); + case "entity.rendering_offset.y"; + scan2(values[1], "%", *e.entity.rendering_offset.y); + case "entity.rendering_offset.z"; + scan2(values[1], "%", *e.entity.rendering_offset.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 "entity.snap_intervals.x"; + scan2(values[1], "%", *e.entity.snap_intervals.x); + case "entity.snap_intervals.y"; + scan2(values[1], "%", *e.entity.snap_intervals.y); + case "entity.snap_intervals.z"; + scan2(values[1], "%", *e.entity.snap_intervals.z); + } + } + } +} // // String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307. @@ -194,87 +464,6 @@ deserialize_entity :: (scene: *Scene, lines: [] string, e: *Block) { } } -// -// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307. -// -serialize_entity :: (e: *Item, builder: *String_Builder) { - print_to_builder(builder, "type: Item\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.rendering_offset.x: %\n", e.entity.rendering_offset.x); - print_to_builder(builder, "entity.rendering_offset.y: %\n", e.entity.rendering_offset.y); - print_to_builder(builder, "entity.rendering_offset.z: %\n", e.entity.rendering_offset.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, "entity.snap_intervals.x: %\n", e.entity.snap_intervals.x); - print_to_builder(builder, "entity.snap_intervals.y: %\n", e.entity.snap_intervals.y); - print_to_builder(builder, "entity.snap_intervals.z: %\n", e.entity.snap_intervals.z); -} - -// -// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307. -// -deserialize_entity :: (scene: *Scene, lines: [] string, e: *Item) { - 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.rendering_offset.x"; - scan2(values[1], "%", *e.entity.rendering_offset.x); - case "entity.rendering_offset.y"; - scan2(values[1], "%", *e.entity.rendering_offset.y); - case "entity.rendering_offset.z"; - scan2(values[1], "%", *e.entity.rendering_offset.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 "entity.snap_intervals.x"; - scan2(values[1], "%", *e.entity.snap_intervals.x); - case "entity.snap_intervals.y"; - scan2(values[1], "%", *e.entity.snap_intervals.y); - case "entity.snap_intervals.z"; - scan2(values[1], "%", *e.entity.snap_intervals.z); - } - } - } -} - // // String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307. // @@ -398,122 +587,21 @@ deserialize_entity :: (scene: *Scene, lines: [] string, e: *Character) { } } -// -// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307. -// -serialize_entity :: (e: *Crab, builder: *String_Builder) { - print_to_builder(builder, "type: Crab\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.rendering_offset.x: %\n", e.entity.rendering_offset.x); - print_to_builder(builder, "entity.rendering_offset.y: %\n", e.entity.rendering_offset.y); - print_to_builder(builder, "entity.rendering_offset.z: %\n", e.entity.rendering_offset.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, "entity.snap_intervals.x: %\n", e.entity.snap_intervals.x); - print_to_builder(builder, "entity.snap_intervals.y: %\n", e.entity.snap_intervals.y); - print_to_builder(builder, "entity.snap_intervals.z: %\n", e.entity.snap_intervals.z); - print_to_builder(builder, "current_yaw: %\n", e.current_yaw); - print_to_builder(builder, "target_look_direction.x: %\n", e.target_look_direction.x); - print_to_builder(builder, "target_look_direction.y: %\n", e.target_look_direction.y); - print_to_builder(builder, "target_look_direction.z: %\n", e.target_look_direction.z); - print_to_builder(builder, "current_direction.x: %\n", e.current_direction.x); - print_to_builder(builder, "current_direction.y: %\n", e.current_direction.y); - print_to_builder(builder, "current_direction.z: %\n", e.current_direction.z); -} - -// -// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307. -// -deserialize_entity :: (scene: *Scene, lines: [] string, e: *Crab) { - 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.rendering_offset.x"; - scan2(values[1], "%", *e.entity.rendering_offset.x); - case "entity.rendering_offset.y"; - scan2(values[1], "%", *e.entity.rendering_offset.y); - case "entity.rendering_offset.z"; - scan2(values[1], "%", *e.entity.rendering_offset.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 "entity.snap_intervals.x"; - scan2(values[1], "%", *e.entity.snap_intervals.x); - case "entity.snap_intervals.y"; - scan2(values[1], "%", *e.entity.snap_intervals.y); - case "entity.snap_intervals.z"; - scan2(values[1], "%", *e.entity.snap_intervals.z); - case "current_yaw"; - scan2(values[1], "%", *e.current_yaw); - case "target_look_direction.x"; - scan2(values[1], "%", *e.target_look_direction.x); - case "target_look_direction.y"; - scan2(values[1], "%", *e.target_look_direction.y); - case "target_look_direction.z"; - scan2(values[1], "%", *e.target_look_direction.z); - case "current_direction.x"; - scan2(values[1], "%", *e.current_direction.x); - case "current_direction.y"; - scan2(values[1], "%", *e.current_direction.y); - case "current_direction.z"; - scan2(values[1], "%", *e.current_direction.z); - } - } - } -} - // // String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:315. // // NUM_ENTITY_TYPES tells the target program how many entity types there are. -NUM_ENTITY_TYPES :: 4; +NUM_ENTITY_TYPES :: 5; // entity_types is an array containing all the entity types. -entity_types : [4] Type : .[ Block, Character, Crab, Item ]; +entity_types : [5] Type : .[ Block, Character, Crab, Item, Water ]; Entity_Storage :: struct { _Block: Bucket_Array(Block, 20, true); _Character: Bucket_Array(Character, 20, true); _Crab: Bucket_Array(Crab, 20, true); _Item: Bucket_Array(Item, 20, true); + _Water: Bucket_Array(Water, 20, true); } diff --git a/renderer/model.jai b/renderer/model.jai index abe876c..b914919 100644 --- a/renderer/model.jai +++ b/renderer/model.jai @@ -583,6 +583,8 @@ load_fbx_texture :: (map: ufbx_material_map, format: Format) -> Texture_Handle { load_fbx :: (path: string) -> *Model, bool { opts : ufbx_load_opts = .{}; opts.load_external_files = true; + opts.generate_missing_normals = true; + opts.normalize_normals = true; opts.evaluate_skinning = true; opts.target_axes.right = .POSITIVE_X; opts.target_axes.up = .POSITIVE_Y;