From c0d426152e6c259c2144ba95914f69cec7307875 Mon Sep 17 00:00:00 2001 From: "Hermes (scopedvr-dev)" Date: Mon, 19 Oct 2026 18:06:48 +0000 Subject: [PATCH] D2 (t_33250710): Editor-Bibliothek 83 Objekte + 27 Absperrungs-Thumbs + Renderprobe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - library/objects.json: Editor-Kopie (note behalten), 83 Objekte. - library/thumbs: 27 neue Thumbs (echte GLB-Meshes), Alt-Thumbs unveraendert. - tests/probe_d2_barriers_render.gd: Map-Builder-Beweis — 3 Objekte ueber map_view_builder platziert, PNG gerendert, Fußpunkt/Groesse gemessen. --- library/objects.json | 378 +++++++++++++++++++++++++ library/thumbs/barrier_001.png | Bin 0 -> 668 bytes library/thumbs/barrier_001.png.import | 40 +++ library/thumbs/barrier_002.png | Bin 0 -> 599 bytes library/thumbs/barrier_002.png.import | 40 +++ library/thumbs/barrier_003.png | Bin 0 -> 571 bytes library/thumbs/barrier_003.png.import | 40 +++ library/thumbs/barrier_004.png | Bin 0 -> 636 bytes library/thumbs/barrier_004.png.import | 40 +++ library/thumbs/barrier_005.png | Bin 0 -> 636 bytes library/thumbs/barrier_005.png.import | 40 +++ library/thumbs/barrier_006.png | Bin 0 -> 917 bytes library/thumbs/barrier_006.png.import | 40 +++ library/thumbs/barrier_007.png | Bin 0 -> 1014 bytes library/thumbs/barrier_007.png.import | 40 +++ library/thumbs/barrier_008.png | Bin 0 -> 674 bytes library/thumbs/barrier_008.png.import | 40 +++ library/thumbs/barrier_009.png | Bin 0 -> 730 bytes library/thumbs/barrier_009.png.import | 40 +++ library/thumbs/barrier_010.png | Bin 0 -> 917 bytes library/thumbs/barrier_010.png.import | 40 +++ library/thumbs/barrier_011.png | Bin 0 -> 674 bytes library/thumbs/barrier_011.png.import | 40 +++ library/thumbs/barrier_012.png | Bin 0 -> 730 bytes library/thumbs/barrier_012.png.import | 40 +++ library/thumbs/barrier_013.png | Bin 0 -> 1014 bytes library/thumbs/barrier_013.png.import | 40 +++ library/thumbs/barrier_014.png | Bin 0 -> 639 bytes library/thumbs/barrier_014.png.import | 40 +++ library/thumbs/barrier_015.png | Bin 0 -> 639 bytes library/thumbs/barrier_015.png.import | 40 +++ library/thumbs/barrier_016.png | Bin 0 -> 803 bytes library/thumbs/barrier_016.png.import | 40 +++ library/thumbs/barrier_017.png | Bin 0 -> 803 bytes library/thumbs/barrier_017.png.import | 40 +++ library/thumbs/obstacle_001.png | Bin 0 -> 641 bytes library/thumbs/obstacle_001.png.import | 40 +++ library/thumbs/obstacle_002.png | Bin 0 -> 650 bytes library/thumbs/obstacle_002.png.import | 40 +++ library/thumbs/obstacle_003.png | Bin 0 -> 686 bytes library/thumbs/obstacle_003.png.import | 40 +++ library/thumbs/obstacle_004.png | Bin 0 -> 958 bytes library/thumbs/obstacle_004.png.import | 40 +++ library/thumbs/obstacle_005.png | Bin 0 -> 857 bytes library/thumbs/obstacle_005.png.import | 40 +++ library/thumbs/obstacle_006.png | Bin 0 -> 656 bytes library/thumbs/obstacle_006.png.import | 40 +++ library/thumbs/obstacle_007.png | Bin 0 -> 932 bytes library/thumbs/obstacle_007.png.import | 40 +++ library/thumbs/obstacle_008.png | Bin 0 -> 674 bytes library/thumbs/obstacle_008.png.import | 40 +++ library/thumbs/obstacle_009.png | Bin 0 -> 660 bytes library/thumbs/obstacle_009.png.import | 40 +++ library/thumbs/obstacle_010.png | Bin 0 -> 694 bytes library/thumbs/obstacle_010.png.import | 40 +++ tests/probe_d2_barriers_render.gd | 173 +++++++++++ tests/probe_d2_barriers_render.gd.uid | 1 + 57 files changed, 1632 insertions(+) create mode 100644 library/thumbs/barrier_001.png create mode 100644 library/thumbs/barrier_001.png.import create mode 100644 library/thumbs/barrier_002.png create mode 100644 library/thumbs/barrier_002.png.import create mode 100644 library/thumbs/barrier_003.png create mode 100644 library/thumbs/barrier_003.png.import create mode 100644 library/thumbs/barrier_004.png create mode 100644 library/thumbs/barrier_004.png.import create mode 100644 library/thumbs/barrier_005.png create mode 100644 library/thumbs/barrier_005.png.import create mode 100644 library/thumbs/barrier_006.png create mode 100644 library/thumbs/barrier_006.png.import create mode 100644 library/thumbs/barrier_007.png create mode 100644 library/thumbs/barrier_007.png.import create mode 100644 library/thumbs/barrier_008.png create mode 100644 library/thumbs/barrier_008.png.import create mode 100644 library/thumbs/barrier_009.png create mode 100644 library/thumbs/barrier_009.png.import create mode 100644 library/thumbs/barrier_010.png create mode 100644 library/thumbs/barrier_010.png.import create mode 100644 library/thumbs/barrier_011.png create mode 100644 library/thumbs/barrier_011.png.import create mode 100644 library/thumbs/barrier_012.png create mode 100644 library/thumbs/barrier_012.png.import create mode 100644 library/thumbs/barrier_013.png create mode 100644 library/thumbs/barrier_013.png.import create mode 100644 library/thumbs/barrier_014.png create mode 100644 library/thumbs/barrier_014.png.import create mode 100644 library/thumbs/barrier_015.png create mode 100644 library/thumbs/barrier_015.png.import create mode 100644 library/thumbs/barrier_016.png create mode 100644 library/thumbs/barrier_016.png.import create mode 100644 library/thumbs/barrier_017.png create mode 100644 library/thumbs/barrier_017.png.import create mode 100644 library/thumbs/obstacle_001.png create mode 100644 library/thumbs/obstacle_001.png.import create mode 100644 library/thumbs/obstacle_002.png create mode 100644 library/thumbs/obstacle_002.png.import create mode 100644 library/thumbs/obstacle_003.png create mode 100644 library/thumbs/obstacle_003.png.import create mode 100644 library/thumbs/obstacle_004.png create mode 100644 library/thumbs/obstacle_004.png.import create mode 100644 library/thumbs/obstacle_005.png create mode 100644 library/thumbs/obstacle_005.png.import create mode 100644 library/thumbs/obstacle_006.png create mode 100644 library/thumbs/obstacle_006.png.import create mode 100644 library/thumbs/obstacle_007.png create mode 100644 library/thumbs/obstacle_007.png.import create mode 100644 library/thumbs/obstacle_008.png create mode 100644 library/thumbs/obstacle_008.png.import create mode 100644 library/thumbs/obstacle_009.png create mode 100644 library/thumbs/obstacle_009.png.import create mode 100644 library/thumbs/obstacle_010.png create mode 100644 library/thumbs/obstacle_010.png.import create mode 100644 tests/probe_d2_barriers_render.gd create mode 100644 tests/probe_d2_barriers_render.gd.uid diff --git a/library/objects.json b/library/objects.json index da2b3d8..982c436 100644 --- a/library/objects.json +++ b/library/objects.json @@ -2,6 +2,244 @@ "library_version": 1, "note": "Editor-Kopie der offiziellen Bibliotheks-Registry (geschlossener Baukasten, PLAN Entscheidung 20). Quelle: scopedvr-match-server library/objects.json — beim Registrieren neuer Objekte DORT zuerst eintragen und hier synchron ziehen. 'poly' = Referenz-Dreieckszahl (Budget-Rechnung, map_format.md §4 V8); 'collision' = Approximation für Platzhalter-Darstellung im Viewport.", "objects": { + "barrier_001": { + "poly": 72, + "collision": { + "shape": "box", + "size": [ + 2.325, + 0.772, + 0.936 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_001.glb", + "kategorie": "barriers", + "name_de": "Absperrung 001 (Betonblock)" + }, + "barrier_002": { + "poly": 48, + "collision": { + "shape": "box", + "size": [ + 5.026, + 0.241, + 0.935 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_002.glb", + "kategorie": "barriers", + "name_de": "Absperrung 002 (Sperrbalken)" + }, + "barrier_003": { + "poly": 80, + "collision": { + "shape": "box", + "size": [ + 4.37, + 0.966, + 0.422 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_003.glb", + "kategorie": "barriers", + "name_de": "Absperrung 003 (Drahtsperre)" + }, + "barrier_004": { + "poly": 119, + "collision": { + "shape": "box", + "size": [ + 1.291, + 1.319, + 1.291 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_004.glb", + "kategorie": "barriers", + "name_de": "Absperrung 004 (Betonpoller)" + }, + "barrier_005": { + "poly": 119, + "collision": { + "shape": "box", + "size": [ + 1.291, + 1.319, + 1.291 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_005.glb", + "kategorie": "barriers", + "name_de": "Absperrung 005 (Betonpoller)" + }, + "barrier_006": { + "poly": 1560, + "collision": { + "shape": "box", + "size": [ + 4.953, + 1.105, + 2.194 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_006.glb", + "kategorie": "barriers", + "name_de": "Absperrung 006 (breite Sperre)" + }, + "barrier_007": { + "poly": 1320, + "collision": { + "shape": "box", + "size": [ + 5.863, + 1.07, + 0.485 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_007.glb", + "kategorie": "barriers", + "name_de": "Absperrung 007 (Drahtsperre lang)" + }, + "barrier_008": { + "poly": 60, + "collision": { + "shape": "box", + "size": [ + 0.909, + 0.287, + 0.445 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_008.glb", + "kategorie": "barriers", + "name_de": "Absperrung 008 (Bodensperre)" + }, + "barrier_009": { + "poly": 60, + "collision": { + "shape": "box", + "size": [ + 0.875, + 0.283, + 0.447 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_009.glb", + "kategorie": "barriers", + "name_de": "Absperrung 009 (Bodensperre)" + }, + "barrier_010": { + "poly": 1560, + "collision": { + "shape": "box", + "size": [ + 4.953, + 1.105, + 2.194 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_010.glb", + "kategorie": "barriers", + "name_de": "Absperrung 010 (breite Sperre)" + }, + "barrier_011": { + "poly": 60, + "collision": { + "shape": "box", + "size": [ + 0.909, + 0.287, + 0.445 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_011.glb", + "kategorie": "barriers", + "name_de": "Absperrung 011 (Bodensperre)" + }, + "barrier_012": { + "poly": 60, + "collision": { + "shape": "box", + "size": [ + 0.875, + 0.283, + 0.447 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_012.glb", + "kategorie": "barriers", + "name_de": "Absperrung 012 (Bodensperre)" + }, + "barrier_013": { + "poly": 1320, + "collision": { + "shape": "box", + "size": [ + 5.863, + 1.07, + 0.485 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_013.glb", + "kategorie": "barriers", + "name_de": "Absperrung 013 (Drahtsperre lang)" + }, + "barrier_014": { + "poly": 123, + "collision": { + "shape": "box", + "size": [ + 1.291, + 1.284, + 1.291 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_014.glb", + "kategorie": "barriers", + "name_de": "Absperrung 014 (Betonpoller)" + }, + "barrier_015": { + "poly": 123, + "collision": { + "shape": "box", + "size": [ + 1.291, + 1.284, + 1.291 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_015.glb", + "kategorie": "barriers", + "name_de": "Absperrung 015 (Betonpoller)" + }, + "barrier_016": { + "poly": 145, + "collision": { + "shape": "box", + "size": [ + 1.429, + 1.326, + 1.433 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_016.glb", + "kategorie": "barriers", + "name_de": "Absperrung 016 (Betonblock)" + }, + "barrier_017": { + "poly": 145, + "collision": { + "shape": "box", + "size": [ + 1.429, + 1.326, + 1.433 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/barrier_017.glb", + "kategorie": "barriers", + "name_de": "Absperrung 017 (Betonblock)" + }, "barrier_sandbag": { "poly": 36, "collision": { @@ -1256,6 +1494,146 @@ ] } }, + "obstacle_001": { + "poly": 276, + "collision": { + "shape": "box", + "size": [ + 12.936, + 0.998, + 2.176 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/obstacle_001.glb", + "kategorie": "barriers", + "name_de": "Hindernis 001 (Hindernisbahn flach)" + }, + "obstacle_002": { + "poly": 312, + "collision": { + "shape": "box", + "size": [ + 12.936, + 1.93, + 2.176 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/obstacle_002.glb", + "kategorie": "barriers", + "name_de": "Hindernis 002 (Hindernisbahn mittel)" + }, + "obstacle_003": { + "poly": 348, + "collision": { + "shape": "box", + "size": [ + 12.936, + 2.86, + 2.176 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/obstacle_003.glb", + "kategorie": "barriers", + "name_de": "Hindernis 003 (Hindernisbahn hoch)" + }, + "obstacle_004": { + "poly": 1032, + "collision": { + "shape": "box", + "size": [ + 3.87, + 1.188, + 10.499 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/obstacle_004.glb", + "kategorie": "barriers", + "name_de": "Hindernis 004 (Drahtzaun)" + }, + "obstacle_005": { + "poly": 92, + "collision": { + "shape": "box", + "size": [ + 1.846, + 2.577, + 3.105 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/obstacle_005.glb", + "kategorie": "barriers", + "name_de": "Hindernis 005 (Klettergeruest mit Leiter)" + }, + "obstacle_006": { + "poly": 114, + "collision": { + "shape": "box", + "size": [ + 3.625, + 2.887, + 4.856 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/obstacle_006.glb", + "kategorie": "barriers", + "name_de": "Hindernis 006 (Hinderniswand)" + }, + "obstacle_007": { + "poly": 240, + "collision": { + "shape": "box", + "size": [ + 2.214, + 2.433, + 7.42 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/obstacle_007.glb", + "kategorie": "barriers", + "name_de": "Hindernis 007 (Balancierbalken mit Leiter)" + }, + "obstacle_008": { + "poly": 50, + "collision": { + "shape": "box", + "size": [ + 3.135, + 1.838, + 0.303 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/obstacle_008.glb", + "kategorie": "barriers", + "name_de": "Hindernis 008 (Wand mit Durchschlupf)" + }, + "obstacle_009": { + "poly": 48, + "collision": { + "shape": "box", + "size": [ + 1.458, + 1.185, + 0.619 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/obstacle_009.glb", + "kategorie": "barriers", + "name_de": "Hindernis 009 (Hindernistafel)" + }, + "obstacle_010": { + "poly": 48, + "collision": { + "shape": "box", + "size": [ + 1.458, + 1.203, + 0.619 + ] + }, + "glb": "res://assets/objekte/military_desert/barriers/obstacle_010.glb", + "kategorie": "barriers", + "name_de": "Hindernis 010 (Hindernistafel)" + }, "pflanze_farn": { "poly": 288, "collision": { diff --git a/library/thumbs/barrier_001.png b/library/thumbs/barrier_001.png new file mode 100644 index 0000000000000000000000000000000000000000..ce6f140604e3e2e58ea7ba64e5b65b2a63894811 GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>U<&heaSW-L z^Y-q>phE!y4i}GpOkXmA@8A9{TRxU=sWO)IP-$s-v#;7eQ}oX1XRc{aK76eF$D6qK zZ7t)i>5K;?8RpQN*!#Yg(fdzL{oOxrDt5goQ2jcUC*h0%SMrSYvl-gfnYTFlyf$jc z&TG$X&x)5aE&CsTNx#2^xp>Eq1SC?)Z>X;QyV`q|Ja&*kQ72lg{;vUll*h+soG( z*(T4(zo0UeVKb;@?OJu`^uN$=afTlD&XKOHKuwbS- b@tb*8cHzQvPrjK0lN*DltDnm{r-UW|pk(@6 literal 0 HcmV?d00001 diff --git a/library/thumbs/barrier_001.png.import b/library/thumbs/barrier_001.png.import new file mode 100644 index 0000000..623bd0d --- /dev/null +++ b/library/thumbs/barrier_001.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b4bow25wrxsuv" +path="res://.godot/imported/barrier_001.png-f4f9b068e708eb35cf4f0689fd3c6f74.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/barrier_001.png" +dest_files=["res://.godot/imported/barrier_001.png-f4f9b068e708eb35cf4f0689fd3c6f74.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/barrier_002.png b/library/thumbs/barrier_002.png new file mode 100644 index 0000000000000000000000000000000000000000..17bba90bd7600922db0b40e4c056b2855985465c GIT binary patch literal 599 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>U=s9naSW-L z^Y*T--(d#S)s+i_Yt>Z+?$^owoGnmT7Y)ZmO>S|AX`J zw@benu9-6)5N5C$V50hMZA10%f4}zp$f>tjS24-(R_M?B2eO;(r%OBwWje6;@O-tF z*Hf!m@7xyYm-rX{i0#C@ot(=!ABJc$+zb*>Iuan{uuY|fL#^!+gOQ@mJpqPIOBG#u z`V%!6BDpyPlanNb9MoEF^YSWWvnnpKV`FJpquSCjOCkWMdX5v*47cMA>=ObNIUe}0 zRdmVWZf4Ni!q(F9PlBaj@kK?BgtWy@1)3#kzYlNxU3yn3zkyx)X}db3P2^WyRYskV zt4Bi_bz-)DEoC&x;%m8gxL@Fa*4)DzS|7S|BwQ6b6xJrM$WT+q(WK5$!PGz}V*irr Wnsc2?S~mhy3WKMspUXO@geCz0K*j<9 literal 0 HcmV?d00001 diff --git a/library/thumbs/barrier_002.png.import b/library/thumbs/barrier_002.png.import new file mode 100644 index 0000000..8d34b1f --- /dev/null +++ b/library/thumbs/barrier_002.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://do8u4gsq2vcio" +path="res://.godot/imported/barrier_002.png-226efbbe1880285f86c95e9a1be7518e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/barrier_002.png" +dest_files=["res://.godot/imported/barrier_002.png-226efbbe1880285f86c95e9a1be7518e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/barrier_003.png b/library/thumbs/barrier_003.png new file mode 100644 index 0000000000000000000000000000000000000000..2386a3ccdb95a0fb62e4fe7f8e6d79a03735e7f3 GIT binary patch literal 571 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D%zzk0ejhE&XX zd)M0Uu!D$0VDk+gkqZa^d3#B1V-{6vsu6f#Vf=lLmRDl*tksp=fA7!dj=UZn z&v0AFVGhG176J7J3&tay3VsZQOdZ0s7P@oxn)nCl_4?=U@7rBnaqEHCv2^y1*=h~f zr$66o&3v5KlBw@z?|}%5++7T1oe#HUx*b@_YNqsUx762u<^6ik7Bckd?ut!Z#4zpY zbM9A$pDthd&d~lw@0&Z%)!(g(j7h5CZT*NYGQ@%^hUmI^8 z=XVUJKYd=_u=QN|y3gx!Z!l~#3Fcw?vG`)LzyW*7udS0A!VH3Vm?Ca2J+9DTyz`2{ z9(Ie#&hN#xsWtG%1o5~z+%d7|cvw#7Aj62HYWA~XS$UQRyZ-`H1B0ilpUXO@geCwa C0LnoC literal 0 HcmV?d00001 diff --git a/library/thumbs/barrier_003.png.import b/library/thumbs/barrier_003.png.import new file mode 100644 index 0000000..fc3dbaf --- /dev/null +++ b/library/thumbs/barrier_003.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdedbakl7ykr8" +path="res://.godot/imported/barrier_003.png-22cd5cdb2ab7396c5afef5360b5067dd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/barrier_003.png" +dest_files=["res://.godot/imported/barrier_003.png-22cd5cdb2ab7396c5afef5360b5067dd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/barrier_004.png b/library/thumbs/barrier_004.png new file mode 100644 index 0000000000000000000000000000000000000000..81a789bc9c6e261f25af386e57d25a13ccb84633 GIT binary patch literal 636 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>U^4S`aSW-L z^Y*Tx-{Ale){D|d(iSxEeTxsev_V#5g6e6N6B{4>*lS<>%fo)3@^Qf+3){VWYTYCF z-Q^vQ8!=cgHyG2FsJ8jV@cqNrpBrD6o?rjo+|JW>`NcY|ve!4Vd&OLDGklZ#6%~6} zL*8NQ!u6rHJ)0OyBXKxL|t?7&hwsI^uytZWJ>6y_i3;s$l#LQ;c zbth$++$E@I~$Ax%=?U^4S`aSW-L z^Y*Tx-{Ale){D|d(iSxEeTxsev_V#5g6e6N6B{4>*lS<>%fo)3@^Qf+3){VWYTYCF z-Q^vQ8!=cgHyG2FsJ8jV@cqNrpBrD6o?rjo+|JW>`NcY|ve!4Vd&OLDGklZ#6%~6} zL*8NQ!u6rHJ)0OyBXKxL|t?7&hwsI^uytZWJ>6y_i3;s$l#LQ;c zbth$++$E@I~$Ax%=?VD|TPaSW-L z^Y*U4x3r@~!^c3TrbprdN17{EEZw>#VCnL@pK>-|68PiT_!VDxeo*+=oKd9_t)`f_ zX?E}Io6mpFjp{kM>+_Fuc_J~tKm7cy!I8c9Epxzb9)@!a4+f4{cl{gVmD0jGvv21hI_qNrVFjR>&s;oG%o$IKy?^*nF()tYT2tY5!Av3Bph zr{`?0b6dJ!+R4y%IPt~TWBb=6ePnNTym9+>_8-&Ye+NU#${9ENy?gR#dDqc?L$fL$ z%hP%d0%HI9yzd(=J3irV?t>-E-oH%lNp3VroVvY5N8Mr7%gMLDJZj%?E8jI;-htz* zQbko&)C<$(9>rr4ZHFJm^v7QJ07Gb{cv*hz zo2?svD6ToT?ZQgV2~l5I;$vf5@7}$;Qog#bj!#-zn%lO1)!9stq}DRW*q4v|{rWc@ z-M@3^%9`w(&rDvtVeyzc_rbPxj6r@4s@k*JUOu{i|9*Sj{{M09TZIG|MY;s?^7EIo zZQQz5^xOCE&K&Q*^CjLcXYSBlaAwc%d_k9+Wr0t{gW}@i4lQ4A|E%hb(L-j9J`+1ZFJ;22WQ%mvv4FO#rr* BpdbJM literal 0 HcmV?d00001 diff --git a/library/thumbs/barrier_006.png.import b/library/thumbs/barrier_006.png.import new file mode 100644 index 0000000..8499591 --- /dev/null +++ b/library/thumbs/barrier_006.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bniuittd4da0d" +path="res://.godot/imported/barrier_006.png-a42842c6692537da809bd937c042edfc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/barrier_006.png" +dest_files=["res://.godot/imported/barrier_006.png-a42842c6692537da809bd937c042edfc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/barrier_007.png b/library/thumbs/barrier_007.png new file mode 100644 index 0000000000000000000000000000000000000000..f275471c40abd5ccef97d2605da853f8ce0b08e6 GIT binary patch literal 1014 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>VBX;A;uumf z=k4A7-qMLO$3Nz833QZE;%my_Q*<^qd2k`RCFsSamEOnyRZ4D7d39rHz?`mt7&!qM z7Ij&df`H48dQa+}?lJlHZs+;mtgThkmo&b&K5yIExb5D)YJ0;IQ7eCOE{I}L=wmn{ z*kHjV;Lh-f!$F3zLz$s)00h4;d!@c1Cw;m4<^A8;6I;(8;a|J#&-TL2&F7s3GJ825 zs2=uLYD+!dgzB_P%}lwzsUkz5VvXhYw%* z=xRRM?)Zbdati+S0?XJ0dF?CT_P5Qqv9tbj{P^+f6|=Tpp246L$npLA_shu_6V|U= zm$ZGZ?2or^bKl%~^=j43nRoBpIrI1XsT`fxD+(E1`VR45lW*C``1akqSvNmlP@DW? zYJPV1={dzK8_TWczO3D(^Z0YSmT4M)K#GmjtjL;#bC%pq2X4JBd$SD~03}x2HgBH% zGorGZRsK7Z5#yOtw+!??zg;xb-q7Tmkb(cFO9|8VPdQ)L5%R5BMc!i_gJ){n(>a^V zcIP?@h}^r@9_moU>TxPc@Y9znTkfU>1+E_wf26Hp(0qJx!xz*28S?|4OK>P0-y^Un zyiT}ox&s62vBeADzJGuF*fFtYAD_O?mTi?kW0}s+&%d$w z;)l(45uaGK4=~mJ`!VnL*3BnVlGcW4e~!5u_ZMgbx8=Vdmfz<(oBUZ*T>7VpQ~Q8W zkGu2hvfbOZZ3}xV2bf{aSW-L z^Y-puFJ?y(hlhbRQ$?aOmYYpWQoa%Kt3vbg4~c1+m!7arD!VPPWdft<*>$u3?k+xe zz11NtfvDS+TMl4UxcX({XV8PsAJP^c=%^S@xOuzc+?fLI|>+;y{oZK>Z z%BT5`?R*S4S__KEbfb&S}Let-JT`mj9Yr>%=~xRM6>)v>)@2MZO$?{C36-_E&1# z<^Mh~W?u1e*NpmV+o#sQ%y<~q{a|;rI>YdQhv6I@2|EUc=ed_JeBJK|OmqyMu6{1- HoD!MV4C9T;uumf z=j~nFZmB>Chlk~<|9y0lHg~=ek4vh4w1LF4p~PlcKp_XO)1 zN;ohF^&J#<;ARLyJ6a+4)M z^3lc(aqEA}JzVmJspChz4v%Bxw2e_~f5|;wqQktRNBwe~vxN-b#u&ZFA7Ad=E_rX# z9sQe*5V1;qM3a>sWHwD_)*|A8#mSdjEgf?%v<} z_EP)vqBk&x%(4+Po9$~;^Y`YBue%!f7Zl}kI9I;fA@WLY!MW=B5`D*$H+9QDVD|TPaSW-L z^Y*U4x3r@~!^c3TrbprdN17{EEZw>#VCnL@pK>-|68PiT_!VDxeo*+=oKd9_t)`f_ zX?E}Io6mpFjp{kM>+_Fuc_J~tKm7cy!I8c9Epxzb9)@!a4+f4{cl{gVmD0jGvv21hI_qNrVFjR>&s;oG%o$IKy?^*nF()tYT2tY5!Av3Bph zr{`?0b6dJ!+R4y%IPt~TWBb=6ePnNTym9+>_8-&Ye+NU#${9ENy?gR#dDqc?L$fL$ z%hP%d0%HI9yzd(=J3irV?t>-E-oH%lNp3VroVvY5N8Mr7%gMLDJZj%?E8jI;-htz* zQbko&)C<$(9>rr4ZHFJm^v7QJ07Gb{cv*hz zo2?svD6ToT?ZQgV2~l5I;$vf5@7}$;Qog#bj!#-zn%lO1)!9stq}DRW*q4v|{rWc@ z-M@3^%9`w(&rDvtVeyzc_rbPxj6r@4s@k*JUOu{i|9*Sj{{M09TZIG|MY;s?^7EIo zZQQz5^xOCE&K&Q*^CjLcXYSBlaAwc%d_k9+Wr0t{gW}@i4lQ4A|E%hb(L-j9J`+1ZFJ;22WQ%mvv4FO#rr* BpdbJM literal 0 HcmV?d00001 diff --git a/library/thumbs/barrier_010.png.import b/library/thumbs/barrier_010.png.import new file mode 100644 index 0000000..93865e5 --- /dev/null +++ b/library/thumbs/barrier_010.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dqp4lh18nyw6g" +path="res://.godot/imported/barrier_010.png-eb2f5f66658412f8d13ad87794ce497c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/barrier_010.png" +dest_files=["res://.godot/imported/barrier_010.png-eb2f5f66658412f8d13ad87794ce497c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/barrier_011.png b/library/thumbs/barrier_011.png new file mode 100644 index 0000000000000000000000000000000000000000..8b1c305a5107e57701be2cf0c25659053bb6f728 GIT binary patch literal 674 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>V2bf{aSW-L z^Y-puFJ?y(hlhbRQ$?aOmYYpWQoa%Kt3vbg4~c1+m!7arD!VPPWdft<*>$u3?k+xe zz11NtfvDS+TMl4UxcX({XV8PsAJP^c=%^S@xOuzc+?fLI|>+;y{oZK>Z z%BT5`?R*S4S__KEbfb&S}Let-JT`mj9Yr>%=~xRM6>)v>)@2MZO$?{C36-_E&1# z<^Mh~W?u1e*NpmV+o#sQ%y<~q{a|;rI>YdQhv6I@2|EUc=ed_JeBJK|OmqyMu6{1- HoD!MV4C9T;uumf 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 literal 0 HcmV?d00001 diff --git a/library/thumbs/barrier_016.png.import b/library/thumbs/barrier_016.png.import new file mode 100644 index 0000000..32d95d6 --- /dev/null +++ b/library/thumbs/barrier_016.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://vxhhg57x3glt" +path="res://.godot/imported/barrier_016.png-3038acd7ed4790ba4581f5f0397bc15d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/barrier_016.png" +dest_files=["res://.godot/imported/barrier_016.png-3038acd7ed4790ba4581f5f0397bc15d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/barrier_017.png b/library/thumbs/barrier_017.png new file mode 100644 index 0000000000000000000000000000000000000000..1d4000919e8a5e037907b2c700568fd841d1f069 GIT binary patch literal 803 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>V7lw+;uumf z=k1-nc~XHQt`FZ%n9kXEV4~<`4%e$868m7Fm&=nGf$3fBWTS zzAs7t{8Yh5uMR(1C!DiayOv>!E5kF612T*=lo^Uy68ad<2sT(U8MxCx@cX_mj9!&B zJN`dUfBbUI0nbyrivFy+;rv*BvMJwchI>YT3@;wuz?snT@xQv4gcxH?)t}m}?Gyg( zZ1qwP;$K891tv>jM}K>i!>MIq>5!hakga{^h?IB%=;JIebnjo*Ii!%gI3uwc+RT-zjpa@ zb=~QwfhyEp7$$vrd|kfRZSke!9_l^}lT3Eb4gYWWI>U*z;a@9H!*YjuCpH1kw;P2H zG-S!gbICZgh?_TUV7#K|wO}E0$0w!hIwcHSyF}7{Fl1G43|}4kQhAO_4a3$KyZn4F zzj*d}`z3cv&sq5#nmirA# zGv@>SyJq^uUF*E9_f4^Am|J}8blH9RN#D3CUS82w{2c$+ZZ<<%oN&|WACnG>ez>%; raPG0`Jo6bU&b{Mocuuoa^P9UgYGLZePiOW3Q$2&HtDnm{r-UW|yZBuK literal 0 HcmV?d00001 diff --git a/library/thumbs/barrier_017.png.import b/library/thumbs/barrier_017.png.import new file mode 100644 index 0000000..6313a76 --- /dev/null +++ b/library/thumbs/barrier_017.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cuybgegcb1m21" +path="res://.godot/imported/barrier_017.png-5da73739577e9b74184fd835032bda12.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/barrier_017.png" +dest_files=["res://.godot/imported/barrier_017.png-5da73739577e9b74184fd835032bda12.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/obstacle_001.png b/library/thumbs/obstacle_001.png new file mode 100644 index 0000000000000000000000000000000000000000..eb112173ae30149a6729cd28e50b2b85f63c5d50 GIT binary patch literal 641 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>V6ygfaSW-L z^Y*T--(d#+Ndm~e%(Zt8`nb$YJuN7UowDR89W7Br*sjd0j zvLP-jzTuS-g9USg@jw#Z;s^eg_5OYv_1kFH$Ee>--=y3>{QDXE(W}T?`oIjsH`DXD zBOZxuJga)Rp0Bp7eZAxs?L&J+7^vQMZZ1Sz-y_gTfbw17ZcQdCMM< zI%cr`Cj(oa;AH_u8B4Kka!!{S&-`_G()D5aONMJo#}gQotG9K%F*Nz8w_w?u_lhx$ zk8b#%4K`|R;7^eFbm>CWUAYg8IahD3N?@?wD%8X%Q}AVXv+)ri&)3!>jptDE1Gn?{ z9QyvB`{Fu@@r_CO_B5`8x(g;OmH4%wu_n|vZe=vBG87Df?sp1(YY`#*>@Jm+FaXDDE!1F^p{ XY|50L1tF@yG{xZQ>gTe~DWM4fQ<~dX literal 0 HcmV?d00001 diff --git a/library/thumbs/obstacle_001.png.import b/library/thumbs/obstacle_001.png.import new file mode 100644 index 0000000..e837f3d --- /dev/null +++ b/library/thumbs/obstacle_001.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cf5fev7c8out3" +path="res://.godot/imported/obstacle_001.png-3021b85a3bac580a2b2e3766a57a66c3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/obstacle_001.png" +dest_files=["res://.godot/imported/obstacle_001.png-3021b85a3bac580a2b2e3766a57a66c3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/obstacle_002.png b/library/thumbs/obstacle_002.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d01459ec0b2add92b7c63d239309492974f2a1 GIT binary patch literal 650 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>U~=(vaSW-L z^Y*T_AG4u|Lm>M`$)E{+Z}$7lRJ+}%WF&Rr&(x34?^dsxqWtsO&BqFbzkdAr<#(uR z^I+j^Wgp)V~ z9lVaaP6&D_z z5)MA_?@MD;;^7ZpeHY{NmPCZ(l!f%8JvLN6XV klrG2g@D3C0zopr0K}&QE&u=k literal 0 HcmV?d00001 diff --git a/library/thumbs/obstacle_002.png.import b/library/thumbs/obstacle_002.png.import new file mode 100644 index 0000000..15ba37e --- /dev/null +++ b/library/thumbs/obstacle_002.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b2dkeowwt4uvr" +path="res://.godot/imported/obstacle_002.png-c4ad31398e160b997446f9f780c6954f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/obstacle_002.png" +dest_files=["res://.godot/imported/obstacle_002.png-c4ad31398e160b997446f9f780c6954f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/obstacle_003.png b/library/thumbs/obstacle_003.png new file mode 100644 index 0000000000000000000000000000000000000000..22d2a831ef973c294a73887edffa43410808219d GIT binary patch literal 686 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>V9M}xaSW-L z^Y*TF&|wDwhKq(rLuDKoB=^;Oyg1Uy&&;{#i2J6L4QXY&aCx&f;EhYWt??60eP{;&*sngf6dm#sh_P6T;bny zs?T7Bl=ElCm>}Jjjwr(t`2!1*I0SzhDlo0s_2Yi(kqci1BL4n}U`%445v;j`DKz`Cl?evN8WKsQc~CweYoKLFY=x!XI;Lvv-)LH?-!-I$c|r%%FW& zspU*`pYZ{&y}aFQ4DIqv>o1;?KB3B!uyp6*q;7Tge8%t{Cd_N*3L7V6O0VaSW-L z^Y-q>tlJI@4G)VyPP^XGp61c!Wc)>OQ_7jgsb40wYaDgf)H~`u?{M@2*;A5{9?K^S z62~#RslR2+X8XSX7!}U= zh0DMsv-Wtg+U{uz6BtYGUOs+AV1HdkegLx%L$aE-dE1p4n)cgUT&HS-q7em~(^UFD_ZrZgAe0p~^u=wY@%W{*u7EW8b&p(t==G*Rq+S=M# z3(lrZmXR)h^?vSwb$=b+CEvRf-g1-u!oEx4tFOL{$Xa|&X0mbKnV%;0WpC3Y9jY(M z%gvwkxLAEhZNI#6r}yk1D}DqYct8LC;i|v?P2%F?4YH;Y@fXF zedO#%+6Suk+SOL9tghmCe*T8@WW#Uw?#b=HqP=fz1w-JT@aK2V7a!~Uds8s=(c(vp zTkK!VnfrUn#^Cen-y_y`u?sj^x-ys_jk|E-}h*#--`&>e8yPoUz+PP=l*!v^`3Fp6SoIP z_QziYnxUUF?UVVBVv}y)guZ9Wi-rFeuKKb0129G0yLa!<+v)jB{Zk9mcCx>C^d#QR zl<|cTBAKq@NO-lr*>p|UcZOYaw89u-`xp;MGR&b7@s~N`SxfnEt6gh>8Ir-%)z4*} HQ$iB}7WTlM literal 0 HcmV?d00001 diff --git a/library/thumbs/obstacle_004.png.import b/library/thumbs/obstacle_004.png.import new file mode 100644 index 0000000..3e75819 --- /dev/null +++ b/library/thumbs/obstacle_004.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d2gvj4dpl7kp4" +path="res://.godot/imported/obstacle_004.png-2d3f262f72281c2fee4b42b5c89c798a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/obstacle_004.png" +dest_files=["res://.godot/imported/obstacle_004.png-2d3f262f72281c2fee4b42b5c89c798a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/obstacle_005.png b/library/thumbs/obstacle_005.png new file mode 100644 index 0000000000000000000000000000000000000000..d3915f26b90b50c40d005bc7ad4a1c7e21c157fe GIT binary patch literal 857 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>U>5dtaSW-L z^Y+$$KP^WIhmQ~0JQOBO5a?)W>T=?K`^7M?`1J3JX=Zk9OM7`u*E_skYj%(~?%xiB z`vvFL8!M)4DlRLN*j`%w|HsUhuiD=krc7r%AjvR?wnU8ecZOMCKK`3l&2fKMb;T*$ zmbqQr3ZGP_YveHaeMwE>U$C-so&LtF-=D=)DfcAKUo-nauzLOPrgdSfCy4KuBC7M6 ztKj>GE#IA7=iEtlk+1*e?qJ(=HEU|!|DUr9U33)BG1e7LKa;kZ&Ha$DQbTU@!G!ne z+roQl=hxR({`)v%T_jM$-4vsrpT4iNb^1C(BXzN8h}KI$BH{Q%3~K#U^LlTD9zX2TYG(>mj&aR7M=y3bN$r6 z3pjC0I;_8b+Lonf0^^-Kcb>>Gxt#!-`?zjS#f{=!0gO{NWbQIs$Yc?^|NeQ~mZVnR z2NP2FMj0-<{Bmb|@zz6gSmYMh9TNYzJWjKJ^9IH%>R)%4vn`VS?k0WSE|Gc0`RDsI ziWna+;eYV;sip4p(@JWaS`4qX-eI{mwIb15(5xZr z(qGMrxQFtLck{~Mr^hJziI=fnNR@yjqL|m;{(Ut5t}vxvo7SlcmT3PnKb$=AgwgWb R8-aO+!PC{xWt~$(69DRJYE1wD literal 0 HcmV?d00001 diff --git a/library/thumbs/obstacle_005.png.import b/library/thumbs/obstacle_005.png.import new file mode 100644 index 0000000..8b96d7e --- /dev/null +++ b/library/thumbs/obstacle_005.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://nn2if4w573uc" +path="res://.godot/imported/obstacle_005.png-26c09b94401d6835c5cb54ae56b3777a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/obstacle_005.png" +dest_files=["res://.godot/imported/obstacle_005.png-26c09b94401d6835c5cb54ae56b3777a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/obstacle_006.png b/library/thumbs/obstacle_006.png new file mode 100644 index 0000000000000000000000000000000000000000..1bfc3f5123bb0a24f5ddaa73084655edb2f512bb GIT binary patch literal 656 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>VDj>GaSW-L z^Y*T--(d$4*N5y$+IkBb_`bylEn9dpX@SGEfDW6JH?E!dK4-m;V6VyX^Y%e=+Mi$l z{$A+X;}@(MI?N5m3>Nevb}YZhedE;im!I#a>*vcehZX4OuOc$SDWs|a#47}(_1YWty4CAG%jJ7KFv?kR`?kQPr|{c%jTbd?x=mUe|uy3 zjAbkL`OOc!e1P*p=4V2<;2aSW-L z^Y-rkyvqR+4j-eBtWHsIZf;q?{K~lGZl zH~;hG2^uDap+dr@dRa);xW|&nR_Z0^`0t zd*;;7Z~yT6dH;r+Ig|ED9J#}~g?F#TfnA?#Z{OcqTgN4!?Qr))JCE*ug)^IUa?EC5 zy6$hv^v3nUgxlMJ7H}v|X_I&2$j{H8ymx)JGs}fC`}?LX+s;?l)%krpBp~PzSlGOL zMdktD`nW$*Ki4L8h1K$2cz$U8``4?Yk1fBfc`~~(l!oYQ0`3I?GS8)UJN7|GOxKm!b>K3*HVb{gE6uze$BTL+a1g{Xc)s zb2v4LXF=AfgZy`;J+5joooF{xYq@gnZm{Pkr4N^wrD~V_b2uJx@~^=Pi#6Wc^K-Qi zExo>^!r$ISXnBLTdqyxv?Yt+7JiGm_F!J2I@N)C&>HFJsb}_W&-4C-rez08FmmxU+ zl}YP^2dBk&6V3$QO0O>Ox_xA8luCo;wu0qir+?3gHd)@VbKk=!)qnKFZgON*DI|M+ z;hncm>^A2dZ6@~n=NCmE40e0)puICmyW)(qOt8&+f3c(d&24K~a@}j@FRys9D1xyl zHmpe`Pcc|1lwqgh^P+ZppDBzj7i^i>?fteewmc}R=M7{RXtF;uGg_paG546=vbALw r*%wrTQ>kmc;EKwfOteX|f7!2Ohwf6nZ*U)&?HD{={an^LB{Ts5JqeVm literal 0 HcmV?d00001 diff --git a/library/thumbs/obstacle_007.png.import b/library/thumbs/obstacle_007.png.import new file mode 100644 index 0000000..dbdc9a7 --- /dev/null +++ b/library/thumbs/obstacle_007.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b6k7tlyy7gtwi" +path="res://.godot/imported/obstacle_007.png-b43a588a90e749088f048b2f07a766b8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/obstacle_007.png" +dest_files=["res://.godot/imported/obstacle_007.png-b43a588a90e749088f048b2f07a766b8.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/obstacle_008.png b/library/thumbs/obstacle_008.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2eefadf3cd80757dc8b4b663ddc23f8c9d3907 GIT binary patch literal 674 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>V2bf{aSW-L z^Y-q>qNV@=hl{3@=XbikdGvq!G_!wxK`9cl%^YmCzrWqP9o2ETP+p;VcK`YH?+tSD z*P0)=rN&Uf)Symt;{96lgv{lS6F+@@oA-Z_?#jS&hIgiHE+X5t*%Q`ei!@oZGZf4X zek3DwAmWOqVuN(xvK9uhkV3DVsz1jkR4;GRea+h{oba@2wh&WA(anBUmJ18KMb;Yr zh;}#}_5KeB;{#y^8^$vlhgZ~v$+4V!Bjot(wSc$q0p`#{7oG|QB&wwUv9o(z%KuFGk0J}9v{Qnp?EP|vCPY-u*Br&%^XVcGC=D(i%&x99EM#Gq6s z$dR}!k5MPmy|rL>9;3^V(|upGnO}Wc_aJ(2mOAeXxyt=M=?sEL8C;&&|2WOI;I(Rk zjy{9#YMBN_#WSmQ8WaV6!sQ%VE+=TQ07d@rvL>t$ZR+_kfk9~wn{xz%a|uTUgL4QA z(~b@cUKRr(&L#%6C}GF20Hz(mUo#aNW`?#ZG_-~~D>SgLGT}XSSK!j3dGd+xSt1s$ zl$}%g+}(mPO#ia-gJ&uX6?%*xSQz{ns7t(OFOM#&;Mi{iOlJ%Xp00i_>zopr0NYRR ATL1t6 literal 0 HcmV?d00001 diff --git a/library/thumbs/obstacle_008.png.import b/library/thumbs/obstacle_008.png.import new file mode 100644 index 0000000..e302239 --- /dev/null +++ b/library/thumbs/obstacle_008.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhguwsrehfxl" +path="res://.godot/imported/obstacle_008.png-7ae4876c971358c1303e82d316d4ffa6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/obstacle_008.png" +dest_files=["res://.godot/imported/obstacle_008.png-7ae4876c971358c1303e82d316d4ffa6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/obstacle_009.png b/library/thumbs/obstacle_009.png new file mode 100644 index 0000000000000000000000000000000000000000..5a224a8be130682ba7c54f189cebc6c650973dc8 GIT binary patch literal 660 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>VDj^HaSW-L z^Y->Zze526ZVxa1Fxqio?w5BJa?>(WB=Pi{Jr?#TEzI4B8}G z8DlP1i?A6u`v*!KaH?~kDCF{|xM7NT)#^vg7jk(R&M`dTdB8X6oGKebIzs^(5zDe+ zDZ763u4!ViEDL@@6oYkuh+P~Dp8jr>692vNgD#)#Tg8CT1cqptnoW9njI-A7W{A7b zH*s}^uK(`8zYE`X&&WD;eS=)(X%8O#B4!@_lGD3w3pM&hb}~NO_1(;)N4JRi%+sF_ z^g|e!m47tuV(p21wQYh_=$+;TOL?24m0CXEpD4sq$2@2EamB*diVEi${wvA}@g}fn zvM}#x5NJ$qa4SB?&dIowQOZ{~?a+tSe~dSryi#6&>ci?g4B=mG{%DyWa1CyoZ}y{6 zI)QQJ;q^uhvsL-`pJK?HWcNpldB=-O4b>8LQ~8@_ss3BOzEyg`#h=dwsvog66f+-? gWSGN94dRaZKHu2Jb>8`*z+}eY>FVdQ&MBb@0J=!>*Z=?k literal 0 HcmV?d00001 diff --git a/library/thumbs/obstacle_009.png.import b/library/thumbs/obstacle_009.png.import new file mode 100644 index 0000000..39666a5 --- /dev/null +++ b/library/thumbs/obstacle_009.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dum6niwulhgrg" +path="res://.godot/imported/obstacle_009.png-db55beebf207ae287791f8dbef16af0e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://library/thumbs/obstacle_009.png" +dest_files=["res://.godot/imported/obstacle_009.png-db55beebf207ae287791f8dbef16af0e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/library/thumbs/obstacle_010.png b/library/thumbs/obstacle_010.png new file mode 100644 index 0000000000000000000000000000000000000000..950a4c378397de0a1faea1674d9d823daf165dab GIT binary patch literal 694 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-HD>U@Gu*aSW-L z^Y)Hq(BS|9hKq(rQwti5YyMwYC>+nOB<^Gubt>wg&v)+55YxZnDqV+f5TyA2&ai+#Qf8lwy`>8CKm+&ei*)(xDOHBU9 zA@Nwya7_)vd5NR?DGcWW78^7${?$0vv?EskBTE~{%qEZzYJS=7xeG4Ub2s6-PT?2#7|rce=l^0(JiMm zR;|6VbqcS;WeJ8kjB7Lw#~y?Sf?h3yq+XP+xBLN#cn)4|*#osd zw!cojD4^vUYSmzyYB`ICLGSDH2bR%=(?oY}ox*7GG(q?|Vym!PAA?|K!wamNV!chuD=i>yw<)<>N}s5hpLjD_l=v zC}3kq2ND|=@#wekB(!zSU&x!VsOxaQ#~dbceL void: + _run() + + +func _run() -> void: + await process_frame + await process_frame + DirAccess.make_dir_recursive_absolute(OUT_DIR) + var manifest: Dictionary = JSON.parse_string( + FileAccess.get_file_as_string(SvmapIO.MANIFEST_PATH)) + if manifest.is_empty(): + fehler.append("Bibliothek (library/objects.json) nicht ladbar") + var lib: Dictionary = manifest.get("objects", {}) + print("Bibliothek: %d Objekte" % lib.size()) + + var vp := SubViewport.new() + vp.size = Vector2i(W, H) + vp.own_world_3d = true + vp.render_target_update_mode = SubViewport.UPDATE_ALWAYS + root.add_child(vp) + + var builder := Node3D.new() + builder.set_script(load("res://src/viewport/map_view_builder.gd")) + vp.add_child(builder) + builder.call("rebuild", _doku(), manifest) + + var cam := Camera3D.new() + vp.add_child(cam) + cam.position = Vector3(0.0, 7.0, 17.0) + cam.look_at(Vector3(0.0, 0.8, 0.0)) + cam.current = true + + print("fehlende GLBs (Platzhalter): %s" % str(builder.get("fehlende_glbs"))) + for o in OBJEKTE: + if not lib.has(o["id"]): + fehler.append("%s fehlt in der Bibliothek" % o["id"]) + continue + _pruefe(builder, lib[o["id"]], o) + if not builder.get("fehlende_glbs").is_empty(): + fehler.append("Platzhalter statt GLB: %s" % str(builder.get("fehlende_glbs"))) + + await process_frame + await process_frame + await RenderingServer.frame_post_draw + await process_frame + var img := vp.get_texture().get_image() + var pfad := OUT_DIR + "/d2_barriers_map_builder.png" + img.save_png(pfad) + print("PROBE_SAVED %s (%dx%d)" % [pfad, img.get_width(), img.get_height()]) + _check_bild(img) + + for f in fehler: + print(" FEHLER: %s" % f) + print("PROBE_D2_RENDER_%s" % ("FAIL" if not fehler.is_empty() else "OK")) + quit(0 if fehler.is_empty() else 1) + + +func _pruefe(builder: Node, eintrag: Dictionary, obj: Dictionary) -> void: + var oid := str(obj["id"]) + var markers: Array = builder.get("object_markers") + var marker: Node3D = null + var idx := -1 + for i in OBJEKTE.size(): + if str(OBJEKTE[i]["id"]) == oid and i < markers.size(): + marker = markers[i] + idx = i + if marker == null: + fehler.append("%s: kein Marker im Viewport-Bauer" % oid) + return + var box := _mesh_aabb(marker, marker) + var col: Dictionary = eintrag.get("collision", {}) + var csize: Array = col.get("size", []) + var dmax := 0.0 + for k in 3: + dmax = maxf(dmax, absf(box.size[k] - float(csize[k]))) + var echt: bool = bool(marker.get_meta("glb", false)) + print("--- %s (Marker %d): echtes GLB=%s" % [oid, idx, str(echt)]) + print(" Mesh-AABB lokal: pos=%s size=%s" % [str(box.position), str(box.size)]) + print(" Unterkante y=%.3f (Boden %.3f, Marker y=%.3f) | size-Abweichung %.3f m" + % [box.position.y, 0.0, marker.position.y, dmax]) + if not echt: + fehler.append("%s: Platzhalter statt GLB im Editor" % oid) + if absf(box.position.y) > 0.02: + fehler.append("%s: Unterkante liegt %.3f m neben dem Boden" % [oid, box.position.y]) + if dmax > 0.02: + fehler.append("%s: Mesh-Größe weicht %.3f m von collision.size ab" % [oid, dmax]) + + +## Grobe Sichtprüfung im Bild: es muss Struktur (helle Pixel) geben und das +## Objektband in der Bildmitte muss sich vom Himmel/Untergrund unterscheiden. +func _check_bild(img: Image) -> void: + var w := img.get_width() + var h := img.get_height() + var hell := 0 + var band := 0 + for y in range(0, h, 2): + for x in range(0, w, 2): + var c := img.get_pixel(x, y) + var lum := (c.r + c.g + c.b) / 3.0 + if lum > 0.55: + hell += 1 + if y > int(h * 0.35) and y < int(h * 0.85): + band += 1 + print("Bild: helle Pixel %d, davon im Objektband %d" % [hell, band]) + if hell < 200: + fehler.append("Renderbild zeigt fast nichts (helle Pixel %d) — Objekte unsichtbar?" % hell) + if band < 50: + fehler.append("kein Objekt im erwarteten Bildband (helle Pixel %d)" % band) + + +func _mesh_aabb(n: Node, bezug: Node = null) -> AABB: + var box := AABB() + var erst := true + var basis: Transform3D = Transform3D.IDENTITY if bezug == null else bezug.global_transform.affine_inverse() + for k in n.get_children(): + if k is MeshInstance3D and (k as MeshInstance3D).mesh != null: + var aabb: AABB = (k as MeshInstance3D).mesh.get_aabb() + aabb = (basis * (k as MeshInstance3D).global_transform) * aabb + box = aabb if erst else box.merge(aabb) + erst = false + var kind := _mesh_aabb(k, bezug) + if kind.size != Vector3.ZERO: + box = kind if erst else box.merge(kind) + erst = false + return box + + +## Flaches Bodenfeld (17², 0 m) — Objekte stehen direkt auf y=0. +func _doku() -> Dictionary: + var res := 17 + var raw := PackedByteArray() + raw.resize(res * res * 2) + return { + "format_version": 2, + "info": {"name": "D2 Absperrungen", "author": "Tests", "version": 1}, + "terrain": { + "type": "heightmap", + "resolution": res, + "size_x_m": 64.0, + "size_z_m": 64.0, + "min_height_m": 0.0, + "max_height_m": 4.0, + "heightmap_r16_b64": Marshalls.raw_to_base64(raw), + }, + "weather": "mittag", + "objects": OBJEKTE, + "spawns": [], + } diff --git a/tests/probe_d2_barriers_render.gd.uid b/tests/probe_d2_barriers_render.gd.uid new file mode 100644 index 0000000..d9e5200 --- /dev/null +++ b/tests/probe_d2_barriers_render.gd.uid @@ -0,0 +1 @@ +uid://c41jvxtxfgern