diff --git a/library/objects.json b/library/objects.json index d73f04d..04bc69a 100644 --- a/library/objects.json +++ b/library/objects.json @@ -1,6 +1,6 @@ { "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.", + "note": "Server-Registry der offiziellen Asset-Bibliothek (geschlossener Baukasten, PLAN Entscheidung 20). 'poly' = Referenz-Dreieckszahl des Client-Meshes (Budget-Rechnung, map_format.md §4 V8); 'collision' = Server-Approximation (Nur Physik, headless). Die Bibliothek waechst mit der Client-Asset-Liste — IDs sind IMMER zuerst HIER registriert, bevor Maps sie referenzieren.", "objects": { "barracks_001": { "poly": 1139, @@ -16,6 +16,188 @@ "kategorie": "buildings", "name_de": "Kaserne" }, + "barrel_001": { + "poly": 184, + "collision": { + "shape": "box", + "size": [ + 0.617, + 0.85, + 0.617 + ] + }, + "glb": "res://assets/objekte/military_desert/props/barrel_001.glb", + "kategorie": "props", + "name_de": "Fass 01" + }, + "barrel_002": { + "poly": 184, + "collision": { + "shape": "box", + "size": [ + 0.617, + 0.85, + 0.617 + ] + }, + "glb": "res://assets/objekte/military_desert/props/barrel_002.glb", + "kategorie": "props", + "name_de": "Fass 02" + }, + "barrel_003": { + "poly": 184, + "collision": { + "shape": "box", + "size": [ + 0.617, + 0.85, + 0.617 + ] + }, + "glb": "res://assets/objekte/military_desert/props/barrel_003.glb", + "kategorie": "props", + "name_de": "Fass 03" + }, + "barrel_004": { + "poly": 184, + "collision": { + "shape": "box", + "size": [ + 0.617, + 0.85, + 0.617 + ] + }, + "glb": "res://assets/objekte/military_desert/props/barrel_004.glb", + "kategorie": "props", + "name_de": "Fass 04" + }, + "barrel_005": { + "poly": 184, + "collision": { + "shape": "box", + "size": [ + 0.617, + 0.85, + 0.617 + ] + }, + "glb": "res://assets/objekte/military_desert/props/barrel_005.glb", + "kategorie": "props", + "name_de": "Fass 05" + }, + "barrel_006": { + "poly": 184, + "collision": { + "shape": "box", + "size": [ + 0.617, + 0.85, + 0.617 + ] + }, + "glb": "res://assets/objekte/military_desert/props/barrel_006.glb", + "kategorie": "props", + "name_de": "Fass 06" + }, + "barrel_007": { + "poly": 184, + "collision": { + "shape": "box", + "size": [ + 0.617, + 0.85, + 0.617 + ] + }, + "glb": "res://assets/objekte/military_desert/props/barrel_007.glb", + "kategorie": "props", + "name_de": "Fass 07" + }, + "barrel_008": { + "poly": 184, + "collision": { + "shape": "box", + "size": [ + 0.617, + 0.85, + 0.617 + ] + }, + "glb": "res://assets/objekte/military_desert/props/barrel_008.glb", + "kategorie": "props", + "name_de": "Fass 08" + }, + "barrel_009": { + "poly": 184, + "collision": { + "shape": "box", + "size": [ + 0.617, + 0.85, + 0.617 + ] + }, + "glb": "res://assets/objekte/military_desert/props/barrel_009.glb", + "kategorie": "props", + "name_de": "Fass 09" + }, + "barrel_010": { + "poly": 184, + "collision": { + "shape": "box", + "size": [ + 0.617, + 0.85, + 0.617 + ] + }, + "glb": "res://assets/objekte/military_desert/props/barrel_010.glb", + "kategorie": "props", + "name_de": "Fass 10" + }, + "barrel_011": { + "poly": 192, + "collision": { + "shape": "box", + "size": [ + 1.183, + 2.578, + 1.183 + ] + }, + "glb": "res://assets/objekte/military_desert/props/barrel_011.glb", + "kategorie": "props", + "name_de": "Fass 11" + }, + "barrel_012": { + "poly": 296, + "collision": { + "shape": "box", + "size": [ + 1.605, + 0.948, + 1.052 + ] + }, + "glb": "res://assets/objekte/military_desert/props/barrel_012.glb", + "kategorie": "props", + "name_de": "Fass 12" + }, + "barrel_013": { + "poly": 126, + "collision": { + "shape": "box", + "size": [ + 2.297, + 1.409, + 1.183 + ] + }, + "glb": "res://assets/objekte/military_desert/props/barrel_013.glb", + "kategorie": "props", + "name_de": "Fass 13" + }, "barrier_001": { "poly": 72, "collision": { @@ -390,6 +572,440 @@ "radius": 0.8 } }, + "box_001": { + "poly": 604, + "collision": { + "shape": "box", + "size": [ + 1.411, + 0.784, + 0.947 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_001.glb", + "kategorie": "props", + "name_de": "Kiste 01" + }, + "box_002": { + "poly": 604, + "collision": { + "shape": "box", + "size": [ + 1.411, + 0.784, + 0.947 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_002.glb", + "kategorie": "props", + "name_de": "Kiste 02" + }, + "box_003": { + "poly": 604, + "collision": { + "shape": "box", + "size": [ + 1.411, + 0.784, + 0.947 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_003.glb", + "kategorie": "props", + "name_de": "Kiste 03" + }, + "box_004": { + "poly": 200, + "collision": { + "shape": "box", + "size": [ + 1.568, + 0.684, + 0.684 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_004.glb", + "kategorie": "props", + "name_de": "Kiste 04" + }, + "box_005": { + "poly": 200, + "collision": { + "shape": "box", + "size": [ + 1.568, + 0.684, + 0.684 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_005.glb", + "kategorie": "props", + "name_de": "Kiste 05" + }, + "box_006": { + "poly": 104, + "collision": { + "shape": "box", + "size": [ + 1.21, + 0.334, + 0.452 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_006.glb", + "kategorie": "props", + "name_de": "Kiste 06" + }, + "box_007": { + "poly": 104, + "collision": { + "shape": "box", + "size": [ + 1.21, + 0.334, + 0.452 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_007.glb", + "kategorie": "props", + "name_de": "Kiste 07" + }, + "box_008": { + "poly": 104, + "collision": { + "shape": "box", + "size": [ + 1.21, + 0.334, + 0.452 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_008.glb", + "kategorie": "props", + "name_de": "Kiste 08" + }, + "box_009": { + "poly": 104, + "collision": { + "shape": "box", + "size": [ + 1.646, + 0.334, + 0.451 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_009.glb", + "kategorie": "props", + "name_de": "Kiste 09" + }, + "box_010": { + "poly": 104, + "collision": { + "shape": "box", + "size": [ + 1.646, + 0.334, + 0.451 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_010.glb", + "kategorie": "props", + "name_de": "Kiste 10" + }, + "box_011": { + "poly": 104, + "collision": { + "shape": "box", + "size": [ + 1.646, + 0.334, + 0.451 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_011.glb", + "kategorie": "props", + "name_de": "Kiste 11" + }, + "box_012": { + "poly": 120, + "collision": { + "shape": "box", + "size": [ + 0.623, + 0.623, + 0.623 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_012.glb", + "kategorie": "props", + "name_de": "Kiste 12" + }, + "box_013": { + "poly": 120, + "collision": { + "shape": "box", + "size": [ + 0.623, + 0.623, + 0.623 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_013.glb", + "kategorie": "props", + "name_de": "Kiste 13" + }, + "box_014": { + "poly": 108, + "collision": { + "shape": "box", + "size": [ + 0.623, + 0.623, + 0.623 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_014.glb", + "kategorie": "props", + "name_de": "Kiste 14" + }, + "box_015": { + "poly": 108, + "collision": { + "shape": "box", + "size": [ + 0.623, + 0.623, + 0.623 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_015.glb", + "kategorie": "props", + "name_de": "Kiste 15" + }, + "box_016": { + "poly": 84, + "collision": { + "shape": "box", + "size": [ + 0.623, + 0.623, + 0.623 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_016.glb", + "kategorie": "props", + "name_de": "Kiste 16" + }, + "box_017": { + "poly": 84, + "collision": { + "shape": "box", + "size": [ + 0.623, + 0.623, + 0.623 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_017.glb", + "kategorie": "props", + "name_de": "Kiste 17" + }, + "box_018": { + "poly": 84, + "collision": { + "shape": "box", + "size": [ + 1.156, + 0.623, + 0.623 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_018.glb", + "kategorie": "props", + "name_de": "Kiste 18" + }, + "box_019": { + "poly": 84, + "collision": { + "shape": "box", + "size": [ + 1.156, + 0.623, + 0.623 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_019.glb", + "kategorie": "props", + "name_de": "Kiste 19" + }, + "box_020": { + "poly": 195, + "collision": { + "shape": "box", + "size": [ + 1.438, + 1.321, + 1.439 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_020.glb", + "kategorie": "props", + "name_de": "Kiste 20" + }, + "box_021": { + "poly": 195, + "collision": { + "shape": "box", + "size": [ + 1.438, + 1.321, + 1.439 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_021.glb", + "kategorie": "props", + "name_de": "Kiste 21" + }, + "box_022": { + "poly": 195, + "collision": { + "shape": "box", + "size": [ + 1.438, + 1.321, + 1.439 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_022.glb", + "kategorie": "props", + "name_de": "Kiste 22" + }, + "box_023": { + "poly": 195, + "collision": { + "shape": "box", + "size": [ + 1.438, + 1.321, + 1.439 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_023.glb", + "kategorie": "props", + "name_de": "Kiste 23" + }, + "box_024": { + "poly": 350, + "collision": { + "shape": "box", + "size": [ + 1.438, + 1.421, + 1.439 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_024.glb", + "kategorie": "props", + "name_de": "Kiste 24" + }, + "box_025": { + "poly": 350, + "collision": { + "shape": "box", + "size": [ + 1.438, + 1.421, + 1.439 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_025.glb", + "kategorie": "props", + "name_de": "Kiste 25" + }, + "box_026": { + "poly": 594, + "collision": { + "shape": "box", + "size": [ + 3.462, + 1.489, + 3.305 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_026.glb", + "kategorie": "props", + "name_de": "Kiste 26" + }, + "box_027": { + "poly": 739, + "collision": { + "shape": "box", + "size": [ + 2.641, + 2.376, + 2.54 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_027.glb", + "kategorie": "props", + "name_de": "Kiste 27" + }, + "box_028": { + "poly": 594, + "collision": { + "shape": "box", + "size": [ + 3.462, + 1.489, + 3.305 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_028.glb", + "kategorie": "props", + "name_de": "Kiste 28" + }, + "box_029": { + "poly": 739, + "collision": { + "shape": "box", + "size": [ + 2.641, + 2.376, + 2.54 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_029.glb", + "kategorie": "props", + "name_de": "Kiste 29" + }, + "box_030": { + "poly": 739, + "collision": { + "shape": "box", + "size": [ + 2.641, + 2.376, + 2.54 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_030.glb", + "kategorie": "props", + "name_de": "Kiste 30" + }, + "box_031": { + "poly": 594, + "collision": { + "shape": "box", + "size": [ + 3.462, + 1.489, + 3.305 + ] + }, + "glb": "res://assets/objekte/military_desert/props/box_031.glb", + "kategorie": "props", + "name_de": "Kiste 31" + }, "bruecke_holz": { "poly": 228, "collision": { @@ -2351,6 +2967,103 @@ "radius": 1.5 } }, + "shell_001": { + "poly": 320, + "collision": { + "shape": "box", + "size": [ + 0.456, + 1.368, + 0.456 + ] + }, + "glb": "res://assets/objekte/military_desert/props/shell_001.glb", + "kategorie": "props", + "name_de": "Granate 01" + }, + "shell_002": { + "poly": 184, + "collision": { + "shape": "none" + }, + "glb": "res://assets/objekte/military_desert/props/shell_002.glb", + "kategorie": "props", + "name_de": "Granate 02" + }, + "shell_003": { + "poly": 186, + "collision": { + "shape": "box", + "size": [ + 0.177, + 1.107, + 0.177 + ] + }, + "glb": "res://assets/objekte/military_desert/props/shell_003.glb", + "kategorie": "props", + "name_de": "Granate 03" + }, + "shell_004": { + "poly": 186, + "collision": { + "shape": "box", + "size": [ + 0.177, + 1.107, + 0.177 + ] + }, + "glb": "res://assets/objekte/military_desert/props/shell_004.glb", + "kategorie": "props", + "name_de": "Granate 04" + }, + "shell_005": { + "poly": 212, + "collision": { + "shape": "none" + }, + "glb": "res://assets/objekte/military_desert/props/shell_005.glb", + "kategorie": "props", + "name_de": "Granate 05" + }, + "shell_006": { + "poly": 88, + "collision": { + "shape": "none" + }, + "glb": "res://assets/objekte/military_desert/props/shell_006.glb", + "kategorie": "props", + "name_de": "Granate 06" + }, + "shell_007": { + "poly": 94, + "collision": { + "shape": "box", + "size": [ + 1.963, + 0.488, + 0.488 + ] + }, + "glb": "res://assets/objekte/military_desert/props/shell_007.glb", + "kategorie": "props", + "name_de": "Granate 07" + }, + "shell_008": { + "poly": 94, + "collision": { + "shape": "box", + "size": [ + 1.963, + 0.488, + 0.488 + ] + }, + "glb": "res://assets/objekte/military_desert/props/shell_008.glb", + "kategorie": "props", + "name_de": "Granate 08" + }, "stein_kiesel_1": { "poly": 136, "collision": { @@ -2755,6 +3468,104 @@ "kategorie": "buildings", "name_de": "Zelt 14" }, + "training_item_001": { + "poly": 518, + "collision": { + "shape": "box", + "size": [ + 1.156, + 1.108, + 1.307 + ] + }, + "glb": "res://assets/objekte/military_desert/props/training_item_001.glb", + "kategorie": "props", + "name_de": "Trainingsziel 01" + }, + "training_item_002": { + "poly": 778, + "collision": { + "shape": "box", + "size": [ + 0.529, + 1.279, + 0.962 + ] + }, + "glb": "res://assets/objekte/military_desert/props/training_item_002.glb", + "kategorie": "props", + "name_de": "Trainingsziel 02" + }, + "training_item_003": { + "poly": 1996, + "collision": { + "shape": "box", + "size": [ + 1.393, + 1.416, + 1.008 + ] + }, + "glb": "res://assets/objekte/military_desert/props/training_item_003.glb", + "kategorie": "props", + "name_de": "Trainingsziel 03" + }, + "training_item_004": { + "poly": 1320, + "collision": { + "shape": "box", + "size": [ + 0.81, + 1.509, + 0.926 + ] + }, + "glb": "res://assets/objekte/military_desert/props/training_item_004.glb", + "kategorie": "props", + "name_de": "Trainingsziel 04" + }, + "training_item_005": { + "poly": 392, + "collision": { + "shape": "box", + "size": [ + 1.731, + 1.264, + 1.894 + ] + }, + "glb": "res://assets/objekte/military_desert/props/training_item_005.glb", + "kategorie": "props", + "name_de": "Trainingsziel 05" + }, + "training_item_006": { + "poly": 304, + "collision": { + "shape": "box", + "size": [ + 1.731, + 1.53, + 1.87 + ] + }, + "glb": "res://assets/objekte/military_desert/props/training_item_006.glb", + "kategorie": "props", + "name_de": "Trainingsziel 06" + }, + "training_item_007": { + "poly": 628, + "collision": { + "shape": "box", + "size": [ + 2.562, + 2.818, + 3.204 + ] + }, + "glb": "res://assets/objekte/military_desert/props/training_item_007.glb", + "kategorie": "props", + "name_de": "Trainingsziel 07" + }, "tree_pine": { "poly": 180, "collision": { diff --git a/library/thumbs/barrel_001.png b/library/thumbs/barrel_001.png new file mode 100644 index 0000000..21ac751 Binary files /dev/null and b/library/thumbs/barrel_001.png differ diff --git a/library/thumbs/barrel_002.png b/library/thumbs/barrel_002.png new file mode 100644 index 0000000..21ac751 Binary files /dev/null and b/library/thumbs/barrel_002.png differ diff --git a/library/thumbs/barrel_003.png b/library/thumbs/barrel_003.png new file mode 100644 index 0000000..21ac751 Binary files /dev/null and b/library/thumbs/barrel_003.png differ diff --git a/library/thumbs/barrel_004.png b/library/thumbs/barrel_004.png new file mode 100644 index 0000000..21ac751 Binary files /dev/null and b/library/thumbs/barrel_004.png differ diff --git a/library/thumbs/barrel_005.png b/library/thumbs/barrel_005.png new file mode 100644 index 0000000..21ac751 Binary files /dev/null and b/library/thumbs/barrel_005.png differ diff --git a/library/thumbs/barrel_006.png b/library/thumbs/barrel_006.png new file mode 100644 index 0000000..21ac751 Binary files /dev/null and b/library/thumbs/barrel_006.png differ diff --git a/library/thumbs/barrel_007.png b/library/thumbs/barrel_007.png new file mode 100644 index 0000000..21ac751 Binary files /dev/null and b/library/thumbs/barrel_007.png differ diff --git a/library/thumbs/barrel_008.png b/library/thumbs/barrel_008.png new file mode 100644 index 0000000..21ac751 Binary files /dev/null and b/library/thumbs/barrel_008.png differ diff --git a/library/thumbs/barrel_009.png b/library/thumbs/barrel_009.png new file mode 100644 index 0000000..21ac751 Binary files /dev/null and b/library/thumbs/barrel_009.png differ diff --git a/library/thumbs/barrel_010.png b/library/thumbs/barrel_010.png new file mode 100644 index 0000000..21ac751 Binary files /dev/null and b/library/thumbs/barrel_010.png differ diff --git a/library/thumbs/barrel_011.png b/library/thumbs/barrel_011.png new file mode 100644 index 0000000..8557d84 Binary files /dev/null and b/library/thumbs/barrel_011.png differ diff --git a/library/thumbs/barrel_012.png b/library/thumbs/barrel_012.png new file mode 100644 index 0000000..83e0f3d Binary files /dev/null and b/library/thumbs/barrel_012.png differ diff --git a/library/thumbs/barrel_013.png b/library/thumbs/barrel_013.png new file mode 100644 index 0000000..1268ffc Binary files /dev/null and b/library/thumbs/barrel_013.png differ diff --git a/library/thumbs/box_001.png b/library/thumbs/box_001.png new file mode 100644 index 0000000..8660b45 Binary files /dev/null and b/library/thumbs/box_001.png differ diff --git a/library/thumbs/box_002.png b/library/thumbs/box_002.png new file mode 100644 index 0000000..8660b45 Binary files /dev/null and b/library/thumbs/box_002.png differ diff --git a/library/thumbs/box_003.png b/library/thumbs/box_003.png new file mode 100644 index 0000000..475010b Binary files /dev/null and b/library/thumbs/box_003.png differ diff --git a/library/thumbs/box_004.png b/library/thumbs/box_004.png new file mode 100644 index 0000000..6f4ac3a Binary files /dev/null and b/library/thumbs/box_004.png differ diff --git a/library/thumbs/box_005.png b/library/thumbs/box_005.png new file mode 100644 index 0000000..a088d71 Binary files /dev/null and b/library/thumbs/box_005.png differ diff --git a/library/thumbs/box_006.png b/library/thumbs/box_006.png new file mode 100644 index 0000000..622169a Binary files /dev/null and b/library/thumbs/box_006.png differ diff --git a/library/thumbs/box_007.png b/library/thumbs/box_007.png new file mode 100644 index 0000000..169f75d Binary files /dev/null and b/library/thumbs/box_007.png differ diff --git a/library/thumbs/box_008.png b/library/thumbs/box_008.png new file mode 100644 index 0000000..622169a Binary files /dev/null and b/library/thumbs/box_008.png differ diff --git a/library/thumbs/box_009.png b/library/thumbs/box_009.png new file mode 100644 index 0000000..c42eef5 Binary files /dev/null and b/library/thumbs/box_009.png differ diff --git a/library/thumbs/box_010.png b/library/thumbs/box_010.png new file mode 100644 index 0000000..5c79a75 Binary files /dev/null and b/library/thumbs/box_010.png differ diff --git a/library/thumbs/box_011.png b/library/thumbs/box_011.png new file mode 100644 index 0000000..c42eef5 Binary files /dev/null and b/library/thumbs/box_011.png differ diff --git a/library/thumbs/box_012.png b/library/thumbs/box_012.png new file mode 100644 index 0000000..f142116 Binary files /dev/null and b/library/thumbs/box_012.png differ diff --git a/library/thumbs/box_013.png b/library/thumbs/box_013.png new file mode 100644 index 0000000..f142116 Binary files /dev/null and b/library/thumbs/box_013.png differ diff --git a/library/thumbs/box_014.png b/library/thumbs/box_014.png new file mode 100644 index 0000000..f142116 Binary files /dev/null and b/library/thumbs/box_014.png differ diff --git a/library/thumbs/box_015.png b/library/thumbs/box_015.png new file mode 100644 index 0000000..f142116 Binary files /dev/null and b/library/thumbs/box_015.png differ diff --git a/library/thumbs/box_016.png b/library/thumbs/box_016.png new file mode 100644 index 0000000..f142116 Binary files /dev/null and b/library/thumbs/box_016.png differ diff --git a/library/thumbs/box_017.png b/library/thumbs/box_017.png new file mode 100644 index 0000000..f142116 Binary files /dev/null and b/library/thumbs/box_017.png differ diff --git a/library/thumbs/box_018.png b/library/thumbs/box_018.png new file mode 100644 index 0000000..9dcee22 Binary files /dev/null and b/library/thumbs/box_018.png differ diff --git a/library/thumbs/box_019.png b/library/thumbs/box_019.png new file mode 100644 index 0000000..9dcee22 Binary files /dev/null and b/library/thumbs/box_019.png differ diff --git a/library/thumbs/box_020.png b/library/thumbs/box_020.png new file mode 100644 index 0000000..2a77c24 Binary files /dev/null and b/library/thumbs/box_020.png differ diff --git a/library/thumbs/box_021.png b/library/thumbs/box_021.png new file mode 100644 index 0000000..8af5ef0 Binary files /dev/null and b/library/thumbs/box_021.png differ diff --git a/library/thumbs/box_022.png b/library/thumbs/box_022.png new file mode 100644 index 0000000..8af5ef0 Binary files /dev/null and b/library/thumbs/box_022.png differ diff --git a/library/thumbs/box_023.png b/library/thumbs/box_023.png new file mode 100644 index 0000000..2a77c24 Binary files /dev/null and b/library/thumbs/box_023.png differ diff --git a/library/thumbs/box_024.png b/library/thumbs/box_024.png new file mode 100644 index 0000000..0d63c2d Binary files /dev/null and b/library/thumbs/box_024.png differ diff --git a/library/thumbs/box_025.png b/library/thumbs/box_025.png new file mode 100644 index 0000000..0d63c2d Binary files /dev/null and b/library/thumbs/box_025.png differ diff --git a/library/thumbs/box_026.png b/library/thumbs/box_026.png new file mode 100644 index 0000000..4f3e962 Binary files /dev/null and b/library/thumbs/box_026.png differ diff --git a/library/thumbs/box_027.png b/library/thumbs/box_027.png new file mode 100644 index 0000000..89d8f23 Binary files /dev/null and b/library/thumbs/box_027.png differ diff --git a/library/thumbs/box_028.png b/library/thumbs/box_028.png new file mode 100644 index 0000000..4f3e962 Binary files /dev/null and b/library/thumbs/box_028.png differ diff --git a/library/thumbs/box_029.png b/library/thumbs/box_029.png new file mode 100644 index 0000000..89d8f23 Binary files /dev/null and b/library/thumbs/box_029.png differ diff --git a/library/thumbs/box_030.png b/library/thumbs/box_030.png new file mode 100644 index 0000000..8423ddb Binary files /dev/null and b/library/thumbs/box_030.png differ diff --git a/library/thumbs/box_031.png b/library/thumbs/box_031.png new file mode 100644 index 0000000..73079bd Binary files /dev/null and b/library/thumbs/box_031.png differ diff --git a/library/thumbs/shell_001.png b/library/thumbs/shell_001.png new file mode 100644 index 0000000..5cd5033 Binary files /dev/null and b/library/thumbs/shell_001.png differ diff --git a/library/thumbs/shell_002.png b/library/thumbs/shell_002.png new file mode 100644 index 0000000..593eff8 Binary files /dev/null and b/library/thumbs/shell_002.png differ diff --git a/library/thumbs/shell_003.png b/library/thumbs/shell_003.png new file mode 100644 index 0000000..e6838ed Binary files /dev/null and b/library/thumbs/shell_003.png differ diff --git a/library/thumbs/shell_004.png b/library/thumbs/shell_004.png new file mode 100644 index 0000000..e6838ed Binary files /dev/null and b/library/thumbs/shell_004.png differ diff --git a/library/thumbs/shell_005.png b/library/thumbs/shell_005.png new file mode 100644 index 0000000..a1cc084 Binary files /dev/null and b/library/thumbs/shell_005.png differ diff --git a/library/thumbs/shell_006.png b/library/thumbs/shell_006.png new file mode 100644 index 0000000..a859b93 Binary files /dev/null and b/library/thumbs/shell_006.png differ diff --git a/library/thumbs/shell_007.png b/library/thumbs/shell_007.png new file mode 100644 index 0000000..399a7bc Binary files /dev/null and b/library/thumbs/shell_007.png differ diff --git a/library/thumbs/shell_008.png b/library/thumbs/shell_008.png new file mode 100644 index 0000000..399a7bc Binary files /dev/null and b/library/thumbs/shell_008.png differ diff --git a/library/thumbs/training_item_001.png b/library/thumbs/training_item_001.png new file mode 100644 index 0000000..e4cc421 Binary files /dev/null and b/library/thumbs/training_item_001.png differ diff --git a/library/thumbs/training_item_002.png b/library/thumbs/training_item_002.png new file mode 100644 index 0000000..d42b24a Binary files /dev/null and b/library/thumbs/training_item_002.png differ diff --git a/library/thumbs/training_item_003.png b/library/thumbs/training_item_003.png new file mode 100644 index 0000000..066a9ea Binary files /dev/null and b/library/thumbs/training_item_003.png differ diff --git a/library/thumbs/training_item_004.png b/library/thumbs/training_item_004.png new file mode 100644 index 0000000..34980a0 Binary files /dev/null and b/library/thumbs/training_item_004.png differ diff --git a/library/thumbs/training_item_005.png b/library/thumbs/training_item_005.png new file mode 100644 index 0000000..9fa8964 Binary files /dev/null and b/library/thumbs/training_item_005.png differ diff --git a/library/thumbs/training_item_006.png b/library/thumbs/training_item_006.png new file mode 100644 index 0000000..b2c39a4 Binary files /dev/null and b/library/thumbs/training_item_006.png differ diff --git a/library/thumbs/training_item_007.png b/library/thumbs/training_item_007.png new file mode 100644 index 0000000..5b683df Binary files /dev/null and b/library/thumbs/training_item_007.png differ diff --git a/tests/probe_d4_mapbuilder.gd b/tests/probe_d4_mapbuilder.gd new file mode 100644 index 0000000..984fe54 --- /dev/null +++ b/tests/probe_d4_mapbuilder.gd @@ -0,0 +1,82 @@ +extends SceneTree +## D4-Beweis (t_691b51ce): Map-Builder platziert 3 Military-Props auf dem Boden +## und zeigt ihre Kollisionsboxen (Drahtgitter aus registry `collision.size`). +## +## xvfb-run -a /opt/data/home/bin/godot4 --rendering-driver opengl3 --path . \ +## --resolution 1600x900 -s res://tests/probe_d4_mapbuilder.gd +## +## Ausgabe: /tmp/d4_mapbuilder.png + Prüfzeilen (Modus == GLB, Fußpunkt y=0) + +const MapDocument := preload("res://src/svmap/map_document.gd") + +const PLATZ := [ + {"id": "barrel_001", "pos": [-2.2, 0.0, 0.0], "rot_y_deg": 0.0}, + {"id": "box_020", "pos": [0.6, 0.0, 0.6], "rot_y_deg": 25.0}, + {"id": "training_item_005", "pos": [3.6, 0.0, -0.6], "rot_y_deg": 180.0}, +] + + +func _initialize() -> void: + var manifest: Dictionary = JSON.parse_string(FileAccess.get_file_as_string("res://library/objects.json")) + var doc: Dictionary = MapDocument.create_new("D4-Beweis", 256.0, "mittag") + doc["objects"] = PLATZ + + var bauer: Node3D = load("res://src/viewport/map_view_builder.gd").new() + root.add_child(bauer) + await process_frame + bauer.rebuild(doc, manifest) + + var lib: Dictionary = manifest.get("objects", {}) + var fehler: Array = [] + for i in PLATZ.size(): + var marker: Node3D = bauer.object_markers[i] + if marker == null: + fehler.append("%s: kein Marker" % PLATZ[i]["id"]) + continue + var oid := str(PLATZ[i]["id"]) + var entry: Dictionary = lib.get(oid, {}) + if entry.is_empty(): + fehler.append("%s: nicht in der Bibliothek" % oid) + continue + var col: Dictionary = entry.get("collision", {}) + var groesse: Array = col.get("size", [0.0, 0.0, 0.0]) + # Kollisionsbox als Drahtgitter (Fußpunkt: Unterkante y=0). + var box := MeshInstance3D.new() + var bm := BoxMesh.new() + bm.size = Vector3(float(groesse[0]), float(groesse[1]), float(groesse[2])) + Vector3(0.01, 0.01, 0.01) + box.mesh = bm + var mat := StandardMaterial3D.new() + mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED + mat.albedo_color = Color(0.15, 1.0, 0.35, 0.28) + mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA + mat.cull_mode = BaseMaterial3D.CULL_DISABLED + mat.wireframe = true + box.material_override = mat + box.position = Vector3(0.0, float(groesse[1]) * 0.5, 0.0) + marker.add_child(box) + var echt := bool(marker.get_meta("glb")) + var mi := marker.get_child(0) as MeshInstance3D + var mesh_aabb := mi.mesh.get_aabb() if (mi != null and mi.mesh != null) else AABB() + print("%s: ehctesGLB=%s registry=%.3f/%.3f/%.3f mesh_aabb=%.3f/%.3f/%.3f mesh_min_y=%.3f" + % [oid, str(echt), float(groesse[0]), float(groesse[1]), float(groesse[2]), + mesh_aabb.size.x, mesh_aabb.size.y, mesh_aabb.size.z, mesh_aabb.position.y]) + if not echt: + fehler.append("%s: rendert nur den Platzhalter (GLB fehlt)" % oid) + + var cam := Camera3D.new() + cam.fov = 45.0 + cam.position = Vector3(4.5, 3.2, 7.5) + root.add_child(cam) + await process_frame + cam.look_at(Vector3(0.6, 0.7, 0.0), Vector3.UP) + cam.current = true + cam.make_current() + + await process_frame + await process_frame + await RenderingServer.frame_post_draw + root.get_texture().get_image().save_png("/tmp/d4_mapbuilder.png") + for f in fehler: + print(" FEHLER: %s" % f) + print("PROBE_D4_MAPBUILDER_%s" % ("FAIL" if not fehler.is_empty() else "OK")) + quit(1 if not fehler.is_empty() else 0)