diff --git a/Assets/Objects/Decorations.glb b/Assets/Objects/Decorations.glb new file mode 100644 index 0000000..1008336 Binary files /dev/null and b/Assets/Objects/Decorations.glb differ diff --git a/Assets/Objects/Decorations.glb.import b/Assets/Objects/Decorations.glb.import new file mode 100644 index 0000000..d9ea895 --- /dev/null +++ b/Assets/Objects/Decorations.glb.import @@ -0,0 +1,42 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://dk7gbkgg8vegy" +path="res://.godot/imported/Decorations.glb-a1a30e084725e695f1c19d3c9fcf7bdf.scn" + +[deps] + +source_file="res://Assets/Objects/Decorations.glb" +dest_files=["res://.godot/imported/Decorations.glb-a1a30e084725e695f1c19d3c9fcf7bdf.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +gltf/naming_version=2 +gltf/embedded_image_handling=1 diff --git a/Assets/Objects/Tiles.glb b/Assets/Objects/Tiles.glb index 37cb6f3..10fee11 100644 Binary files a/Assets/Objects/Tiles.glb and b/Assets/Objects/Tiles.glb differ diff --git a/RuinAdventurer.sln b/RuinAdventurer.sln index 6ea01fa..27e6745 100644 --- a/RuinAdventurer.sln +++ b/RuinAdventurer.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Automation", "Automation.csproj", "{58DB29A5-5BE5-413A-BB24-673BF011E318}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RuinAdventurer", "RuinAdventurer.csproj", "{58DB29A5-5BE5-413A-BB24-673BF011E318}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/Scripts/Helpers/Placeholder.cs b/Scripts/Helpers/Placeholder.cs index 1923ac0..94ac40f 100644 --- a/Scripts/Helpers/Placeholder.cs +++ b/Scripts/Helpers/Placeholder.cs @@ -2,7 +2,7 @@ using Godot; public class Placeholder { - string name; + public string name; public Vector3 pos; public Placeholder(string name, Vector3 pos){ diff --git a/Scripts/Helpers/ResourceLoader.cs b/Scripts/Helpers/ResourceLoader.cs index e6a395c..f4ad0cf 100644 --- a/Scripts/Helpers/ResourceLoader.cs +++ b/Scripts/Helpers/ResourceLoader.cs @@ -27,4 +27,17 @@ public partial class ResourceLoader return tileMeshes; } + + public static Dictionary LoadDecorations() + { + Dictionary decorationMeshes = new Dictionary(); + PackedScene decorationCollection = GD.Load($"res://Assets/Objects/Decorations.glb"); + Node root = decorationCollection.Instantiate(); + foreach (MeshInstance3D child in root.GetChildren()) + { + decorationMeshes.Add(child.Name.ToString().ToLower(), child); + } + + return decorationMeshes; + } } diff --git a/Scripts/World.cs b/Scripts/World.cs index 1be8cef..e21e025 100644 --- a/Scripts/World.cs +++ b/Scripts/World.cs @@ -1,11 +1,13 @@ using Godot; using System; using System.Collections.Generic; +using System.Linq; using static GameData; public partial class World : Node3D { public Dictionary tileMeshes; + public Dictionary decorationMeshes; public Dictionary> tilePlaceholders; PackedScene layerPrefab = ResourceLoader.LoadLayerPrefab(); private Dictionary multiMeshes = new(); @@ -17,6 +19,7 @@ public partial class World : Node3D { WFC.FillAdjacencies(); tileMeshes = ResourceLoader.LoadTiles(); + decorationMeshes = ResourceLoader.LoadDecorations(); tilePlaceholders = new Dictionary>(); foreach (var kvp in tileMeshes) { @@ -113,13 +116,27 @@ public partial class World : Node3D mm.SetInstanceTransform(i, list[i]); if (placeholders.Count > 0) { - Node3D robot; - foreach (Placeholder placeholder in placeholders) + Node3D decoration; + + Mesh mesh = decorationMeshes.Values.ToList()[0].Mesh; + for(int j = 0; j < placeholders.Count; j++) { - robot = ResourceLoader.LoadRobotPrefab().Instantiate(); - robot.Position = placeholder.pos + list[i].Origin; - AddChild(robot); - } + foreach (MeshInstance3D meshes in decorationMeshes.Values) + { + if (meshes.Name.ToString().ToLower() == placeholders[j].name.ToLower()) + { + mesh = meshes.Mesh; + break; + } + } + decoration = new MeshInstance3D(); + (decoration as MeshInstance3D).Mesh = mesh; + decoration.Transform = list[i]; + decoration.Position += placeholders[j].pos; + decoration.Name = placeholders[j].name + j; + decoration.Rotate(Vector3.Up, Mathf.DegToRad(-90)); + layer.AddChild(decoration); + } } } }