D4 (t_691b51ce): Editor-Sync — 59 neue Prop-Thumbs + Map-Builder-Probe (3 Props mit Kollisionsboxen)
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"library_version": 1,
|
"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": {
|
"objects": {
|
||||||
"barracks_001": {
|
"barracks_001": {
|
||||||
"poly": 1139,
|
"poly": 1139,
|
||||||
|
|
@ -16,6 +16,188 @@
|
||||||
"kategorie": "buildings",
|
"kategorie": "buildings",
|
||||||
"name_de": "Kaserne"
|
"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": {
|
"barrier_001": {
|
||||||
"poly": 72,
|
"poly": 72,
|
||||||
"collision": {
|
"collision": {
|
||||||
|
|
@ -390,6 +572,440 @@
|
||||||
"radius": 0.8
|
"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": {
|
"bruecke_holz": {
|
||||||
"poly": 228,
|
"poly": 228,
|
||||||
"collision": {
|
"collision": {
|
||||||
|
|
@ -2351,6 +2967,103 @@
|
||||||
"radius": 1.5
|
"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": {
|
"stein_kiesel_1": {
|
||||||
"poly": 136,
|
"poly": 136,
|
||||||
"collision": {
|
"collision": {
|
||||||
|
|
@ -2755,6 +3468,104 @@
|
||||||
"kategorie": "buildings",
|
"kategorie": "buildings",
|
||||||
"name_de": "Zelt 14"
|
"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": {
|
"tree_pine": {
|
||||||
"poly": 180,
|
"poly": 180,
|
||||||
"collision": {
|
"collision": {
|
||||||
|
|
|
||||||
BIN
library/thumbs/barrel_001.png
Normal file
|
After Width: | Height: | Size: 869 B |
BIN
library/thumbs/barrel_002.png
Normal file
|
After Width: | Height: | Size: 869 B |
BIN
library/thumbs/barrel_003.png
Normal file
|
After Width: | Height: | Size: 869 B |
BIN
library/thumbs/barrel_004.png
Normal file
|
After Width: | Height: | Size: 869 B |
BIN
library/thumbs/barrel_005.png
Normal file
|
After Width: | Height: | Size: 869 B |
BIN
library/thumbs/barrel_006.png
Normal file
|
After Width: | Height: | Size: 869 B |
BIN
library/thumbs/barrel_007.png
Normal file
|
After Width: | Height: | Size: 869 B |
BIN
library/thumbs/barrel_008.png
Normal file
|
After Width: | Height: | Size: 869 B |
BIN
library/thumbs/barrel_009.png
Normal file
|
After Width: | Height: | Size: 869 B |
BIN
library/thumbs/barrel_010.png
Normal file
|
After Width: | Height: | Size: 869 B |
BIN
library/thumbs/barrel_011.png
Normal file
|
After Width: | Height: | Size: 702 B |
BIN
library/thumbs/barrel_012.png
Normal file
|
After Width: | Height: | Size: 997 B |
BIN
library/thumbs/barrel_013.png
Normal file
|
After Width: | Height: | Size: 1,020 B |
BIN
library/thumbs/box_001.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
library/thumbs/box_002.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
library/thumbs/box_003.png
Normal file
|
After Width: | Height: | Size: 805 B |
BIN
library/thumbs/box_004.png
Normal file
|
After Width: | Height: | Size: 697 B |
BIN
library/thumbs/box_005.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
library/thumbs/box_006.png
Normal file
|
After Width: | Height: | Size: 636 B |
BIN
library/thumbs/box_007.png
Normal file
|
After Width: | Height: | Size: 1,018 B |
BIN
library/thumbs/box_008.png
Normal file
|
After Width: | Height: | Size: 636 B |
BIN
library/thumbs/box_009.png
Normal file
|
After Width: | Height: | Size: 636 B |
BIN
library/thumbs/box_010.png
Normal file
|
After Width: | Height: | Size: 983 B |
BIN
library/thumbs/box_011.png
Normal file
|
After Width: | Height: | Size: 636 B |
BIN
library/thumbs/box_012.png
Normal file
|
After Width: | Height: | Size: 637 B |
BIN
library/thumbs/box_013.png
Normal file
|
After Width: | Height: | Size: 637 B |
BIN
library/thumbs/box_014.png
Normal file
|
After Width: | Height: | Size: 637 B |
BIN
library/thumbs/box_015.png
Normal file
|
After Width: | Height: | Size: 637 B |
BIN
library/thumbs/box_016.png
Normal file
|
After Width: | Height: | Size: 637 B |
BIN
library/thumbs/box_017.png
Normal file
|
After Width: | Height: | Size: 637 B |
BIN
library/thumbs/box_018.png
Normal file
|
After Width: | Height: | Size: 666 B |
BIN
library/thumbs/box_019.png
Normal file
|
After Width: | Height: | Size: 666 B |
BIN
library/thumbs/box_020.png
Normal file
|
After Width: | Height: | Size: 633 B |
BIN
library/thumbs/box_021.png
Normal file
|
After Width: | Height: | Size: 934 B |
BIN
library/thumbs/box_022.png
Normal file
|
After Width: | Height: | Size: 934 B |
BIN
library/thumbs/box_023.png
Normal file
|
After Width: | Height: | Size: 633 B |
BIN
library/thumbs/box_024.png
Normal file
|
After Width: | Height: | Size: 626 B |
BIN
library/thumbs/box_025.png
Normal file
|
After Width: | Height: | Size: 626 B |
BIN
library/thumbs/box_026.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
library/thumbs/box_027.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
library/thumbs/box_028.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
library/thumbs/box_029.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
library/thumbs/box_030.png
Normal file
|
After Width: | Height: | Size: 662 B |
BIN
library/thumbs/box_031.png
Normal file
|
After Width: | Height: | Size: 654 B |
BIN
library/thumbs/shell_001.png
Normal file
|
After Width: | Height: | Size: 590 B |
BIN
library/thumbs/shell_002.png
Normal file
|
After Width: | Height: | Size: 697 B |
BIN
library/thumbs/shell_003.png
Normal file
|
After Width: | Height: | Size: 631 B |
BIN
library/thumbs/shell_004.png
Normal file
|
After Width: | Height: | Size: 631 B |
BIN
library/thumbs/shell_005.png
Normal file
|
After Width: | Height: | Size: 667 B |
BIN
library/thumbs/shell_006.png
Normal file
|
After Width: | Height: | Size: 646 B |
BIN
library/thumbs/shell_007.png
Normal file
|
After Width: | Height: | Size: 804 B |
BIN
library/thumbs/shell_008.png
Normal file
|
After Width: | Height: | Size: 804 B |
BIN
library/thumbs/training_item_001.png
Normal file
|
After Width: | Height: | Size: 927 B |
BIN
library/thumbs/training_item_002.png
Normal file
|
After Width: | Height: | Size: 891 B |
BIN
library/thumbs/training_item_003.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
library/thumbs/training_item_004.png
Normal file
|
After Width: | Height: | Size: 953 B |
BIN
library/thumbs/training_item_005.png
Normal file
|
After Width: | Height: | Size: 814 B |
BIN
library/thumbs/training_item_006.png
Normal file
|
After Width: | Height: | Size: 813 B |
BIN
library/thumbs/training_item_007.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
82
tests/probe_d4_mapbuilder.gd
Normal file
|
|
@ -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)
|
||||||