From 4b3c4c1ae29cb9e93a080ad5f43c7d5142f5199a Mon Sep 17 00:00:00 2001 From: = <=> Date: Sat, 25 Apr 2026 22:26:00 +0200 Subject: [PATCH] Added decoration assets and placement. Currently all placeholders are replaced, need to implement a chance based system. --- Assets/Objects/Decorations.glb | Bin 0 -> 51756 bytes Assets/Objects/Decorations.glb.import | 42 ++++++++++++++++++++++++++ Assets/Objects/Tiles.glb | Bin 211752 -> 213232 bytes RuinAdventurer.sln | 2 +- Scripts/Helpers/Placeholder.cs | 2 +- Scripts/Helpers/ResourceLoader.cs | 13 ++++++++ Scripts/World.cs | 29 ++++++++++++++---- 7 files changed, 80 insertions(+), 8 deletions(-) create mode 100644 Assets/Objects/Decorations.glb create mode 100644 Assets/Objects/Decorations.glb.import diff --git a/Assets/Objects/Decorations.glb b/Assets/Objects/Decorations.glb new file mode 100644 index 0000000000000000000000000000000000000000..1008336f1ea0316935d55d528194742bc5eab610 GIT binary patch literal 51756 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

u$Oy(VjY`llo732ckRZy>zV} ztOx47bw&@+`{~j8AU#G8(*MtCdYW$3C+f5GY5EL(vOZOx zr?1eL>Z|kx`Z9g2&gy-L?xSbv6Z8d(|qRL1GCREARfCpDJnT)nS8lIW5896dq*s=lYPi{6RK z;neKF7A`g#2# z(HHg8`ab=bev0T*`XT+OeojA5^l^Q^enr2l-_q~t*Yw+Zwf;(froYf1>reIj`k#6g z(N+3u{iXhwewFB}`V;+)UZ;Q2zv=(zpS3cZnvKk6#+Z%G7G@{2z1h)pHQSj=Q)PBH z)n-?-hl!Ys>23O&8k05y%`h|63^#k5{md@rNBz6r#r&@KG<%u#`dhu1`BwkQXp=Ji zi1ss`%;qL*qC}&no!QdtV@41iVY-`c<^VH@=peI=c~jq^uch*n{(;KN`c2}0Ao{Dm zLElDY6Vsl`chtU3w>Q7)o@TA?V0xMkCT`Z~m-P2~4Sgz1NAqXBgvz$23l&N2CAtgI zgb}7Q(axs7*}>ea@1pXKex1rz)V_=A9n283wRuAiq0fhUH}jx=lFGmJM^tt;yO}4c z-p%weEA+!udYK+nV$^~98B`9Ob8{9x)G zX$~_-nvwK5*c@W&%~YaO%@Jm@8D}OConVeJN0|f7XriOdcr(cyY7QcLkU84SGBeC^ zM2|Bkno~`aIf3X2=1eo!oNmq{dX_oGOfx5$lZl>eW}0Smnwdj%j+t)GGgp{P%~j?C zbD6o?+;0ACZZ$WUo6SOVp;T(Y$QlHfzlL=411&`M~_!{KtG}zBgZ)Z_O{p(B-auyWfmz_l{X? z?lv^Q3v&{AfNU`l(rFo;AOl4(*<$&l~2Srd_*V ziT-N-VJSQFERI;F=i~4$4v{BJE=XE>U+&9v&gg(Z8e{p>&!Xk zE~0mtH_dW$xS2xbCG!H6rPQ86^>XutdC06Jy3+h)UNy&>iBv8(7g2eR+7qdM)vPzq zn~RBFY_2t{O@o<7wDvM7uN0@l?JsUsCy* z+Q(BZ+TCL2o3p9tcI(VKbB(!$_;p0-d&m9gv+RYH!}#AW1@ZJdPsWdDJuQ}=VmyyU ze;fYOG4n}B4o?`KWm)diF@o_I<=?sV_GObVdW=2;Ghuj^Wx01Q?U4z?yExgFOc>t9 z+0VkTWir0hPQkRJWl-h^;>?1 zUF_#P-tsdru%CT-%g?Zp{p`!rBPI7|zVq+$g!lh^L>s^78hwRzo=j`5mHTfhY#38i z26MV~o(z8H=xaRfjFxUgPH_06U;Va)C6BzVF3WxVJ8qx+NbdiKnON6>{_Pp&r~l`! z&)DxxvXwtPw)*FZZoMYs*Y7_UYv7-Jzqs>e`8P!{6ULI5+l+OwIsHX2x9N8=x0%bw z7V_f;zcIet5BhSok3St>7V)REZbjCp<&WwCnhh9p{`T>6tB>t@Hu{bA@pFq`zyDnP z?;z*Xr?9S|wc`H5n&kxjuCQh~?$56k$=%c=+wbmY_j2YzjsCaSypg%0Q**YkCS95N z@zd$^IL{}RFIMXZX1iE_&Q9Ug=w~|_PhsuYOM0t6+bPR>3+v~|UdH2B zccga!?dVy5J9;;;7d`vmn&{T_Y(GWs2(}@*4L$3R)0=`Vh;Bj8_&29_0lN_0g`Q1! zrFQ~7iT0#t+1u0e=L(_~^t`+qJ<0D+v_CzA-j$yI?@e@XdhWcN^B!O~dKb{0o@+{VW+jp7pd^dW!Kp7X8Ke ztc53t2L_h$vERXBN%_c_@}auu%ZII8DUAGf)mf8U>fN42op z{Cn;n$G@Ww+KxVwEv)(X^P$(OS&qjS)-2Ec`L&`Qy$S8zmR()%^6VXnB-}-GV3{gWn{=Wb~IiF?# literal 0 HcmV?d00001 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 37cb6f341d4ab64355ef76df9e9a59035dfa744a..10fee116c0225624b470bcbd1bfb117a9ace4eff 100644 GIT binary patch delta 2289 zcmbtVTWl0n81C-OMx?cuo!u4^w6g;QyF0r(=gjS#?QU;!Nh|b<#k90bDNWm?AOc52fF-9?JVl^KMPnSg4w26|G!HI1$Za4;aEkgAqN!i?X zDJ7g)%rPk=1C#nuZU4yOF)c#~d=-3z{SVFfX2-P|N?OdaUDI@|f0Y~_8=u&BXygF4 zNerEk0lnaY!dp^3l*tkJQF=6B!JMRkDsO@lvI2c_JmA19azns{&t)25a8G_?En5O} zT{|$eAH&nO4ILSQ=3sRCO6a=>5wxc)4xdys!c;{P;+1vqb49bxh_1DFbnj^1u4Ne2 zwVhj@e5|9Rdvo5v+MLw2@dNwDher-$WkF|oozCoK0A~fjEdnsOtHj_&r4HMx>ViH# z!BM0j$jxFrx0d5M+)*?*Q>DY&a2?#K(o@)40ZI&`7)uPY983)AsgHz{DO6d4Su0_7 zG0cIPa3bX{hp?3pUIZbAr<76jG+CA=!KbY#PC|1)x6HE=!C2qP&K#_G%A;Wc4+-`lJ3Q>q%8Hk86sMkCavYhk`d1~st`PNr3F zzX$g>($z4tAqk~MHO$wQ!{62__%-1|yP?9tjVfHkb)LlFt`UWU@gyXPz&64uZ}s`U zT-Xb~N?Od*Lshth_}?k&<7%2d&mmLrl)?-28K}0FyggyX7QMY~)hu{=00uTa4_{jw z;luPg$l2*BrofAKwP)#5yKq|*gq&K>_NWtsOKAVRQ-kf5g2mRuFOG;~H9W_*K-#T^ zb=;5ZlpDjn2DjYkl$(YKi!P`(!Y<~gaE`#eRb}WZMb8l7_ zUtT=Tg>07_cxh`KF6|1-HX|Hv@4(CWJ8^)t#Nk|zB6G*|i>AlJA;%ziBoLh)qOvFh z(w&tZf^UKlJl9wiA`T_CV3Hl`3Z(?{E0Ss1{w+OW$w7aWZ8{*Q@MS~OR$*2gaJby9 z`}8(L`sUu8@7rj6vn zf@_%zqUUBDofWxz?=YI;PiiLw`i#+$nJ5Iq}+`K~dLn z{jjmXpVw?_3RVwRgS x&F4#T43h(ss;ch%_V{f6)!BUD>TEvv&F-svKMMX8e5dlw;JvHwejI#l@*k8aq1^xg delta 2027 zcma)6U2GIp6mDl{4N&OMPImz#?sjWMyR+MS=jYCyZM$u0`TyxsYACi%x0FUoDo7g) z#*|Qzm?(tGXHpZDVB&)k5=v^s2Q{McK_8?sAu-}ZO^Cjb2#LWMqj+YvrQJT6Omfb- z_nz-N=R5b#-SJf)-d|bz+;Hb6rKqUrsro?Cr+sghp4Yg}4V{}hw{&jnT`!X=&>5&W&BI?d=_HeT-sjOpgy8J}@*eI7*R?yDMY(tsO-4u2q=s+PGfkVAe};{e)MwREjMmaK;NWI5QSA za%NIri4@_^bCBjsQ$%5k<1_86Ox7{EIL}>@$5}xhjbv70pA!#(&hoCt73U_4S=XAty5DGcgw z@rb$M7PMrt>7OFQYf!$n38(8~WK}flkKvm+|0MZA7Qt*y5(iieS$8E$k`6u~f8xm) zZqr^iQH%9Ff{8>DuX7Kh3E%lv#f-5IB}N#zni3pYy9zlwgq_9$&SmmFoI7M^$m(VU zF(ZWuGfFrm7_*LH#`p7B@3wL($#2oVt6UthHZ@@` zdc1A8EThC(g*!5@L!CR1_XOT@qlC8+H_7JlG=$TUhj?A-1-#GGgqKlqrEwXq)LZ!1 zk4tgb(a=;MA^ld+eicrUKTH1Uh8oUuV+ZR%8VGB&PCXm??3fd0074Zt# zUL_u=Fr~!3Jp{Uu0*hW$RcNVo_C1oIe43nh8|5dY|?OEHOG*KUmw*Ha7^1j^`J)!Sk$XmH^HlxGpDl;YPq=Bo>3iJ zFwAsk0)iT-=pjoYc^aI}5fatdpQA(0ob=!4s5VJl-h{UFQQ%s_p94)Y;Ls1brAzmw zs!BG;e4*0|?ED3;omz z4QGnvzS*xS%ySb6@7Gizr3HO|-zvjkW4&XYx0Ip{TX#*C9aJVK?++=@o;ow|+L?jk RYi9 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); + } } } }