Blending stuff

This commit is contained in:
2024-10-27 22:00:03 +01:00
parent 36375c2d15
commit a3e5cf7e4a
8 changed files with 579 additions and 357 deletions

View File

@@ -1,35 +1,35 @@
// Workspace: Game
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:34.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:32.
//
GAME_NAME :: "OCT24";
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:35.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:33.
//
#import "Bucket_Array";
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:248.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:246.
//
init_scene :: (scene: *Scene) {
scene.by_type._Block.allocator = scene.allocator;scene.by_type._Bush.allocator = scene.allocator;scene.by_type._Character.allocator = scene.allocator;scene.by_type._Crab.allocator = scene.allocator;scene.by_type._Crystal.allocator = scene.allocator;scene.by_type._Crystal_Holder.allocator = scene.allocator;scene.by_type._Item.allocator = scene.allocator;scene.by_type._Water.allocator = scene.allocator;
scene.by_type._Block.allocator = scene.allocator;scene.by_type._Bush.allocator = scene.allocator;scene.by_type._Character.allocator = scene.allocator;scene.by_type._Crab.allocator = scene.allocator;scene.by_type._Crystal.allocator = scene.allocator;scene.by_type._Crystal_Holder.allocator = scene.allocator;scene.by_type._Gate.allocator = scene.allocator;scene.by_type._Item.allocator = scene.allocator;scene.by_type._Level_Done.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.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:258.
//
#if EDITOR {
editor_ui_entity_creation :: () -> *Entity {
if ui_clickable_label("New Block") return new_block();if ui_clickable_label("New Bush") return new_bush();if ui_clickable_label("New Character") return new_character();if ui_clickable_label("New Crab") return new_crab();if ui_clickable_label("New Crystal") return new_crystal();if ui_clickable_label("New Crystal_Holder") return new_crystal_holder();if ui_clickable_label("New Item") return new_item();if ui_clickable_label("New Water") return new_water();
if ui_clickable_label("New Block") return new_block();if ui_clickable_label("New Bush") return new_bush();if ui_clickable_label("New Character") return new_character();if ui_clickable_label("New Crab") return new_crab();if ui_clickable_label("New Crystal") return new_crystal();if ui_clickable_label("New Crystal_Holder") return new_crystal_holder();if ui_clickable_label("New Gate") return new_gate();if ui_clickable_label("New Item") return new_item();if ui_clickable_label("New Level_Done") return new_level_done();if ui_clickable_label("New Water") return new_water();
return null;
}
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:271.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:269.
//
delete_entity :: (e: *Entity) {
// Delete the file too
@@ -39,7 +39,7 @@ delete_entity :: (e: *Entity) {
destroy_entity(e);
if e.type == {
case Block; bucket_array_remove(*e.scene.by_type._Block, e._locator); case Bush; bucket_array_remove(*e.scene.by_type._Bush, 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 Crystal; bucket_array_remove(*e.scene.by_type._Crystal, e._locator); case Crystal_Holder; bucket_array_remove(*e.scene.by_type._Crystal_Holder, 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);
case Block; bucket_array_remove(*e.scene.by_type._Block, e._locator); case Bush; bucket_array_remove(*e.scene.by_type._Bush, 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 Crystal; bucket_array_remove(*e.scene.by_type._Crystal, e._locator); case Crystal_Holder; bucket_array_remove(*e.scene.by_type._Crystal_Holder, e._locator); case Gate; bucket_array_remove(*e.scene.by_type._Gate, e._locator); case Item; bucket_array_remove(*e.scene.by_type._Item, e._locator); case Level_Done; bucket_array_remove(*e.scene.by_type._Level_Done, e._locator); case Water; bucket_array_remove(*e.scene.by_type._Water, e._locator);
}
}
@@ -47,7 +47,7 @@ delete_entity :: (e: *Entity) {
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:282.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:280.
//
serialize_entity :: (e: *Entity, path: string) {
builder: String_Builder;
@@ -60,7 +60,9 @@ serialize_entity :: (e: *Entity, path: string) {
case Crab; serialize_entity(cast(*Crab)e, *builder);
case Crystal; serialize_entity(cast(*Crystal)e, *builder);
case Crystal_Holder; serialize_entity(cast(*Crystal_Holder)e, *builder);
case Gate; serialize_entity(cast(*Gate)e, *builder);
case Item; serialize_entity(cast(*Item)e, *builder);
case Level_Done; serialize_entity(cast(*Level_Done)e, *builder);
case Water; serialize_entity(cast(*Water)e, *builder);
}
@@ -69,7 +71,7 @@ serialize_entity :: (e: *Entity, path: string) {
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:293.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:291.
//
deserialize_entity :: (scene: *Scene, id: Entity_Id, path: string) -> *Entity {
content := File.read_entire_file(path);
@@ -91,7 +93,9 @@ deserialize_entity :: (scene: *Scene, id: Entity_Id, path: string) -> *Entity {
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 "Crystal"; p, locator := find_and_occupy_empty_slot(*scene.by_type._Crystal); p._locator = locator; e = p; register_entity(scene, p, id); init_entity(p); deserialize_entity(scene, lines, cast(*Crystal)e); update_matrix(*e.transform);
case "Crystal_Holder"; p, locator := find_and_occupy_empty_slot(*scene.by_type._Crystal_Holder); p._locator = locator; e = p; register_entity(scene, p, id); init_entity(p); deserialize_entity(scene, lines, cast(*Crystal_Holder)e); update_matrix(*e.transform);
case "Gate"; p, locator := find_and_occupy_empty_slot(*scene.by_type._Gate); p._locator = locator; e = p; register_entity(scene, p, id); init_entity(p); deserialize_entity(scene, lines, cast(*Gate)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 "Level_Done"; p, locator := find_and_occupy_empty_slot(*scene.by_type._Level_Done); p._locator = locator; e = p; register_entity(scene, p, id); init_entity(p); deserialize_entity(scene, lines, cast(*Level_Done)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);
}
@@ -100,7 +104,7 @@ deserialize_entity :: (scene: *Scene, id: Entity_Id, path: string) -> *Entity {
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:303.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:301.
//
new_block :: (scene: *Scene = null) -> *Block { _scene := scene;
if _scene == null {
@@ -126,20 +130,28 @@ new_crystal_holder :: (scene: *Scene = null) -> *Crystal_Holder { _scene := scen
if _scene == null {
_scene = engine.current_scene; }
p, locator := find_and_occupy_empty_slot(*_scene.by_type._Crystal_Holder); p._locator = locator; register_entity(_scene, p); p.transform = create_identity_transform(); init_entity(p); return p; }
new_gate :: (scene: *Scene = null) -> *Gate { _scene := scene;
if _scene == null {
_scene = engine.current_scene; }
p, locator := find_and_occupy_empty_slot(*_scene.by_type._Gate); 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 = 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_level_done :: (scene: *Scene = null) -> *Level_Done { _scene := scene;
if _scene == null {
_scene = engine.current_scene; }
p, locator := find_and_occupy_empty_slot(*_scene.by_type._Level_Done); 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.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
serialize_entity :: (e: *Crystal_Holder, builder: *String_Builder) {
print_to_builder(builder, "type: Crystal_Holder\n");
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);
@@ -164,9 +176,9 @@ serialize_entity :: (e: *Crystal_Holder, builder: *String_Builder) {
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
deserialize_entity :: (scene: *Scene, lines: [] string, e: *Crystal_Holder) {
deserialize_entity :: (scene: *Scene, lines: [] string, e: *Water) {
for line: lines {
values := split(line, ":");
if values.count == 2 {
@@ -217,7 +229,344 @@ deserialize_entity :: (scene: *Scene, lines: [] string, e: *Crystal_Holder) {
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
serialize_entity :: (e: *Level_Done, builder: *String_Builder) {
print_to_builder(builder, "type: Level_Done\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:305.
//
deserialize_entity :: (scene: *Scene, lines: [] string, e: *Level_Done) {
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:305.
//
serialize_entity :: (e: *Crystal_Holder, builder: *String_Builder) {
print_to_builder(builder, "type: Crystal_Holder\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, "occupied: %\n", e.occupied);
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
deserialize_entity :: (scene: *Scene, lines: [] string, e: *Crystal_Holder) {
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 "occupied";
scan2(values[1], "%", *e.occupied);
}
}
}
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
serialize_entity :: (e: *Crystal, builder: *String_Builder) {
print_to_builder(builder, "type: Crystal\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, "state: %\n", e.state);
print_to_builder(builder, "crab_count: %\n", e.crab_count);
print_to_builder(builder, "crabs_ready: %\n", e.crabs_ready);
print_to_builder(builder, "move_up_amount: %\n", e.move_up_amount);
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
deserialize_entity :: (scene: *Scene, lines: [] string, e: *Crystal) {
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 "crab_count";
scan2(values[1], "%", *e.crab_count);
case "crabs_ready";
scan2(values[1], "%", *e.crabs_ready);
case "move_up_amount";
scan2(values[1], "%", *e.move_up_amount);
}
}
}
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
serialize_entity :: (e: *Bush, builder: *String_Builder) {
print_to_builder(builder, "type: Bush\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:305.
//
deserialize_entity :: (scene: *Scene, lines: [] string, e: *Bush) {
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:305.
//
serialize_entity :: (e: *Block, builder: *String_Builder) {
print_to_builder(builder, "type: Block\n");
@@ -247,7 +596,7 @@ serialize_entity :: (e: *Block, builder: *String_Builder) {
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
deserialize_entity :: (scene: *Scene, lines: [] string, e: *Block) {
for line: lines {
@@ -302,10 +651,10 @@ 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.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
serialize_entity :: (e: *Crystal, builder: *String_Builder) {
print_to_builder(builder, "type: Crystal\n");
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);
@@ -328,13 +677,26 @@ serialize_entity :: (e: *Crystal, builder: *String_Builder) {
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, "state: %\n", e.state);
print_to_builder(builder, "crab_count: %\n", e.crab_count);
print_to_builder(builder, "assigned_crystal_offset.x: %\n", e.assigned_crystal_offset.x);
print_to_builder(builder, "assigned_crystal_offset.y: %\n", e.assigned_crystal_offset.y);
print_to_builder(builder, "assigned_crystal_offset.z: %\n", e.assigned_crystal_offset.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);
print_to_builder(builder, "has_initial_position: %\n", e.has_initial_position);
print_to_builder(builder, "initial_position.x: %\n", e.initial_position.x);
print_to_builder(builder, "initial_position.y: %\n", e.initial_position.y);
print_to_builder(builder, "initial_position.z: %\n", e.initial_position.z);
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
deserialize_entity :: (scene: *Scene, lines: [] string, e: *Crystal) {
deserialize_entity :: (scene: *Scene, lines: [] string, e: *Crab) {
for line: lines {
values := split(line, ":");
if values.count == 2 {
@@ -379,15 +741,138 @@ deserialize_entity :: (scene: *Scene, lines: [] string, e: *Crystal) {
scan2(values[1], "%", *e.entity.snap_intervals.y);
case "entity.snap_intervals.z";
scan2(values[1], "%", *e.entity.snap_intervals.z);
case "crab_count";
scan2(values[1], "%", *e.crab_count);
case "assigned_crystal_offset.x";
scan2(values[1], "%", *e.assigned_crystal_offset.x);
case "assigned_crystal_offset.y";
scan2(values[1], "%", *e.assigned_crystal_offset.y);
case "assigned_crystal_offset.z";
scan2(values[1], "%", *e.assigned_crystal_offset.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);
case "has_initial_position";
scan2(values[1], "%", *e.has_initial_position);
case "initial_position.x";
scan2(values[1], "%", *e.initial_position.x);
case "initial_position.y";
scan2(values[1], "%", *e.initial_position.y);
case "initial_position.z";
scan2(values[1], "%", *e.initial_position.z);
}
}
}
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
serialize_entity :: (e: *Gate, builder: *String_Builder) {
print_to_builder(builder, "type: Gate\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, "crystals_to_be_active: %\n", e.crystals_to_be_active);
print_to_builder(builder, "state: %\n", e.state);
print_to_builder(builder, "initial_position.x: %\n", e.initial_position.x);
print_to_builder(builder, "initial_position.y: %\n", e.initial_position.y);
print_to_builder(builder, "initial_position.z: %\n", e.initial_position.z);
print_to_builder(builder, "open_amount: %\n", e.open_amount);
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
deserialize_entity :: (scene: *Scene, lines: [] string, e: *Gate) {
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 "crystals_to_be_active";
scan2(values[1], "%", *e.crystals_to_be_active);
case "initial_position.x";
scan2(values[1], "%", *e.initial_position.x);
case "initial_position.y";
scan2(values[1], "%", *e.initial_position.y);
case "initial_position.z";
scan2(values[1], "%", *e.initial_position.z);
case "open_amount";
scan2(values[1], "%", *e.open_amount);
}
}
}
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
serialize_entity :: (e: *Character, builder: *String_Builder) {
print_to_builder(builder, "type: Character\n");
@@ -429,7 +914,7 @@ serialize_entity :: (e: *Character, builder: *String_Builder) {
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
deserialize_entity :: (scene: *Scene, lines: [] string, e: *Character) {
for line: lines {
@@ -510,169 +995,7 @@ 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: *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.
//
serialize_entity :: (e: *Bush, builder: *String_Builder) {
print_to_builder(builder, "type: Bush\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: *Bush) {
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.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
serialize_entity :: (e: *Item, builder: *String_Builder) {
print_to_builder(builder, "type: Item\n");
@@ -700,7 +1023,7 @@ serialize_entity :: (e: *Item, builder: *String_Builder) {
}
//
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:307.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:305.
//
deserialize_entity :: (scene: *Scene, lines: [] string, e: *Item) {
for line: lines {
@@ -753,126 +1076,14 @@ deserialize_entity :: (scene: *Scene, lines: [] string, e: *Item) {
}
//
// 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, "state: %\n", e.state);
print_to_builder(builder, "assigned_crystal_position.x: %\n", e.assigned_crystal_position.x);
print_to_builder(builder, "assigned_crystal_position.y: %\n", e.assigned_crystal_position.y);
print_to_builder(builder, "assigned_crystal_position.z: %\n", e.assigned_crystal_position.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 "assigned_crystal_position.x";
scan2(values[1], "%", *e.assigned_crystal_position.x);
case "assigned_crystal_position.y";
scan2(values[1], "%", *e.assigned_crystal_position.y);
case "assigned_crystal_position.z";
scan2(values[1], "%", *e.assigned_crystal_position.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.
// String added via add_build_string() from c:/Personal/games/onegameamonth/oct24/modules/Coven/metaprogram.jai:313.
//
// NUM_ENTITY_TYPES tells the target program how many entity types there are.
NUM_ENTITY_TYPES :: 8;
NUM_ENTITY_TYPES :: 10;
// entity_types is an array containing all the entity types.
entity_types : [8] Type : .[ Block, Bush, Character, Crab, Crystal, Crystal_Holder, Item, Water ];
entity_types : [10] Type : .[ Block, Bush, Character, Crab, Crystal, Crystal_Holder, Gate, Item, Level_Done, Water ];
Entity_Storage :: struct {
_Block: Bucket_Array(Block, 20, true);
@@ -881,7 +1092,9 @@ Entity_Storage :: struct {
_Crab: Bucket_Array(Crab, 20, true);
_Crystal: Bucket_Array(Crystal, 20, true);
_Crystal_Holder: Bucket_Array(Crystal_Holder, 20, true);
_Gate: Bucket_Array(Gate, 20, true);
_Item: Bucket_Array(Item, 20, true);
_Level_Done: Bucket_Array(Level_Done, 20, true);
_Water: Bucket_Array(Water, 20, true);
}

View File

@@ -190,6 +190,8 @@ unregister_entity :: (scene: *Scene, entity: *Entity) {
}
update_animators :: (dt: float) {
if engine.current_scene == null return;
for e: engine.current_scene.entities {
if e.flags & .ANIMATED {
update_animator(e, *e.animator, dt);
@@ -198,6 +200,8 @@ update_animators :: (dt: float) {
}
update_transforms :: () {
if engine.current_scene == null return;
for e: engine.current_scene.entities {
if e.parent == null {
update_entity_transform(e, Matrix4_Identity);
@@ -232,11 +236,13 @@ update_entity_transform :: (e: *Entity, parent_matrix: Matrix4 = Matrix4_Identit
e.transform.world_matrix = parent_matrix * e.transform.model_matrix;
}
if e.flags & .RENDERABLE {
for model_node, i: e.renderable.model.nodes {
if model_node.parent == 0 {
update_entity_node(e, model_node, i, e.transform.world_matrix);
}
}
}
for i: 0..e.num_children-1 {
child := e.children[i];

View File

@@ -112,8 +112,8 @@ init_transform_gizmo :: () {
// Transform gizmo shader
{
vs := create_vertex_shader_from_source(engine.renderer, TRANSFORM_GIZMO_SHADER, "VS", mesh_data_types = .[.POSITION]);
ps := create_pixel_shader_from_source(engine.renderer, TRANSFORM_GIZMO_SHADER, "PS");
vs := create_vertex_shader_from_source(engine.renderer, "Transform Gizmo", TRANSFORM_GIZMO_SHADER, "VS", mesh_data_types = .[.POSITION]);
ps := create_pixel_shader_from_source(engine.renderer, "Transform Gizmo", TRANSFORM_GIZMO_SHADER, "PS");
engine.editor.transform_gizmo.pipeline = create_pipeline_state2(engine.renderer, vs, ps, blend_type=.OPAQUE);
}

View File

@@ -98,6 +98,7 @@ editor_ui :: () {
ui_set_next_size_x(.PCT, 1.0);
ui_tab_title_bar("ENTITIES");
if engine.current_scene != null {
for engine.current_scene.entities {
ui_set_next_padding(20);
clicked := false;
@@ -123,6 +124,7 @@ editor_ui :: () {
//ui_space(0, 5);
}
}
}
ui_pop_parent();
}
ui_pop_parent();
@@ -141,7 +143,9 @@ editor_ui :: () {
state := ui_interactable_texture(get_texture_from_pass("UI Blend Pass"));
if state.left_mouse_down {
if engine.current_scene != null {
pick_scene_view_at(engine.editor.camera, .{state.normalized_local_mouse_coordinates.x, 1.0-state.normalized_local_mouse_coordinates.y});
}
}

View File

@@ -4,9 +4,7 @@
#import "Sort";
#import "File";
build_release := false;
build :: (main_path: string, game_name: string, working_dir: string = #filepath) {
build :: (build_release: bool, main_path: string, game_name: string, working_dir: string = #filepath) {
set_working_directory(working_dir);
make_directory_if_it_does_not_exist("../../bin");

View File

@@ -104,15 +104,20 @@ coven_run :: (game_update_proc: (float), game_update_post_physics_proc: (float))
}
if engine.mode == .PLAYING {
game_update_proc(clamped_dt);
if engine.current_scene != null {
update_animators(clamped_dt);
update_physics(engine.current_scene, clamped_dt);
game_update_post_physics_proc(clamped_dt);
}
}
if engine.current_scene != null {
update_transforms();
sync_engine_buffers();
update_particle_systems(clamped_dt);
}
#if EDITOR {
ui_end();

View File

@@ -311,7 +311,7 @@ d3d_compile :: (shader: string, source_name: string, pDefines: []string, pInclud
return bytecode, pCode, errors, hr;
}
compile_shader :: (source: string, entry_point: string, shader_model: string, defines: [] string = string.[]) -> string, *ID3DBlob, HRESULT {
compile_shader :: (name: string, source: string, entry_point: string, shader_model: string, defines: [] string = string.[]) -> string, *ID3DBlob, HRESULT {
flags := D3DCOMPILE.ENABLE_STRICTNESS;
#if DEBUG {
@@ -331,7 +331,7 @@ compile_shader :: (source: string, entry_point: string, shader_model: string, de
if FAILED(hr) {
free(bytecode);
if errors print ("Error msg: %\n", errors);
if errors print ("Shader compilation error in shader '%': %\n", name, errors);
return "", null, hr;
}
@@ -568,13 +568,13 @@ get_shader_info_from_blob :: (blob: *ID3DBlob, shader_type: Shader_Type) -> Shad
return shader_info;
}
create_backend_shader_from_source :: (using renderer: *D3D11_Backend, source: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[]) -> Backend_Shader #must, Shader_Info, bool {
create_backend_shader_from_source :: (using renderer: *D3D11_Backend, name: string, source: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[]) -> Backend_Shader #must, Shader_Info, bool {
shader_model : string;
if shader_type == .VERTEX shader_model = "vs_4_0";
else shader_model = "ps_4_0";
bytecode, blob, hr := compile_shader(source, entry_point, shader_model, defines);
bytecode, blob, hr := compile_shader(name, source, entry_point, shader_model, defines);
if FAILED(hr) return .{}, .{}, false;
@@ -610,7 +610,7 @@ create_backend_shader :: (using renderer: *D3D11_Backend, path: string, entry_po
if !content return .{}, .{}, false;
defer free(content);
shader, info, success := create_backend_shader_from_source(renderer, content, entry_point, shader_type, defines);
shader, info, success := create_backend_shader_from_source(renderer, path, content, entry_point, shader_type, defines);
return shader, info, success;
}
@@ -620,18 +620,18 @@ reload_backend_shader :: (using renderer: *D3D11_Backend, path: string, entry_po
if !content return .{}, false;
defer free(content);
shader, success := reload_backend_shader_from_source(renderer, content, entry_point, shader_type, defines);
shader, success := reload_backend_shader_from_source(renderer, path, content, entry_point, shader_type, defines);
return shader, success;
}
reload_backend_shader_from_source :: (using renderer: *D3D11_Backend, source: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[]) -> Backend_Shader #must, bool {
reload_backend_shader_from_source :: (using renderer: *D3D11_Backend, name: string, source: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[]) -> Backend_Shader #must, bool {
shader_model : string;
if shader_type == .VERTEX shader_model = "vs_4_0";
else shader_model = "ps_4_0";
bytecode, blob, hr := compile_shader(source, entry_point, shader_model, defines);
bytecode, blob, hr := compile_shader(name, source, entry_point, shader_model, defines);
if FAILED(hr) return .{}, false;
@@ -676,11 +676,12 @@ create_backend_blend_state :: (using renderer: *D3D11_Backend, type: Blend_Type)
rtbd.DestBlend = .D3D11_BLEND_INV_SRC_ALPHA;
rtbd.BlendOp = .D3D11_BLEND_OP_ADD;
rtbd.SrcBlendAlpha = .D3D11_BLEND_ONE;
rtbd.DestBlendAlpha = .D3D11_BLEND_ZERO;
rtbd.BlendOpAlpha = .D3D11_BLEND_OP_ADD;
rtbd.DestBlendAlpha = .D3D11_BLEND_DEST_ALPHA;
rtbd.BlendOpAlpha = .D3D11_BLEND_OP_MAX;
rtbd.RenderTargetWriteMask = xx D3D11_COLOR_WRITE_ENABLE.ALL;
blend_desc.AlphaToCoverageEnable = .FALSE;
blend_desc.IndependentBlendEnable = .FALSE;
blend_desc.RenderTarget[0] = rtbd;
success := !FAILED(ID3D11Device_CreateBlendState(d3d_device, *blend_desc, *blend_state));
@@ -1314,11 +1315,6 @@ render :: (backend: *D3D11_Backend, command_buffer: *Render_Command_Buffer) {
case .OPAQUE;
ID3D11DeviceContext_OMSetBlendState(d3d_context, null, null, 0xffffffff);
case .TRANSPARENT;
blend_factor : [4]float;
blend_factor[0] = 0.0;
blend_factor[1] = 0.0;
blend_factor[2] = 0.0;
blend_factor[3] = 0.0;
ID3D11DeviceContext_OMSetBlendState(d3d_context, it.set_pipeline_state.blend_state, null, 0xffffffff);
}
case .SET_VERTEX_BUFFER;

View File

@@ -874,7 +874,7 @@ reload_shader :: (using renderer: *Renderer, shader: *Shader) {
}
}
create_shader_from_source :: (using renderer: *Renderer, source: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[], mesh_data_types: [] Mesh_Vertex_Data_Type = .[.POSITION, .NORMAL, .TEXCOORD]) -> Shader_Handle {
create_shader_from_source :: (using renderer: *Renderer, name: string, source: string, entry_point: string, shader_type: Shader_Type, defines: [] string = string.[], mesh_data_types: [] Mesh_Vertex_Data_Type = .[.POSITION, .NORMAL, .TEXCOORD]) -> Shader_Handle {
shader : Shader;
shader.type = shader_type;
@@ -893,7 +893,7 @@ create_shader_from_source :: (using renderer: *Renderer, source: string, entry_p
}
}
backend_shader, info, success := create_backend_shader_from_source(engine.renderer.backend, source, entry_point, shader_type, defines);
backend_shader, info, success := create_backend_shader_from_source(engine.renderer.backend, name, source, entry_point, shader_type, defines);
if success {
shader.info = info;