Compare commits

...

27 commits

Author SHA1 Message Date
slyphax
313500b988 Kern-Stand nachgezogen, Test für Terrain in Stücken, Loadout-Sync-Pfad
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 20:27:35 +01:00
slyphax
8f01775a92 Editor-Code liegt jetzt komplett im Kern (res://core), PC-App startet core/scenes/main.tscn; Addon nutzt Bau-Geometrie aus dem Kern
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 19:34:05 +01:00
slyphax
295f79011f Werkzeuge hängen nicht mehr an der Maus: PointerEvent, MousePointer, PointerRouter; Test Maus gegen Zeiger
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 19:26:17 +01:00
slyphax
949d73dfdd Map-Kern ausgelagert: scopedvr-map-core als Submodul unter res://core, Update holt ihn mit; Test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 15:37:09 +01:00
slyphax
e8ab954876 Editor: Blickrichtung für Spawn-Punkte und Conquest-Zonen (yaw_deg, optional): Pfeil im Bild, Spitze ziehen oder Zahl im Panel, Standard-Knopf, Undo, Symmetrie spiegelt mit, Playtest nutzt sie; Prüfung; Test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 13:00:02 +01:00
slyphax
ff1c0e345e Datei-Menü: Hand-Haltung der Waffen startet das Hand-Haltungs-Tool aus dem Client-Ordner (importiert nach neuem Client-Stand im Hintergrund); Test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 11:02:36 +01:00
slyphax
91c66a0b98 Loadout-Bereich: Granaten und Minen pro Karte festlegen (V18, Undo, auch im Spieler-Modus, gilt für Bots); Tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GkB4i3mQaxfg6aEncovy2Q
2026-10-31 01:55:45 +01:00
slyphax
330365e59b Loadout-Auswahl: Holo- und Schrägvisier klarer benannt (Ring mit Punkt, seitlich) neben dem Rotpunktvisier
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:52:21 +01:00
slyphax
9589703f7c Loadout-Auswahl: Rotpunktvisier und andere Visiere mit deutschem Namen statt Teil-ID; Tests für Auswahl, Speichern und V18
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:00:32 +01:00
slyphax
b04a953190 Tab Server: Server neu starten mit Bestätigung und Warten auf den neuen Prozess, Bot-Warnung
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 00:08:06 +01:00
slyphax
48db200d3e Server-Sektion im Editor: Client der Admin-API (Server speichern mit verschluesseltem Token, Uebersicht, Einstellungen, Spieler kicken/sperren, Map laden/loeschen, Rotation, Logs) und 'Aktuelle Map auf Server pushen' mit verstaendlicher 422-Fehlerliste; SvmapIO.to_signed_text; Tests inkl. E2E gegen echten Server
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-29 00:04:11 +01:00
slyphax
92e2c688c1 Spielmodi im Editor: Checkpoints → Conquest (Alt-Maps werden beim Laden umgestellt), King of the Hill mit Hill-Liste + Reihenfolge, Deathmatch, eigene Spawns je Modus (mode_spawns, Spawn-Satz-Auswahl, Undo), V21–V24
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 20:38:54 +01:00
slyphax
f42e133bae Spielmodus-Auswahl beim Neu-Erstellen + Checkpoint-Zonen im Map-Tab (V21/V22, Undo, 3D-Anzeige)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 09:21:13 +01:00
slyphax
bb9eb71770 Map-Loadout: Loadout-Bereich im Map-Tab (Spieler-Loadout oder festes Map-Loadout mit Aufsaetzen), V18, Undo/Redo
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 09:10:16 +01:00
slyphax
8345903ce7 Container: offene Varianten (eine Tür offen / beide Türen offen / ohne Türen), 8 Farben, Innenseiten mit Paletten-Textur + Trimesh-Kollision
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 23:42:09 +01:00
slyphax
902181500a Drag&Drop aus der Bibliothek: Ablege-Fläche über der 3D-Ansicht (echter Maus-Drag getestet), Drag-Vorschau, Doku
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 22:50:37 +01:00
slyphax
bcbd416960 Bauen: Geschoss-Wahl (Decken mitten im Raum), 1 cm Wand-Überstand gegen Z-Fighting, Dach aus Einzelteilen, größeres Einstellungen-Fenster
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 22:47:15 +01:00
slyphax
5e32c771fc Revert "Bauen: begehbare Vorlagen (Kaserne, Wachhaus, Lagerraum) per Klick, ein Undo-Schritt"
This reverts commit 961e8c6ff6.
2026-10-25 22:37:24 +01:00
slyphax
961e8c6ff6 Bauen: begehbare Vorlagen (Kaserne, Wachhaus, Lagerraum) per Klick, ein Undo-Schritt
Pack-Kaserne/-Checkpoint/-Container sind innen geschlossen; die Vorlagen sind
begehbare Gebäude aus bau_*-Teilen. Test beweist per Strahl durch die echte Kollision.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 22:00:49 +01:00
slyphax
075735f426 Laden: gelöschte Objekte (Pilze) beim Öffnen ersetzen/überspringen statt Abbruch (test.svmap wieder ladbar)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 21:53:40 +01:00
slyphax
fa2feee780 Thumbnails für die großen Dächer/Giebelwände (4 m, 6 m)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 20:32:53 +01:00
slyphax
3f0d0f3f33 Map-Editor: UI aufgeräumt, Auswahl-Sync, Drag&Drop, Bauen (Wände bündig, Geschosshöhe, große Dächer)
- Tabs Auswahl/Prüfen/Test-Start/Einstellungen/Symmetrie weg; Spawn-Zonen, Test-Start, Symmetrie im Map-Tab; Einstellungen-Fenster (Gitter, Höhenlinien, Symmetrie-Modus, UI-Größe, Raster-Snap, Gizmo-Schritt, Karte prüfen)
- Bauen-Tab nur Bauteile; Objekt-Werkzeuge entfernt
- Klick in der Map-Inhalt-Liste wählt in der Szene aus (SELECT_MULTI feuert nur multi_selected)
- Objekt-Kachel per Ziehen in die Szene setzen
- Wände bündig in der Zelle, gleiche Geschosshöhe mit/ohne Decke, Dächer/Giebelwände 4 m und 6 m

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 20:32:32 +01:00
slyphax
ab9a798343 Thumb-Importdateien der bau_*-Bauteile nachgetragen 2026-10-25 16:32:21 +01:00
slyphax
491a47d3f1 Editor-Bibliothek auf das Military-Desert-Pack umgestellt
- 423 Objekte in 19 deutschen Kategorien (Panzer, Radfahrzeuge, Flugzeuge, Gebaeude,
  Zelte, Tuerme, Mauern, Sperren, Kisten, Technik, Felsen, Boden, Decals ...);
  Gruppen "Bauwerke" und "Kisten & Barrieren" samt Test-Asset-Namenslisten entfernt
- LibraryBrowser: Gruppen/Namen aus dem Manifest (kategorie, name_de), unbekannte
  Kategorien bekommen automatisch eine eigene Gruppe
- Thumbs neu, library/ synchronisiert (inkl. neuer Kollision)
- Neue Identitaetsprobe: Kollision ALLER Objekte Editor = Client = Server
- Tests auf Pack-Objekte umgestellt

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-25 16:31:28 +01:00
slyphax
a76c3ecae7 Bauen-Modus neu: Bauteile als normale Objekte (bau_*), Snap an Kante/Zelle/Ebene, Gebäude = Gruppe
- BauKatalog: 12 Teile (Fundament, Boden, Wände mit Tür/Fenster/Scharte, Brüstung, Pfeiler, Giebel, Dächer, Treppe) auf Basis der CC0-Geometrie des Modular Builder 0.2.0, Wandhöhe 3 m
- BuildSnap: Wände auf Zellkanten, Böden in Zellmitte, Höhe aus Ebenen statt Klickhöhe, Ersetzen (Tür in Wand)
- Gebäude kopieren/auswählen/löschen im Bauen-Tab, Kopien bekommen eigene Gruppe
- Kollision serverkonsistent über Trimesh-Dateien (Türen/Fenster echte Löcher), tools/gen_bauteile.gd erzeugt GLB, Kollision, Registry-Fragment
- Alte gebaeude-Sektion wird beim Laden migriert, altes Bauen-Werkzeug entfernt, Resize behält Gruppennamen
- Tests: test_bauen (258 Checks), Playtest läuft Treppe/Tür

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 16:30:15 +01:00
slyphax
fcc7f16f1c Skybox-Auswahl im Map-Panel: 13 neue Himmel, Vorschau, Undo/Redo, V17 über Katalog
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 15:30:38 +01:00
slyphax
e3a6b2ad21 UI-Nachbesserung: Statuszeile eine Zeile, Ring-Drehen (Variablen-Schatten im Gizmo), Tab-Klick aktiviert Werkzeug, Panels offen 2026-10-25 11:20:24 +01:00
1351 changed files with 29619 additions and 40391 deletions

5
.gitmodules vendored Normal file
View file

@ -0,0 +1,5 @@
[submodule "core"]
path = core
url = ../scopedvr-map-core.git
branch = main
ignore = untracked

View file

@ -3,3 +3,14 @@ Quelle: Godot Asset Store (https://store.godotengine.org/asset/michel-savadim/mo
Lizenz: CC0 1.0 Universal (siehe addons/modular_builder/LICENSE) — gilt für Code,
Icons und Dokumentation. Die Demo-Szene/Demo-Texturen des Originals sind NICHT
CC0 und wurden beim Import ENTFERNT (addons/modular_builder/demo fehlt bewusst).
Abgleich 25.10.2026: Der Code der Runtime-Geometrie (modular_piece_geometry.gd,
modular_building_detail.gd, modular_piece.gd, modular_pillar_support.gd,
modular_roof_support.gd, modular_vertex_simplifier.gd, modular_mesh_baker.gd) ist
zeichengleich zu ModularBuilder-English-0.2.0-2.zip (Ordner addons/modular_builder_en,
dort CC0 1.0, Copyright (c) 2026 Michel Savadim). Der Bauen-Modus des Map-Editors
(src/editor/bau_katalog.gd) nutzt diese Geometrie nur zum Erzeugen der Bauteile
(Wandhöhe 3 m, 2-m-Raster); die Teile selbst sind normale Bibliotheks-Objekte
(docs/bauen.md). Nicht übernommen: Demo-Szene, Demo-Texturen (nicht CC0).
Hinweis der Vorlage: Teile des Codes wurden mit KI-Unterstützung (OpenAI) erstellt —
vom Autor geprüft; CC0 gilt unverändert.

View file

@ -48,14 +48,14 @@ UX-Fundament auf dem App-Skelett (t_5badf371), nach dem Chef-Grundsatz gebaut:
Neue-Map-Dialog mit 4 Pflicht-Spawns pro Team, Orbit-Viewport mit Gitter/
Boden/Wetter-Stimmung — siehe Commit 84bc081 und `svmap_io.gd`.)*
- **Undo/Redo (`src/editor/action_history.gd`):** zentrale ActionHistory über
- **Undo/Redo (`core/editor/action_history.gd`):** zentrale ActionHistory über
die svmap-Ober-Blöcke (`objects`/`terrain`/`spawn_zones` — tiefe Kopien vor
und nach jeder Änderung, merge_tags gegen Mausrad-Tick-Fluten, Max-Stufe 100).
Strg+Z / Strg+Y UND große Buttons „↩ Rückgängig / ↪ Wiederholen" oben.
Spätere Werkzeuge melden sich mit `snapshot(keys)` vor und
`commit(desc, before, after)` nach der Änderung an — Terrain-Strokes und
Spawn-Zonen landen damit automatisch in derselben History.
- **Objekt-Platzierung mit Ghost-Preview (`src/editor/interaction.gd`):**
- **Objekt-Platzierung mit Ghost-Preview (`core/editor/interaction.gd`):**
Bibliothek links (deutsche Namen + Poly-Zahl), Klick startet den
Platzier-Modus — eine transparente Vorschau schwebt am Cursor auf dem Boden
(Höhe kommt aus dem Terrain), Klick setzt, ESC bricht ab (Rechte
@ -94,16 +94,26 @@ synchron ziehen (IDs sind der Vertrag, Entscheidung 20).
Auf dem Terrain-Werkzeug (t_9aba04f1) aufgebaut, nach dem Chef-Grundsatz:
- **Bibliothek-Browser mit Gruppen (`src/editor/library_browser.gd`):** Die
11 etablierten Objekte aus `library/objects.json`, sortiert in deutsche
Klapp-Gruppen (Kisten & Barrieren / Bauwerke / Natur + automatisch
„Sonstiges" für neue, noch ungruppierte IDs). Jeder Button zeigt ein
128-px-Thumbnail (`library/thumbs/*.png` — einmalig mit
`xvfb-run -a godot4 --rendering-driver opengl3 --path . --script
res://tools/gen_thumbs.gd` gerendert und committed; fehlt ein PNG, fällt
der Button sauber aufs Text-Layout zurück). Deutsche Namen wohnen jetzt in
`LibraryBrowser` (ohne UI → headless testbar).
- **Snap to Ground (`src/editor/object_ops.gd`):** Ein Klick auf
- **Bibliothek-Browser mit Gruppen (`core/editor/library_browser.gd`):**
*(Stand 25.10.2026, Military-Pack-Umstellung)* Die Bibliothek ist das
komplette Military-Desert-Pack (418 Modelle + 5 Kombis = 423 Objekte aus
`library/objects.json`), sortiert in 19 deutsche Kategorien aus dem
Manifest-Feld `kategorie` (Panzer, Radfahrzeuge, Flugzeuge & Hubschrauber,
Geschütze & Stellungen, Fahrzeugteile, Gebäude & Hangars, Zelte, Türme &
Masten, Mauern & Wände, Sperren & Zäune, Kisten/Fässer/Container, Technik &
Funk, Ausrüstung, Training, Bäume, Pflanzen/Kakteen/Gras, Felsen & Steine,
Boden/Straßen/Dünen, Boden-Decals). Fahrzeuge sind **fertig zusammengebaut**
(Panzer mit Turm und Kanone, Hummer mit Rädern, Hubschrauber mit Rotoren);
die Einzelteile stehen zusätzlich unter „Fahrzeugteile“. Unbekannte
Kategorien (z. B. spätere Bauteil-Module) bekommen automatisch eine eigene
Gruppe. Jeder Button zeigt ein 128-px-Thumbnail (`core/thumbs/*.png` —
erzeugt von `tools/sync_objects.sh`/`tools/gen_thumbs.gd` und committed;
fehlt ein PNG, fällt der Button aufs Text-Layout zurück). Deutsche Namen
kommen aus `name_de` im Manifest (ohne UI → headless testbar). Kollision:
Gebäude/Zelte/Türme exakter Trimesh (betretbar), Fahrzeuge Verbund aus
Boxen, Bäume nur Stamm, Dekor ohne Kollision — erzeugt vom Match-Server-Repo
(`tools/pack_registry.py`).
- **Snap to Ground (`core/editor/object_ops.gd`):** Ein Klick auf
„⚡ Alles auf den Boden setzen" holt ALLE schwebenden Objekte auf die
Terrain-Höhe (z. B. nach dem Terrain-Formen) — EIN Undo-Eintrag für die
ganze Aktion. Objekte, die schon auf dem Boden stehen, bleiben unangetastet.
@ -128,14 +138,14 @@ Export-Workflow.
Auf der Objekt-Bibliothek (t_3a998ae4) aufgebaut, nach dem Chef-Grundsatz:
- **Spawn-Zonen malen (`src/editor/spawn_tool.gd`):** Werkzeug
- **Spawn-Zonen malen (`core/editor/spawn_tool.gd`):** Werkzeug
„🚩 Spawn-Zonen malen“ — Team Blau 🔵 / Team Rot 🔴 (TDM-Konvention:
IDs A…/B…, mapformat § spawn_zones), Klick setzt eine farbige flache
Kreis-Zone auf dem Terrain (Vorschau-Kreis folgt der Maus), Radius
2–30 m per Regler. Zone anklicken → auswählen + ziehen (Terrain-Höhe
bleibt), Entf löscht, Strg+Z nimmt JEDE Operation zurück (jede Zone =
EIN History-Eintrag, Radius-Slider-Ticks sind merge-gekoppelt).
- **Live-Validierung (`src/editor/spawn_ops.gd`):** Block „Spawn-Check“
- **Live-Validierung (`core/editor/spawn_ops.gd`):** Block „Spawn-Check“
rechts bleibt STÄNDIG sichtbar und spiegelt exakt die Loader-Regeln
(V11: ≥ 4 Spawn-Punkte pro Team · V7: Objekt-IDs in der Bibliothek) —
z. B. „✅ Spawns Team Blau: 4 · ❌ Spawns Team Rot: 2 (mindestens 4
@ -228,13 +238,13 @@ Undo für alles):
Mehrfachauswahl + Gruppieren + Gruppen-Verschieben, auf dem UX-Fundament
(t_40d855d0) aufgebaut, nach dem Chef-Grundsatz:
- **Mehrfachauswahl (`src/editor/interaction.gd`):** Umschalt+Klick fügt
- **Mehrfachauswahl (`core/editor/interaction.gd`):** Umschalt+Klick fügt
ein Objekt hinzu/entfernt es, Rahmen-Aufziehen (Rubberband) über leeren
Boden wählt ALLE Objekte im Rahmen (Umschalt + Rahmen = zusätzliche zur
Auswahl). Loser Klick auf leere Fläche hebt die Auswahl auf. ALLE
markierten Objekte färben sich orange, das Auswahl-Panel rechts listet
sie namentlich auf (ab 9: „… und N weitere“). Projektions-Mathe liegt
in `src/editor/selection_math.gd` (headless getestet).
in `core/editor/selection_math.gd` (headless getestet).
- **Gruppieren:** Buttons „🔗 Gruppieren / ⛓ Gruppe lösen“ im Auswahl-Panel
+ Kürzel Strg+G / Strg+Umschalt+G. Eine Gruppe braucht ≥ 2 Objekte.
Gruppen-Mitglieder ziehen und drehen GEMEINSAM — ein Griff an ein
@ -277,7 +287,7 @@ auch ungespeicherte! — sofort als Spiel in einem EIGENEN Fenster. Der Editor
bleibt offen. Im Spiel: WASD laufen, Maus umsehen, Shift sprinten, Leertaste
springen, ESC beendet das Test-Fenster sauber (kein Prozess-Kill nötig).
- **Temp-Export (`src/editor/test_run.gd`):** Die Map wird nach
- **Temp-Export (`core/editor/test_run.gd`):** Die Map wird nach
`user://testrun/<name>.svmap` exportiert (deterministischer Name aus dem
Map-Namen, erneuter Testlauf überschreibt) — über dieselbe
`SvmapIO.save_to_file`-Validierung wie das echte Speichern. Ist die Map
@ -307,7 +317,7 @@ Tastenkürzel-Karte 1 von 3 (Sly-Freigabe 16.10., finale Belegung).
Shortcut-Karten — Karten 2/3 ergänzen dort.
- **Konventionen (alle Karten):** Tastaturcode-basiert — InputMap-Actions mit
PHYSISCHEN `KEY_*`-Konstanten (`src/editor/shortcut_keys.gd`, registriert in
PHYSISCHEN `KEY_*`-Konstanten (`core/editor/shortcut_keys.gd`, registriert in
`main._ready`, idempotent). Physische Codes = deutsche (QWERTZ) und
Windows-Layouts identisch, keine OS-Hardcodes. Jede Objekt-Operation =
EIN ActionHistory-Eintrag (Ausnahme: reine Kamera-Aktionen).
@ -317,7 +327,7 @@ Shortcut-Karten — Karten 2/3 ergänzen dort.
Orbit bleibt Default —
beim Flug-Exit werden Ziel/Winkel/Abstand aus Flugposition/Blickrichtung
zurückgerechnet (kein Kamera-Sprung, getestet). Mathe pur in
`src/editor/fly_math.gd`, Kamera dünn (`src/viewport/orbit_camera.gd`).
`core/editor/fly_math.gd`, Kamera dünn (`core/viewport/orbit_camera.gd`).
Konflikt-Auflösung: RMB hat ABSOLUTEN Vorrang für den Flug — in JEDEM
Werkzeugzustand (Terrain, Bauen, Spawn, Platzieren; Karte t_2470de89,
kein `rmb_filter` mehr), Mausrad im Flug gehört dem Tempo (interaction
@ -327,7 +337,7 @@ Shortcut-Karten — Karten 2/3 ergänzen dort.
Flug dreht sich nur die Blickrichtung.
- **Esc** = Prioritätskette Werkzeug verlassen → Ghost-Preview abbrechen →
Auswahl aufheben, als pure, headless-getestete Funktion
(`src/editor/shortcut_policy.gd`).
(`core/editor/shortcut_policy.gd`).
- **Entf (DELETE)** = Auswahl SOFORT löschen ohne Rückfrage (Sly-Yolo) —
wirkt auf Szene-Auswahl UND Objektbaum-Markierung (Baum und Szene sind
synchron), Strg+Z deckt es ab. War schon mehrfach-fähig, jetzt

View file

@ -80,6 +80,6 @@ Roh-Modelle und Texturen weiterzugeben. Das heißt konkret:
---
*Technischer Hintergrund: die Modelle werden zur Laufzeit per GLTFDocument
aus dem `models/`-Ordner geladen (siehe `src/viewport/glb_mesh_store.gd`,
aus dem `models/`-Ordner geladen (siehe `core/viewport/glb_mesh_store.gd`,
Quellen-Reihenfolge: Einstellungen → Nachbar-Ordner `../scopedvr-client` →
`models/`). Erster Treffer gewinnt.*

View file

@ -2,7 +2,7 @@
extends EditorPlugin
const PIECE_SCRIPT = preload("res://addons/modular_builder/modular_piece.gd")
const DETAIL_SCRIPT = preload("res://addons/modular_builder/modular_building_detail.gd")
const DETAIL_SCRIPT = preload("res://core/vendor/modular_builder/modular_building_detail.gd")
const MESH_BAKER = preload("res://addons/modular_builder/modular_mesh_baker.gd")
const TOOL_NONE := ""
const TOOL_FOUNDATION := "foundation"

View file

@ -1,284 +0,0 @@
@tool
class_name ModularBuilderDetail
extends Node3D
enum DetailType { WINDOW, DOOR, HATCH, PILLAR, FENCE, PARAPET }
enum DetailMode { OPENING, SEPARATE_OBJECT }
enum WindowStyle { SINGLE_PANE, CROSS_PANE }
enum DoorStyle { FLAT, PANELED }
@export var detail_type: DetailType = DetailType.WINDOW:
set(value):
detail_type = value
notify_property_list_changed()
_rebuild()
@export var detail_mode: DetailMode = DetailMode.OPENING:
set(value):
detail_mode = value
notify_property_list_changed()
_rebuild()
@export var center_align: bool = false:
set(value):
center_align = value
_apply_pillar_alignment()
notify_property_list_changed()
@export_storage var pillar_direction: Vector3 = Vector3.UP
@export_storage var pillar_alignment_basis: Basis = Basis.IDENTITY
@export var window_style: WindowStyle = WindowStyle.SINGLE_PANE:
set(value):
window_style = value
_rebuild()
@export var door_style: DoorStyle = DoorStyle.FLAT:
set(value):
door_style = value
_rebuild()
@export_range(0.01, 5.0, 0.001, "suffix:m") var width: float = 1.0:
set(value):
width = value
_rebuild()
@export_range(0.2, 5.0, 0.001, "suffix:m") var height: float = 1.0:
set(value):
height = value
_rebuild()
@export_range(0.02, 0.5, 0.001, "suffix:m") var frame_depth: float = 0.08:
set(value):
frame_depth = value
_rebuild()
@export_range(0.1, 8.0, 0.001, "suffix:m") var fence_height: float = 0.7:
set(value):
fence_height = value
_rebuild()
@export_range(0, 100, 1, "suffix: posts") var fence_divisions: int = 1:
set(value):
fence_divisions = value
_rebuild()
@export_storage var path_points: PackedVector3Array = PackedVector3Array()
@export_range(0.01, 0.5, 0.001, "suffix:m") var frame_width: float = 0.08:
set(value):
frame_width = value
_rebuild()
@export var follow_host_thickness: bool = true:
set(value):
follow_host_thickness = value
_rebuild()
@export var surface_material: Material:
set(value):
surface_material = value
_rebuild()
@export var frame_material: Material:
set(value):
frame_material = value
_rebuild()
@export var panel_material: Material:
set(value):
panel_material = value
_rebuild()
func _validate_property(property: Dictionary) -> void:
var separate_object := detail_mode == DetailMode.SEPARATE_OBJECT
var is_window := detail_type == DetailType.WINDOW
var is_door := detail_type == DetailType.DOOR
var has_frame_and_panel := separate_object and detail_type != DetailType.PILLAR and detail_type != DetailType.FENCE and detail_type != DetailType.PARAPET
var show_property := true
match StringName(property.name):
&"detail_mode":
show_property = detail_type != DetailType.PILLAR and detail_type != DetailType.FENCE and detail_type != DetailType.PARAPET
&"center_align":
show_property = detail_type == DetailType.PILLAR
&"fence_height", &"fence_divisions":
show_property = detail_type == DetailType.FENCE or detail_type == DetailType.PARAPET
&"path_points":
show_property = false
&"width":
show_property = detail_type != DetailType.FENCE and detail_type != DetailType.PARAPET
if detail_type == DetailType.PILLAR:
property.hint = PROPERTY_HINT_RANGE
property.hint_string = "0.01,5.0,0.001,suffix:m"
&"height":
show_property = detail_type != DetailType.FENCE and detail_type != DetailType.PARAPET
&"window_style":
show_property = is_window and separate_object
&"door_style":
show_property = is_door and separate_object
&"frame_width", &"frame_material", &"panel_material":
show_property = has_frame_and_panel
&"follow_host_thickness":
show_property = has_frame_and_panel
&"frame_depth":
show_property = has_frame_and_panel and not follow_host_thickness
&"surface_material":
show_property = separate_object
if not show_property:
property.usage = PROPERTY_USAGE_NO_EDITOR
func _ready() -> void:
set_notify_transform(true)
_rebuild()
func _notification(what: int) -> void:
if what == NOTIFICATION_TRANSFORM_CHANGED and is_inside_tree():
var host := get_parent()
if host != null and host.has_method("_rebuild"):
host.call("_rebuild")
func _on_host_thickness_changed() -> void:
_rebuild(false)
func _apply_pillar_alignment() -> void:
if detail_type != DetailType.PILLAR:
return
var direction := pillar_direction.normalized()
if direction.is_zero_approx():
direction = Vector3.UP
if center_align:
var object_axes := pillar_alignment_basis.orthonormalized()
var best_axis := direction
var best_dot := -1.0
for axis in [object_axes.x, object_axes.y, object_axes.z]:
var normalized_axis: Vector3 = axis.normalized()
var alignment := absf(direction.dot(normalized_axis))
if alignment > best_dot:
best_dot = alignment
best_axis = normalized_axis if direction.dot(normalized_axis) >= 0.0 else -normalized_axis
direction = best_axis
var reference_axis := Vector3.FORWARD if absf(direction.dot(Vector3.UP)) > 0.99 else Vector3.UP
var x_axis := reference_axis.cross(direction).normalized()
var z_axis := x_axis.cross(direction).normalized()
transform.basis = Basis(x_axis, direction, z_axis).orthonormalized()
if center_align and pillar_direction.length() > 0.0:
height = pillar_direction.length()
func _rebuild(notify_host: bool = true) -> void:
if not is_inside_tree():
return
for child in get_children():
if child.name == "DetailGeometry":
remove_child(child)
child.queue_free()
var host := get_parent()
if notify_host and host != null and host.has_method("_rebuild"):
host.call("_rebuild")
if detail_mode == DetailMode.OPENING and detail_type != DetailType.FENCE and detail_type != DetailType.PARAPET:
return
var holder := Node3D.new()
holder.name = "DetailGeometry"
add_child(holder)
var scene_root: Node = null
if Engine.is_editor_hint() and not has_meta("modular_builder_preview"):
scene_root = get_tree().edited_scene_root
if scene_root:
holder.owner = scene_root
var effective_depth := _effective_frame_depth()
var frame := minf(maxf(frame_width, 0.01), minf(width, height) * 0.45)
if detail_type == DetailType.FENCE or detail_type == DetailType.PARAPET:
_build_fence_geometry(holder)
return
if detail_type == DetailType.PILLAR:
_add_box(holder, "PillarBody", Vector3(width, height, width), Vector3.ZERO, surface_material)
return
if detail_type == DetailType.HATCH:
_add_box(holder, "LeftFrame", Vector3(frame, effective_depth, height), Vector3(-width * 0.5 + frame * 0.5, 0.0, 0.0), _frame_material())
_add_box(holder, "RightFrame", Vector3(frame, effective_depth, height), Vector3(width * 0.5 - frame * 0.5, 0.0, 0.0), _frame_material())
_add_box(holder, "NearFrame", Vector3(width, effective_depth, frame), Vector3(0.0, 0.0, -height * 0.5 + frame * 0.5), _frame_material())
_add_box(holder, "FarFrame", Vector3(width, effective_depth, frame), Vector3(0.0, 0.0, height * 0.5 - frame * 0.5), _frame_material())
_add_box(holder, "HatchPanel", Vector3(width - frame * 2.0, effective_depth * 0.35, height - frame * 2.0), Vector3(0.0, effective_depth * 0.4, 0.0), _panel_material())
return
_add_box(holder, "LeftFrame", Vector3(frame, height, effective_depth), Vector3(-width * 0.5 + frame * 0.5, 0.0, 0.0), _frame_material())
_add_box(holder, "RightFrame", Vector3(frame, height, effective_depth), Vector3(width * 0.5 - frame * 0.5, 0.0, 0.0), _frame_material())
_add_box(holder, "TopFrame", Vector3(width, frame, effective_depth), Vector3(0.0, height * 0.5 - frame * 0.5, 0.0), _frame_material())
if detail_type != DetailType.DOOR:
_add_box(holder, "BottomFrame", Vector3(width, frame, effective_depth), Vector3(0.0, -height * 0.5 + frame * 0.5, 0.0), _frame_material())
if detail_type == DetailType.WINDOW:
_add_box(holder, "WindowPanel", Vector3(maxf(width - frame * 2.0, 0.001), maxf(height - frame * 2.0, 0.001), effective_depth * 0.35), Vector3.ZERO, _panel_material())
if window_style == WindowStyle.CROSS_PANE:
_add_box(holder, "VerticalMullion", Vector3(frame * 0.55, height - frame * 2.0, effective_depth * 0.4), Vector3.ZERO, _frame_material())
_add_box(holder, "HorizontalMullion", Vector3(width - frame * 2.0, frame * 0.55, effective_depth * 0.4), Vector3.ZERO, _frame_material())
elif detail_type == DetailType.DOOR:
_add_box(holder, "DoorPanel", Vector3(width - frame * 2.0, height - frame, effective_depth * 0.45), Vector3(0.0, -frame * 0.5, 0.0), _panel_material())
if door_style == DoorStyle.PANELED:
var inset_depth := maxf(effective_depth * 0.04, 0.005)
var panel_width := (width - frame * 2.0) * 0.82
var panel_height := maxf((height - frame) * 0.28, 0.05)
for panel_index in range(2):
var panel_y := -frame * 0.5 + (panel_index - 0.5) * (panel_height + frame * 0.25)
_add_box(holder, "DoorInset_%d" % panel_index, Vector3(panel_width, panel_height, inset_depth), Vector3(0.0, panel_y, effective_depth * 0.24), _frame_material())
func _effective_frame_depth() -> float:
if follow_host_thickness:
var host := get_parent()
if host != null:
var host_thickness = host.get("thickness")
if host_thickness is float or host_thickness is int:
var depth := float(host_thickness)
if detail_type == DetailType.WINDOW or detail_type == DetailType.DOOR:
depth *= 1.25
return maxf(depth, 0.02)
return frame_depth
func _build_fence_geometry(holder: Node3D) -> void:
if path_points.size() < 2 or fence_height <= 0.0:
return
var start := path_points[0]
var finish := path_points[1]
var path := finish - start
var path_length := path.length()
if path_length < 0.05:
return
var path_axis := path / path_length
var up_axis := Vector3.UP - path_axis * path_axis.dot(Vector3.UP)
if up_axis.length_squared() < 0.001:
up_axis = Vector3.FORWARD - path_axis * path_axis.dot(Vector3.FORWARD)
up_axis = up_axis.normalized()
var side_axis := path_axis.cross(up_axis).normalized()
var post_width := 0.16 if detail_type == DetailType.PARAPET else 0.08
var post_count := fence_divisions + 2
var posts: Array[Vector3] = []
for i in range(post_count):
var base := start.lerp(finish, float(i) / float(post_count - 1))
posts.append(base)
_add_oriented_box(holder, "Post_%d" % i, base + up_axis * fence_height * 0.5, path_axis, up_axis, side_axis, Vector3(post_width, fence_height, post_width))
for i in range(posts.size() - 1):
var a := posts[i]
var b := posts[i + 1]
var segment := b - a
var segment_length := segment.length()
if detail_type == DetailType.PARAPET:
_add_oriented_box(holder, "Rail_%d" % i, (a + b) * 0.5 + up_axis * fence_height * 0.78, segment.normalized(), up_axis, side_axis, Vector3(segment_length, post_width * 0.8, post_width * 0.8))
else:
for height_ratio in [0.28, 0.78]:
_add_oriented_box(holder, "Rail_%d_%d" % [i, int(height_ratio * 100.0)], (a + b) * 0.5 + up_axis * fence_height * height_ratio, segment.normalized(), up_axis, side_axis, Vector3(segment_length, post_width, post_width))
func _add_oriented_box(holder: Node3D, node_name: String, center: Vector3, axis_x: Vector3, axis_y: Vector3, axis_z: Vector3, dimensions: Vector3) -> void:
var mesh_instance := MeshInstance3D.new()
mesh_instance.name = node_name
var box := BoxMesh.new()
box.size = dimensions
mesh_instance.mesh = box
var basis := Basis(axis_x.normalized(), axis_y.normalized(), axis_z.normalized()).orthonormalized()
mesh_instance.transform = Transform3D(basis, center)
mesh_instance.material_override = surface_material
holder.add_child(mesh_instance)
if Engine.is_editor_hint() and not has_meta("modular_builder_preview"):
var scene_root := get_tree().edited_scene_root
if scene_root:
mesh_instance.owner = scene_root
func _frame_material() -> Material:
return frame_material if frame_material != null else surface_material
func _panel_material() -> Material:
return panel_material if panel_material != null else surface_material
func _add_box(holder: Node3D, node_name: String, box_size: Vector3, box_position: Vector3, material: Material = null) -> void:
var mesh_instance := MeshInstance3D.new()
mesh_instance.name = node_name
var box := BoxMesh.new()
box.size = box_size
mesh_instance.mesh = box
mesh_instance.position = box_position
mesh_instance.material_override = material if material != null else surface_material
holder.add_child(mesh_instance)
if Engine.is_editor_hint() and not has_meta("modular_builder_preview"):
var scene_root := get_tree().edited_scene_root
if scene_root:
mesh_instance.owner = scene_root

View file

@ -1 +0,0 @@
uid://dsttda167kuhi

View file

@ -1,6 +1,6 @@
@tool
class_name ModularBuilderPiece
extends "res://addons/modular_builder/modular_piece_geometry.gd"
extends "res://core/vendor/modular_builder/modular_piece_geometry.gd"
func _ready() -> void:
_rebuild()

View file

@ -1,748 +0,0 @@
@tool
class_name ModularBuilderPieceGeometry
extends Node3D
const DETAIL_SCRIPT_PATH := "res://addons/modular_builder/modular_building_detail.gd"
const DETAIL_TYPE_HATCH := 2
const DETAIL_TYPE_PILLAR := 3
enum PieceType { FOUNDATION_SQUARE, FOUNDATION_TRIANGLE, FLOOR, WALL, BUILDING, GABLE_WALL, ROOF_GABLE, ROOF_SHED, GABLE_WALL_RIGHT, ROOF_PYRAMID, STAIRS, FENCE }
@export var piece_type: PieceType = PieceType.FOUNDATION_SQUARE:
set(value):
piece_type = value
notify_property_list_changed()
_rebuild()
@export_range(0.5, 8.0, 0.001, "suffix:m") var unit_size: float = 2.0:
set(value):
unit_size = value
_rebuild()
@export_range(0.01, 1.0, 0.001, "suffix:m") var thickness: float = 0.2:
set(value):
thickness = value
_rebuild()
for child in get_children():
if child.has_method("_on_host_thickness_changed"):
child.call("_on_host_thickness_changed")
@export_range(0.1, 8.0, 0.001, "suffix:m") var rise: float = 1.0:
set(value):
rise = value
_rebuild()
@export_range(0.01, 32.0, 0.001, "suffix:m") var roof_width: float = 2.0:
set(value):
roof_width = value
_rebuild()
@export_range(1, 100, 1, "suffix: steps") var stair_count: int = 10:
set(value):
stair_count = value
_rebuild()
@export_range(0.01, 8.0, 0.001, "suffix:m") var stair_width: float = 1.0:
set(value):
stair_width = value
_rebuild()
@export_range(0, 100, 1, "suffix: posts") var fence_divisions: int = 1:
set(value):
fence_divisions = value
_rebuild()
@export_range(0.1, 8.0, 0.001, "suffix:m") var fence_height: float = 1.0:
set(value):
fence_height = value
_rebuild()
@export var symmetric_dimensions: bool = true:
set(value):
if symmetric_dimensions == value:
return
if not value:
_capture_mesh_dimensions()
symmetric_dimensions = value
notify_property_list_changed()
if value:
scale = Vector3.ONE
else:
_apply_dimension_scale()
@export_range(0.01, 100.0, 0.001, "suffix:m") var dimension_width: float = 2.0:
set(value):
dimension_width = value
_apply_dimension_scale()
@export_range(0.01, 100.0, 0.001, "suffix:m") var dimension_height: float = 2.0:
set(value):
dimension_height = value
_apply_dimension_scale()
@export_range(0.01, 100.0, 0.001, "suffix:m") var dimension_depth: float = 2.0:
set(value):
dimension_depth = value
_apply_dimension_scale()
@export_storage var _dimension_reference: Vector3 = Vector3.ZERO
@export var center_align: bool = false:
set(value):
center_align = value
_rebuild()
@export var surface_material: Material:
set(value):
surface_material = value
_rebuild()
@export var custom_points: PackedVector3Array = PackedVector3Array():
set(value):
custom_points = value
_rebuild()
@export var centered_origin: bool = false:
set(value):
centered_origin = value
_rebuild()
func _rebuild() -> void:
pass
func _capture_mesh_dimensions() -> void:
var geometry := get_node_or_null("Geometry") as MeshInstance3D
if geometry == null or geometry.mesh == null:
return
var dimensions := geometry.mesh.get_aabb().size
if dimensions.x > 0.001:
dimension_width = dimensions.x
if dimensions.y > 0.001:
dimension_height = dimensions.y
if dimensions.z > 0.001:
dimension_depth = dimensions.z
_dimension_reference = dimensions
func _apply_dimension_scale() -> void:
if symmetric_dimensions or _dimension_reference.x <= 0.001 or _dimension_reference.y <= 0.001 or _dimension_reference.z <= 0.001:
return
var target := Vector3(dimension_width, dimension_height, dimension_depth)
if piece_type == PieceType.FOUNDATION_SQUARE or piece_type == PieceType.FOUNDATION_TRIANGLE or piece_type == PieceType.FLOOR:
target.y = _dimension_reference.y
if piece_type == PieceType.WALL:
target.z = _dimension_reference.z
scale = Vector3(target.x / _dimension_reference.x, target.y / _dimension_reference.y, target.z / _dimension_reference.z)
func _make_mesh() -> ArrayMesh:
if piece_type == PieceType.GABLE_WALL and custom_points.size() >= 2:
return _make_gable_wall_mesh()
if piece_type == PieceType.GABLE_WALL_RIGHT and custom_points.size() >= 2:
return _make_right_gable_wall_mesh()
if (piece_type == PieceType.ROOF_GABLE or piece_type == PieceType.ROOF_SHED or piece_type == PieceType.ROOF_PYRAMID) and custom_points.size() >= 2:
return _make_roof_mesh()
if piece_type == PieceType.STAIRS and custom_points.size() >= 2:
return _make_stair_mesh()
if piece_type == PieceType.FENCE and custom_points.size() >= 2:
return _make_fence_mesh()
if custom_points.size() >= 2 and piece_type == PieceType.WALL:
return _make_custom_wall_mesh()
if custom_points.size() >= 3 and piece_type == PieceType.FLOOR:
return _make_custom_floor_mesh()
if custom_points.size() >= 3 and (piece_type == PieceType.FOUNDATION_SQUARE or piece_type == PieceType.FOUNDATION_TRIANGLE):
return _make_custom_foundation_mesh()
var vertices := PackedVector3Array()
var normals := PackedVector3Array()
var s := unit_size
var polygon: Array[Vector2]
match piece_type:
PieceType.FOUNDATION_TRIANGLE:
polygon = [Vector2(-s * 0.5, -s * 0.5), Vector2(s * 0.5, -s * 0.5), Vector2(-s * 0.5, s * 0.5)]
_:
polygon = [Vector2(-s * 0.5, -s * 0.5), Vector2(s * 0.5, -s * 0.5), Vector2(s * 0.5, s * 0.5), Vector2(-s * 0.5, s * 0.5)]
var y0 := -thickness * 0.5 if centered_origin else 0.0
var y1 := thickness * 0.5 if centered_origin else thickness
if piece_type == PieceType.WALL:
polygon = [Vector2(-s * 0.5, -thickness * 0.5), Vector2(s * 0.5, -thickness * 0.5), Vector2(s * 0.5, thickness * 0.5), Vector2(-s * 0.5, thickness * 0.5)]
y0 = -s * 0.5 if centered_origin else 0.0
y1 = s * 0.5 if centered_origin else s
if piece_type == PieceType.FOUNDATION_SQUARE or piece_type == PieceType.FOUNDATION_TRIANGLE:
var hatch_mesh := _make_hatch_surface_mesh(polygon, y1, y0)
if hatch_mesh != null:
return hatch_mesh
for i in range(1, polygon.size() - 1):
_add_tri(vertices, normals, Vector3(polygon[0].x, y1, polygon[0].y), Vector3(polygon[i + 1].x, y1, polygon[i + 1].y), Vector3(polygon[i].x, y1, polygon[i].y))
_add_tri(vertices, normals, Vector3(polygon[0].x, y0, polygon[0].y), Vector3(polygon[i].x, y0, polygon[i].y), Vector3(polygon[i + 1].x, y0, polygon[i + 1].y))
for i in range(polygon.size()):
var j := (i + 1) % polygon.size()
var a := polygon[i]
var b := polygon[j]
_add_tri(vertices, normals, Vector3(a.x, y0, a.y), Vector3(b.x, y0, b.y), Vector3(b.x, y1, b.y))
_add_tri(vertices, normals, Vector3(a.x, y0, a.y), Vector3(b.x, y1, b.y), Vector3(a.x, y1, a.y))
var arrays: Array = []
arrays.resize(Mesh.ARRAY_MAX)
arrays[Mesh.ARRAY_VERTEX] = vertices
arrays[Mesh.ARRAY_NORMAL] = normals
var result := ArrayMesh.new()
result.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)
return result
func _make_gable_wall_mesh() -> ArrayMesh:
var vertices := PackedVector3Array()
var normals := PackedVector3Array()
var base_points := _get_centered_gable_base() if center_align else PackedVector3Array([custom_points[0], custom_points[1]])
var a: Vector3 = base_points[0]
var b: Vector3 = base_points[1]
var direction := (b - a).normalized()
var side := Vector3(-direction.z, 0.0, direction.x).normalized() * thickness * 0.5
var peak := (a + b) * 0.5 + Vector3.UP * rise
var front_a := a + side
var front_b := b + side
var front_peak := peak + side
var back_a := a - side
var back_b := b - side
var back_peak := peak - side
_add_tri(vertices, normals, front_a, front_b, front_peak)
_add_tri(vertices, normals, back_b, back_a, back_peak)
_add_quad(vertices, normals, front_a, back_a, back_b, front_b)
_add_quad(vertices, normals, front_b, back_b, back_peak, front_peak)
_add_quad(vertices, normals, front_peak, back_peak, back_a, front_a)
return _array_mesh(vertices, normals)
func _make_right_gable_wall_mesh() -> ArrayMesh:
var vertices := PackedVector3Array()
var normals := PackedVector3Array()
var base_points := _get_centered_gable_base() if center_align else PackedVector3Array([custom_points[0], custom_points[1]])
var a: Vector3 = base_points[0]
var b: Vector3 = base_points[1]
var direction := (b - a).normalized()
var side := Vector3(-direction.z, 0.0, direction.x).normalized() * thickness * 0.5
var peak := b + Vector3.UP * rise
var front_a := a + side
var front_b := b + side
var front_peak := peak + side
var back_a := a - side
var back_b := b - side
var back_peak := peak - side
_add_tri(vertices, normals, front_a, front_b, front_peak)
_add_tri(vertices, normals, back_peak, back_b, back_a)
_add_quad(vertices, normals, front_a, back_a, back_b, front_b)
_add_quad(vertices, normals, front_b, back_b, back_peak, front_peak)
_add_quad(vertices, normals, front_peak, back_peak, back_a, front_a)
return _array_mesh(vertices, normals)
func _make_roof_mesh() -> ArrayMesh:
if piece_type == PieceType.ROOF_SHED and custom_points.size() == 2:
return _make_shed_roof_mesh()
if custom_points.size() >= 4:
return _make_oriented_roof_mesh()
var vertices := PackedVector3Array()
var normals := PackedVector3Array()
var first: Vector3 = custom_points[0]
var second: Vector3 = custom_points[1]
var min_x := minf(first.x, second.x)
var max_x := maxf(first.x, second.x)
var min_z := minf(first.z, second.z)
var max_z := maxf(first.z, second.z)
var span_x := max_x - min_x
var span_z := max_z - min_z
if span_x < 0.02 or span_z < 0.02:
return _array_mesh(vertices, normals)
var panels: Array = []
if piece_type == PieceType.ROOF_GABLE:
if span_x <= span_z:
var ridge_x := (min_x + max_x) * 0.5
panels.append([Vector3(min_x, 0.0, min_z), Vector3(min_x, 0.0, max_z), Vector3(ridge_x, rise, max_z), Vector3(ridge_x, rise, min_z)])
panels.append([Vector3(ridge_x, rise, min_z), Vector3(ridge_x, rise, max_z), Vector3(max_x, 0.0, max_z), Vector3(max_x, 0.0, min_z)])
else:
var ridge_z := (min_z + max_z) * 0.5
panels.append([Vector3(min_x, 0.0, min_z), Vector3(max_x, 0.0, min_z), Vector3(max_x, rise, ridge_z), Vector3(min_x, rise, ridge_z)])
panels.append([Vector3(min_x, rise, ridge_z), Vector3(max_x, rise, ridge_z), Vector3(max_x, 0.0, max_z), Vector3(min_x, 0.0, max_z)])
else:
if span_x <= span_z:
var low_x := first.x
var high_x := second.x
panels.append([Vector3(low_x, 0.0, min_z), Vector3(low_x, 0.0, max_z), Vector3(high_x, rise, max_z), Vector3(high_x, rise, min_z)])
else:
var low_z := first.z
var high_z := second.z
panels.append([Vector3(min_x, 0.0, low_z), Vector3(max_x, 0.0, low_z), Vector3(max_x, rise, high_z), Vector3(min_x, rise, high_z)])
for panel in panels:
_append_solid_panel(vertices, normals, panel)
return _array_mesh(vertices, normals)
func _make_shed_roof_mesh() -> ArrayMesh:
var vertices := PackedVector3Array()
var normals := PackedVector3Array()
var low: Vector3 = custom_points[0]
var high: Vector3 = custom_points[1]
var slope := high - low
var horizontal := Vector3(slope.x, 0.0, slope.z)
if horizontal.length_squared() < 0.0001 or roof_width <= 0.0:
return _array_mesh(vertices, normals)
var across := Vector3(horizontal.z, 0.0, -horizontal.x).normalized() * roof_width * 0.5
var panel := [low - across, low + across, high + across, high - across]
_append_solid_panel(vertices, normals, panel)
return _array_mesh(vertices, normals)
func _make_oriented_roof_mesh() -> ArrayMesh:
var vertices := PackedVector3Array()
var normals := PackedVector3Array()
var p0: Vector3 = custom_points[0]
var p1: Vector3 = custom_points[1]
var p2: Vector3 = custom_points[2]
var p3: Vector3 = custom_points[3]
var edge_01 := Vector2(p1.x - p0.x, p1.z - p0.z).length()
var edge_12 := Vector2(p2.x - p1.x, p2.z - p1.z).length()
var panels: Array = []
if piece_type == PieceType.ROOF_GABLE:
if edge_01 <= edge_12:
var ridge_01 := (p0 + p1) * 0.5 + Vector3.UP * rise
var ridge_23 := (p2 + p3) * 0.5 + Vector3.UP * rise
panels.append([p0, p3, ridge_23, ridge_01])
panels.append([ridge_01, ridge_23, p2, p1])
else:
var ridge_12 := (p1 + p2) * 0.5 + Vector3.UP * rise
var ridge_30 := (p3 + p0) * 0.5 + Vector3.UP * rise
panels.append([p0, p1, ridge_12, ridge_30])
panels.append([ridge_30, ridge_12, p2, p3])
elif piece_type == PieceType.ROOF_PYRAMID:
var peak := (p0 + p1 + p2 + p3) * 0.25 + Vector3.UP * rise
panels.append([p0, p1, peak])
panels.append([p1, p2, peak])
panels.append([p2, p3, peak])
panels.append([p3, p0, peak])
else:
# The four points define the low and high edges. Keep their centers
# fixed when adjusting both edge widths in the Inspector.
var base_width := Vector2(p1.x - p0.x, p1.z - p0.z).length()
if base_width > 0.001 and roof_width > 0.0:
var direction := Vector3(p1.x - p0.x, 0.0, p1.z - p0.z).normalized()
var low_center := (p0 + p1) * 0.5
var high_center := (p2 + p3) * 0.5
var half_width := roof_width * 0.5
panels.append([
low_center - direction * half_width,
low_center + direction * half_width,
high_center + direction * half_width,
high_center - direction * half_width,
])
else:
panels.append([p0, p1, p2, p3])
for panel in panels:
_append_solid_panel(vertices, normals, panel)
return _array_mesh(vertices, normals)
func _make_stair_mesh() -> ArrayMesh:
var vertices := PackedVector3Array()
var normals := PackedVector3Array()
var start: Vector3 = custom_points[0]
var finish: Vector3 = custom_points[1]
var horizontal := Vector3(finish.x - start.x, 0.0, finish.z - start.z)
var run := horizontal.length()
var rise_amount := finish.y - start.y
if run < 0.05 or rise_amount <= 0.05 or stair_count < 1 or stair_width <= 0.0:
return _array_mesh(vertices, normals)
var forward := horizontal / run
var width_axis := Vector3(-forward.z, 0.0, forward.x) * stair_width * 0.5
var profile := PackedVector2Array([Vector2(0.0, 0.0), Vector2(run, 0.0), Vector2(run, rise_amount)])
for step_index in range(stair_count - 1, -1, -1):
var tread_start := run * float(step_index) / stair_count
var tread_end := run * float(step_index + 1) / stair_count
var tread_height := rise_amount * float(step_index + 1) / stair_count
profile.append(Vector2(tread_start, tread_height))
if step_index > 0:
profile.append(Vector2(tread_start, rise_amount * float(step_index) / stair_count))
var triangulation := Geometry2D.triangulate_polygon(profile)
for side_sign in [-1.0, 1.0]:
for triangle_index in range(0, triangulation.size(), 3):
var a := profile[triangulation[triangle_index]]
var b := profile[triangulation[triangle_index + 1]]
var c := profile[triangulation[triangle_index + 2]]
var point_a: Vector3 = start + forward * a.x + Vector3.UP * a.y + width_axis * side_sign
var point_b: Vector3 = start + forward * b.x + Vector3.UP * b.y + width_axis * side_sign
var point_c: Vector3 = start + forward * c.x + Vector3.UP * c.y + width_axis * side_sign
if side_sign > 0.0:
_add_tri(vertices, normals, point_a, point_b, point_c)
else:
_add_tri(vertices, normals, point_c, point_b, point_a)
for profile_index in range(profile.size()):
var next_index := (profile_index + 1) % profile.size()
var a := profile[profile_index]
var b := profile[next_index]
var point_a_left := start + forward * a.x + Vector3.UP * a.y - width_axis
var point_b_left := start + forward * b.x + Vector3.UP * b.y - width_axis
var point_b_right := start + forward * b.x + Vector3.UP * b.y + width_axis
var point_a_right := start + forward * a.x + Vector3.UP * a.y + width_axis
_add_quad(vertices, normals, point_a_left, point_b_left, point_b_right, point_a_right)
return _array_mesh(vertices, normals)
func _make_fence_mesh() -> ArrayMesh:
var vertices := PackedVector3Array()
var normals := PackedVector3Array()
var start: Vector3 = custom_points[0]
var finish: Vector3 = custom_points[1]
var path := finish - start
var path_length := path.length()
if path_length < 0.05 or fence_height <= 0.0:
return _array_mesh(vertices, normals)
var path_axis := path / path_length
var post_count := fence_divisions + 2
var post_positions: Array[Vector3] = []
for post_index in range(post_count):
var base_position := start.lerp(finish, float(post_index) / float(post_count - 1))
post_positions.append(base_position)
var side_axis := path_axis.cross(Vector3.UP).normalized()
if side_axis.length_squared() < 0.001:
side_axis = Vector3.FORWARD
_append_oriented_box(vertices, normals, base_position + Vector3.UP * fence_height * 0.5, path_axis, Vector3.UP, side_axis, Vector3(thickness, fence_height, thickness))
for section_index in range(post_positions.size() - 1):
var section_start := post_positions[section_index]
var section_end := post_positions[section_index + 1]
var section_axis := (section_end - section_start).normalized()
var rail_up := Vector3.UP - section_axis * section_axis.dot(Vector3.UP)
if rail_up.length_squared() < 0.001:
rail_up = Vector3.FORWARD - section_axis * section_axis.dot(Vector3.FORWARD)
rail_up = rail_up.normalized()
var rail_side := section_axis.cross(rail_up).normalized()
var section_length := section_start.distance_to(section_end)
for height_ratio in [0.28, 0.78]:
var rail_center: Vector3 = (section_start + section_end) * 0.5 + Vector3.UP * fence_height * height_ratio
_append_oriented_box(vertices, normals, rail_center, section_axis, rail_up, rail_side, Vector3(section_length, thickness, thickness))
return _array_mesh(vertices, normals)
func _append_oriented_box(vertices: PackedVector3Array, normals: PackedVector3Array, center: Vector3, axis_x: Vector3, axis_y: Vector3, axis_z: Vector3, dimensions: Vector3) -> void:
var x := axis_x.normalized() * dimensions.x * 0.5
var y := axis_y.normalized() * dimensions.y * 0.5
var z := axis_z.normalized() * dimensions.z * 0.5
var nnn := center - x - y - z
var pnn := center + x - y - z
var ppn := center + x + y - z
var npn := center - x + y - z
var nnp := center - x - y + z
var pnp := center + x - y + z
var ppp := center + x + y + z
var npp := center - x + y + z
_add_quad(vertices, normals, nnp, pnp, ppp, npp)
_add_quad(vertices, normals, pnn, nnn, npn, ppn)
_add_quad(vertices, normals, npp, ppp, ppn, npn)
_add_quad(vertices, normals, nnn, pnn, pnp, nnp)
_add_quad(vertices, normals, nnn, nnp, npp, npn)
_add_quad(vertices, normals, pnp, pnn, ppn, ppp)
func _get_centered_gable_base() -> PackedVector3Array:
var selected_a := to_global(custom_points[0])
var selected_b := to_global(custom_points[1])
var search_root: Node = get_parent()
while search_root != null and not search_root is ModularBuilderPieceGeometry:
search_root = search_root.get_parent()
if search_root == null:
return PackedVector3Array([custom_points[0], custom_points[1]])
var walls: Array[ModularBuilderPieceGeometry] = []
_collect_centering_walls(search_root, walls)
var centered_a := selected_a
var centered_b := selected_b
var nearest_a := INF
var nearest_b := INF
for wall in walls:
if wall.custom_points.size() < 2:
continue
var wall_a := wall.to_global(wall.custom_points[0] + Vector3.UP * wall.unit_size)
var wall_b := wall.to_global(wall.custom_points[1] + Vector3.UP * wall.unit_size)
var tolerance: float = wall.thickness + 0.04
for endpoint in [wall_a, wall_b]:
var distance_a := selected_a.distance_to(endpoint)
if distance_a < nearest_a and distance_a <= tolerance:
nearest_a = distance_a
centered_a = endpoint
var distance_b := selected_b.distance_to(endpoint)
if distance_b < nearest_b and distance_b <= tolerance:
nearest_b = distance_b
centered_b = endpoint
if nearest_a < INF and nearest_b < INF and centered_a.distance_to(centered_b) >= 0.02:
return PackedVector3Array([to_local(centered_a), to_local(centered_b)])
return PackedVector3Array([custom_points[0], custom_points[1]])
func _collect_centering_walls(node: Node, walls: Array[ModularBuilderPieceGeometry]) -> void:
if node is ModularBuilderPieceGeometry and node.piece_type == PieceType.WALL:
walls.append(node)
for child in node.get_children():
_collect_centering_walls(child, walls)
func _append_solid_panel(vertices: PackedVector3Array, normals: PackedVector3Array, panel: Array) -> void:
if panel.size() < 3:
return
var p0: Vector3 = panel[0]
var p1: Vector3 = panel[1]
var p2: Vector3 = panel[2]
var normal: Vector3 = (p1 - p0).cross(p2 - p0).normalized()
if normal.is_zero_approx():
return
var half_depth: Vector3 = normal * thickness * 0.5
var front: Array[Vector3] = []
var back: Array[Vector3] = []
for point in panel:
front.append(point + half_depth)
back.append(point - half_depth)
for i in range(1, panel.size() - 1):
_add_tri(vertices, normals, front[0], front[i], front[i + 1])
_add_tri(vertices, normals, back[i + 1], back[i], back[0])
for i in range(panel.size()):
var next := (i + 1) % panel.size()
_add_quad(vertices, normals, front[i], back[i], back[next], front[next])
func _make_custom_wall_mesh() -> ArrayMesh:
var vertices := PackedVector3Array()
var normals := PackedVector3Array()
var wall_points: PackedVector3Array = _get_centered_wall_points() if center_align else custom_points
var a: Vector3 = wall_points[0]
var b: Vector3 = wall_points[1]
var direction := (b - a).normalized()
var length := a.distance_to(b)
var side := Vector3(-direction.z, 0.0, direction.x).normalized() * thickness * 0.5
var height := Vector3.UP * unit_size
var openings: Array[PackedVector2Array] = []
for child in get_children():
if _is_detail_node(child) and int(child.get("detail_type")) != DETAIL_TYPE_HATCH and int(child.get("detail_type")) != DETAIL_TYPE_PILLAR:
var detail := child as Node3D
var center := Vector2((detail.position - a).dot(direction), detail.position.y - a.y)
var axis_x := Vector2(detail.transform.basis.x.dot(direction), detail.transform.basis.x.y).normalized()
var axis_y := Vector2(detail.transform.basis.y.dot(direction), detail.transform.basis.y.y).normalized()
var opening := PackedVector2Array([
center - axis_x * float(detail.get("width")) * 0.5 - axis_y * float(detail.get("height")) * 0.5,
center + axis_x * float(detail.get("width")) * 0.5 - axis_y * float(detail.get("height")) * 0.5,
center + axis_x * float(detail.get("width")) * 0.5 + axis_y * float(detail.get("height")) * 0.5,
center - axis_x * float(detail.get("width")) * 0.5 + axis_y * float(detail.get("height")) * 0.5
])
var wall_rect := PackedVector2Array([Vector2(0.0, 0.0), Vector2(length, 0.0), Vector2(length, unit_size), Vector2(0.0, unit_size)])
for clipped_opening in Geometry2D.intersect_polygons(opening, wall_rect):
if clipped_opening.size() >= 3:
openings.append(clipped_opening)
var xs: Array[float] = [0.0, length]
var ys: Array[float] = [0.0, unit_size]
for opening in openings:
for point in opening:
xs.append(clampf(point.x, 0.0, length))
ys.append(clampf(point.y, 0.0, unit_size))
xs.sort()
ys.sort()
for xi in range(xs.size() - 1):
for yi in range(ys.size() - 1):
var u0: float = xs[xi]
var u1: float = xs[xi + 1]
var v0: float = ys[yi]
var v1: float = ys[yi + 1]
var mid := Vector2((u0 + u1) * 0.5, (v0 + v1) * 0.5)
var cell := PackedVector2Array([Vector2(u0, v0), Vector2(u1, v0), Vector2(u1, v1), Vector2(u0, v1)])
var remaining: Array[PackedVector2Array] = [cell]
for opening in openings:
var next_remaining: Array[PackedVector2Array] = []
for polygon in remaining:
for clipped in Geometry2D.clip_polygons(polygon, opening):
if clipped.size() >= 3:
next_remaining.append(clipped)
remaining = next_remaining
for polygon in remaining:
var indices := Geometry2D.triangulate_polygon(polygon)
for ti in range(0, indices.size(), 3):
var p0: Vector2 = polygon[indices[ti]]
var p1: Vector2 = polygon[indices[ti + 1]]
var p2: Vector2 = polygon[indices[ti + 2]]
var f0 := a + direction * p0.x + Vector3.UP * p0.y
var f1 := a + direction * p1.x + Vector3.UP * p1.y
var f2 := a + direction * p2.x + Vector3.UP * p2.y
_add_tri(vertices, normals, f0 + side, f1 + side, f2 + side)
_add_tri(vertices, normals, f2 - side, f1 - side, f0 - side)
# Close the wall body at its ends, top, and base.
_add_quad(vertices, normals, a - side, a + side, a + side + height, a - side + height)
_add_quad(vertices, normals, b + side, b - side, b - side + height, b + side + height)
_add_quad(vertices, normals, a + side + height, b + side + height, b - side + height, a - side + height)
_add_quad(vertices, normals, a - side, b - side, b + side, a + side)
for opening in openings:
for edge_index in range(opening.size()):
var p0 := opening[edge_index]
var p1 := opening[(edge_index + 1) % opening.size()]
var a0 := a + direction * p0.x + Vector3.UP * p0.y
var a1 := a + direction * p1.x + Vector3.UP * p1.y
_add_quad(vertices, normals, a0 + side, a0 - side, a1 - side, a1 + side)
return _array_mesh(vertices, normals)
func _get_centered_wall_points() -> PackedVector3Array:
if custom_points.size() < 2:
return custom_points
var selected_a := to_global(custom_points[0])
var selected_b := to_global(custom_points[1])
var search_root: Node = get_parent()
while search_root != null and not search_root is ModularBuilderPieceGeometry:
search_root = search_root.get_parent()
if search_root == null:
return custom_points
var walls: Array[ModularBuilderPieceGeometry] = []
_collect_centering_walls(search_root, walls)
var centered_a := selected_a
var centered_b := selected_b
var nearest_a := INF
var nearest_b := INF
for wall in walls:
if wall == self or wall.custom_points.size() < 2:
continue
var direction := (wall.custom_points[1] - wall.custom_points[0]).normalized()
var side := Vector3(-direction.z, 0.0, direction.x).normalized() * wall.thickness * 0.5
for endpoint in wall.custom_points:
var center := wall.to_global(endpoint + Vector3.UP * wall.unit_size)
for surface_corner in [center + side, center - side]:
var distance_a := selected_a.distance_to(surface_corner)
if distance_a < nearest_a and distance_a <= wall.thickness + 0.04:
nearest_a = distance_a
centered_a = center
var distance_b := selected_b.distance_to(surface_corner)
if distance_b < nearest_b and distance_b <= wall.thickness + 0.04:
nearest_b = distance_b
centered_b = center
if nearest_a < INF and nearest_b < INF and centered_a.distance_to(centered_b) >= 0.02:
return PackedVector3Array([to_local(centered_a), to_local(centered_b)])
return custom_points
func _make_custom_floor_mesh() -> ArrayMesh:
var polygon: Array[Vector2] = []
for point in custom_points:
polygon.append(Vector2(point.x, point.z))
var hatch_mesh := _make_hatch_surface_mesh(polygon, custom_points[0].y, custom_points[0].y - thickness)
if hatch_mesh != null:
return hatch_mesh
var vertices := PackedVector3Array()
var normals := PackedVector3Array()
var points := custom_points
var bottom: Array[Vector3] = []
for point in points:
bottom.append(point - Vector3.UP * thickness)
for i in range(1, points.size() - 1):
_add_tri(vertices, normals, points[0], points[i + 1], points[i])
_add_tri(vertices, normals, bottom[0], bottom[i], bottom[i + 1])
for i in range(points.size()):
var j := (i + 1) % points.size()
_add_quad(vertices, normals, bottom[i], bottom[j], points[j], points[i])
return _array_mesh(vertices, normals)
func _make_hatch_surface_mesh(polygon: Array[Vector2], top_y: float, bottom_y: float) -> ArrayMesh:
var openings: Array[PackedVector2Array] = []
for child in get_children():
if _is_detail_node(child) and int(child.get("detail_type")) == DETAIL_TYPE_HATCH:
var detail := child as Node3D
var center := Vector2(detail.position.x, detail.position.z)
var axis_x := Vector2(detail.transform.basis.x.x, detail.transform.basis.x.z).normalized()
var axis_y := Vector2(detail.transform.basis.z.x, detail.transform.basis.z.z).normalized()
var opening := PackedVector2Array([
center - axis_x * float(detail.get("width")) * 0.5 - axis_y * float(detail.get("height")) * 0.5,
center + axis_x * float(detail.get("width")) * 0.5 - axis_y * float(detail.get("height")) * 0.5,
center + axis_x * float(detail.get("width")) * 0.5 + axis_y * float(detail.get("height")) * 0.5,
center - axis_x * float(detail.get("width")) * 0.5 + axis_y * float(detail.get("height")) * 0.5
])
openings.append(opening)
if openings.is_empty() or polygon.size() < 3:
return null
var min_x := polygon[0].x
var max_x := polygon[0].x
var min_z := polygon[0].y
var max_z := polygon[0].y
var xs: Array[float] = []
var zs: Array[float] = []
for point in polygon:
min_x = minf(min_x, point.x)
max_x = maxf(max_x, point.x)
min_z = minf(min_z, point.y)
max_z = maxf(max_z, point.y)
xs.append(point.x)
zs.append(point.y)
for opening in openings:
for point in opening:
xs.append(clampf(point.x, min_x, max_x))
zs.append(clampf(point.y, min_z, max_z))
xs.sort()
zs.sort()
var vertices := PackedVector3Array()
var normals := PackedVector3Array()
var source_polygon := PackedVector2Array()
for point in polygon:
source_polygon.append(point)
for xi in range(xs.size() - 1):
for zi in range(zs.size() - 1):
var x0: float = xs[xi]
var x1: float = xs[xi + 1]
var z0: float = zs[zi]
var z1: float = zs[zi + 1]
if x1 - x0 < 0.0001 or z1 - z0 < 0.0001:
continue
var cell := PackedVector2Array([Vector2(x0, z0), Vector2(x1, z0), Vector2(x1, z1), Vector2(x0, z1)])
var remaining: Array[PackedVector2Array] = []
for clipped_surface in Geometry2D.intersect_polygons(source_polygon, cell):
remaining.append(clipped_surface)
for opening in openings:
var next_remaining: Array[PackedVector2Array] = []
for surface_polygon in remaining:
for clipped_surface in Geometry2D.clip_polygons(surface_polygon, opening):
if clipped_surface.size() >= 3:
next_remaining.append(clipped_surface)
remaining = next_remaining
for clipped_surface in remaining:
var triangulated := Geometry2D.triangulate_polygon(clipped_surface)
for ti in range(0, triangulated.size(), 3):
var a: Vector2 = clipped_surface[triangulated[ti]]
var b: Vector2 = clipped_surface[triangulated[ti + 1]]
var c: Vector2 = clipped_surface[triangulated[ti + 2]]
_add_tri(vertices, normals, Vector3(a.x, top_y, a.y), Vector3(c.x, top_y, c.y), Vector3(b.x, top_y, b.y))
_add_tri(vertices, normals, Vector3(a.x, bottom_y, a.y), Vector3(b.x, bottom_y, b.y), Vector3(c.x, bottom_y, c.y))
for i in range(polygon.size()):
var j := (i + 1) % polygon.size()
var a := polygon[i]
var b := polygon[j]
_add_quad(vertices, normals, Vector3(a.x, bottom_y, a.y), Vector3(b.x, bottom_y, b.y), Vector3(b.x, top_y, b.y), Vector3(a.x, top_y, a.y))
for opening in openings:
var visible_edges := Geometry2D.intersect_polygons(opening, source_polygon)
for visible_opening in visible_edges:
for edge_index in range(visible_opening.size()):
var p0 := visible_opening[edge_index]
var p1 := visible_opening[(edge_index + 1) % visible_opening.size()]
_add_quad(vertices, normals, Vector3(p0.x, bottom_y, p0.y), Vector3(p0.x, top_y, p0.y), Vector3(p1.x, top_y, p1.y), Vector3(p1.x, bottom_y, p1.y))
return _array_mesh(vertices, normals)
func _is_detail_node(node: Node) -> bool:
if not node is Node3D or node.get_script() == null:
return false
return node.get_script().resource_path == DETAIL_SCRIPT_PATH
func _make_custom_foundation_mesh() -> ArrayMesh:
var polygon: Array[Vector2] = []
for point in custom_points:
polygon.append(Vector2(point.x, point.z))
var bottom_y := -thickness * 0.5 if centered_origin else 0.0
var top_y := thickness * 0.5 if centered_origin else thickness
var hatch_mesh := _make_hatch_surface_mesh(polygon, top_y, bottom_y)
if hatch_mesh != null:
return hatch_mesh
var vertices := PackedVector3Array()
var normals := PackedVector3Array()
for i in range(1, custom_points.size() - 1):
var a := custom_points[0]
var b := custom_points[i]
var c := custom_points[i + 1]
_add_tri(vertices, normals, Vector3(a.x, top_y, a.z), Vector3(c.x, top_y, c.z), Vector3(b.x, top_y, b.z))
_add_tri(vertices, normals, Vector3(a.x, bottom_y, a.z), Vector3(b.x, bottom_y, b.z), Vector3(c.x, bottom_y, c.z))
for i in range(custom_points.size()):
var j := (i + 1) % custom_points.size()
var a := custom_points[i]
var b := custom_points[j]
_add_quad(vertices, normals, Vector3(a.x, bottom_y, a.z), Vector3(b.x, bottom_y, b.z), Vector3(b.x, top_y, b.z), Vector3(a.x, top_y, a.z))
return _array_mesh(vertices, normals)
func _add_quad(v: PackedVector3Array, n: PackedVector3Array, a: Vector3, b: Vector3, c: Vector3, d: Vector3) -> void:
_add_tri(v, n, a, b, c)
_add_tri(v, n, a, c, d)
func _array_mesh(v: PackedVector3Array, n: PackedVector3Array) -> ArrayMesh:
var arrays: Array = []
arrays.resize(Mesh.ARRAY_MAX)
arrays[Mesh.ARRAY_VERTEX] = v
arrays[Mesh.ARRAY_NORMAL] = n
var result := ArrayMesh.new()
result.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)
return result
func _add_tri(v: PackedVector3Array, n: PackedVector3Array, a: Vector3, b: Vector3, c: Vector3) -> void:
var normal := (b - a).cross(c - a).normalized()
v.append(a)
v.append(b)
v.append(c)
n.append(normal)
n.append(normal)
n.append(normal)
# Also generate reversed faces to show both sides.
# This keeps floors and foundations visible from below with any material.
v.append(c)
v.append(b)
v.append(a)
n.append(-normal)
n.append(-normal)
n.append(-normal)

View file

@ -1 +0,0 @@
uid://dp1333xlylabf

View file

@ -133,8 +133,8 @@ func _export(oid: String, name_roh: String) -> void:
if not editor_dir.is_empty():
var img := await _thumbnail_bilden(mesh)
if img != null:
DirAccess.make_dir_recursive_absolute(editor_dir + "/library/thumbs")
img.save_png(editor_dir + "/library/thumbs/" + oid + ".png")
DirAccess.make_dir_recursive_absolute(editor_dir + "/core/thumbs")
img.save_png(editor_dir + "/core/thumbs/" + oid + ".png")
# 6) Editor-Sync (Registry-Kopie; vorhandene Thumbnails bleiben stehen).
var schritt4 := _lauf(objekt_tool, ["editor", oid])

1
core Submodule

@ -0,0 +1 @@
Subproject commit 5e98535a0afc83af4e4017806686a76af4913afd

76
docs/bauen.md Normal file
View file

@ -0,0 +1,76 @@
# Bauen — eigene Häuser aus Modulteilen
Stand 25.10.2026 (Umbau). Vorlage: **Modular Builder 0.2.0** von Michel Savadim,
Godot-Erweiterung, Lizenz **CC0 1.0** (Code, Icons, Doku — siehe
`addons/modular_builder/LICENSE`). Die Demo-Szene/Demo-Texturen der Vorlage sind
nicht CC0 und liegen bewusst nicht im Repo (`ADDON_LIZENZ.txt`).
## Prinzip
Ein Bauteil ist ein **ganz normales Bibliotheks-Objekt** (`bau_*`, Kategorie
„bauteile“). Gesetzte Teile stehen in `objects`, ein Gebäude ist eine **Gruppe**
(`group` + `group_names`). Dadurch gelten ohne Sonderfälle:
* Undo/Redo, Auswahl, Verschieben, Drehen, Duplizieren, Löschen, Symmetrie
* Speichern in der `.svmap` (kein eigener Block mehr, Server-Validierung V1–V17)
* **Kollision serverkonsistent**: jedes Teil hat eine Trimesh-Datei
(`library/kollisions/bau_*.json`) — Türen, Fenster, Schießscharten sind echte
Löcher, die Treppe ist eine Stufenfläche (Stufen 20 cm). Editor-Playtest, Client
und Server lesen dieselbe Datei.
* Poly-Budget zählt wie bei jedem Objekt (`poly` = Dreiecke des Teils).
## Teile (Katalog: `core/editor/bau_katalog.gd`)
| Gruppe | Teile |
| --- | --- |
| Fundament & Boden | Fundament, Boden/Decke (2 × 2 m, 20 cm) |
| Wände (2 m breit, 3 m hoch) | Wand, Wand mit Tür (1,2 × 2,2 m), Wand mit Fenster, Wand mit Schießscharte, Brüstung (1,1 m), Eckpfeiler |
| Dach & Giebel (klein 2 m) | Giebelwand, Satteldach, Pyramidendach |
| Dach & Giebel (mittel 4 m) | Giebelwand 4 m, Satteldach 4×4, Pyramidendach 4×4 (Spitze 2 m) |
| Dach & Giebel (groß 6 m) | Giebelwand 6 m, Satteldach 6×6, Pyramidendach 6×6 (Spitze 3 m) |
| Dach aus Einzelteilen (45°) | Dachschräge 2×2 m (2 m hoch), Dachecke außen (Grat), Dachecke innen (Kehle), Dachplateau, Dachstirn — massiv, rundum geschlossen; tiefe Kante/Ecke zeigt Richtung Vorschau, R dreht |
| Treppe | Treppe 4 × 2 m, 3 m hoch (15 Stufen) |
Fertige Pack-Objekte (Container, Hangar-Tore, Betonsperren) stehen NICHT im Bauen-Tab,
sondern wie alle Objekte in der Objekt-Bibliothek unten.
## Snap (`core/editor/build_snap.gd`)
* **XZ:** Wände auf die nächste Zellkante — und zwar GANZ in die Zelle, in der die
Maus ist (Außenseite bündig mit der Kante, kein Überhang, Ecken schließen ohne
Lücke). Klick auf eine vorhandene Wand (Seite oder Oberkante) übernimmt deren Lage
exakt (ersetzen bzw. stapeln). Böden/Dächer/Fundamente in die Zellmitte, große
Dächer (4 m / 6 m) je nach Zellzahl auf Zellecke bzw. Zellmitte, Pfeiler auf die
Zellecke, Treppen auf eine 4 × 2-m-Fläche. `R` dreht die Wand um. Zellen sind
2 × 2 m, global ab (0, 0).
* **Y:** nie die Klickhöhe, sondern eine **Ebene** — Gelände (höchster Punkt unter
der Grundfläche) oder Oberkante eines tragenden Teils darunter. **Wände und
Pfeiler zählen von der Unterkante einer Decke/eines Fundaments**, die Decke selbst
liegt auf der Wandoberkante: jedes Geschoss liegt auf Vielfachen von 3 m, mit oder
ohne Decke darunter stehen die oberen Wände gleich hoch.
* **Geschoss fest:** Bild↑/Bild↓ (oder Knöpfe im Tab) wählen ein festes Geschoss
(Basis = tiefstes Teil in der Nähe, je 3 m). Der Mausstrahl trifft dann die
Geschoss-Ebene statt Wand/Boden darunter — Decken und Böden lassen sich mitten im
großen Raum setzen. Ganz unten = Automatik.
* **Kein Z-Fighting:** Wand-Außenseite steht 1 cm vor der Plattenkante.
* **Ersetzen:** gleiche Art auf demselben Platz wird ersetzt (Tür in vorhandene
Wand). Dasselbe Teil nochmal wird mit Erklärung abgelehnt.
## Dateien erzeugen
Meshes, GLBs, Kollision und Registry-Fragment kommen aus dem Katalog:
```bash
godot --headless --path . --script res://tools/gen_bauteile.gd -- \
--client ../scopedvr-client --server ../scopedvr-match-server
(cd ../scopedvr-match-server && python3 tools/merge_object_library.py)
```
Danach `library/objects.json` in Client und Editor angleichen (`tools/sync_objects.sh`).
`tests/test_bauen.gd` prüft, dass die Registry zum Katalog passt.
## Alte Maps
Die frühere Sektion `gebaeude` (Bauen-Modus vom 20.10.) wird beim Öffnen in
`bau_*`-Objekte einer Gruppe übernommen (`BauOps.migriere_gebaeude`). Wandhöhe ist
jetzt 3 m statt 2 m — alte Häuser bitte kurz prüfen und neu speichern.

51
docs/server-sektion.md Normal file
View file

@ -0,0 +1,51 @@
# Server-Sektion (Tab „Server“)
Der Editor ist ein Client der Match-Server-Admin-API (`docs/admin-api.md` im
Repo scopedvr-match-server). Damit verwaltet jeder seinen eigenen Server – ohne
Konsole, ohne Tailscale, auf jedem Betriebssystem.
## Einrichten
1. Auf dem Server in der `server.cfg` `[admin] enabled=true` setzen und starten.
Das Token steht danach in der `state_file` des Servers (Standard `admin.cfg`).
2. Editor → Tab **Server** → **➕ Neu**: Name, Adresse, Port (Standard 24580), Token.
„🔌 Verbindung testen“ prüft Erreichbarkeit und Token.
3. **🔌 Verbinden**.
**Sicher erreichen:** Die Admin-API spricht Klartext-HTTP und hört standardmäßig nur
auf localhost. Entweder SSH-Tunnel (`ssh -L 24580:127.0.0.1:24580 benutzer@server`,
im Editor dann Adresse `127.0.0.1`) oder ein Reverse-Proxy mit https (Haken
„Sichere Verbindung“).
## Funktionen
- Mehrere Server speichern; **Token verschlüsselt** (Schlüssel aus Rechner-ID +
Nutzerordner), nie im Klartext in Datei oder Log. Schutz gegen Zufallsleser, nicht
gegen Schadsoftware auf deinem Benutzerkonto.
- **Übersicht:** Name, Map, Modus, Phase, Spieler/Bots, Laufzeit, öffentlich/privat.
- **⬆ Aktuelle Map hochladen:** prüft und signiert die Map im Editor (wie Speichern),
lädt sie hoch, der Server prüft noch einmal. Ungültige Maps werden gar nicht erst
gesendet; 422-Fehler erscheinen als verständliche Liste mit Hilfetexten.
Existiert der Name schon, fragt der Editor, ob ersetzt werden soll. Optional:
direkt in die Rotation aufnehmen.
- **Einstellungen:** Formular direkt aus der Server-Spec; gesendet werden nur
geänderte Werte. Die Antwort zeigt je Wert: sofort / ab nächster Map / nach
Neustart. „↩ Zurücksetzen“ verwirft Änderungen.
- **Spieler:** Kick, Sperren (10 min … dauerhaft), Sperrliste mit „Aufheben“.
- **Match & Maps:** Match neu starten, Map jetzt laden, Rotation per Häkchen,
hochgeladene Maps löschen. Alles Zerstörerische fragt vorher nach.
- **⏻ Server neu starten:** fragt nach, trennt alle Spieler, zeigt „Server startet neu…“
und verbindet sich wieder, sobald der neue Prozess antwortet (bis 120 s). Der Server
beendet sich dafür mit Exit-Code 75; neu starten muss ihn Docker (Restart-Policy),
systemd oder `tools/start_server.*` (`docs/admin-api.md` im Server-Repo).
- **Bot-Anzahl** geht bis 32, die Grenze kommt vom Server. Reicht die Teamgröße nicht
(2 × Teamgröße = Platz für Bots), zeigt das Speichern eine Warnung mit der nötigen Größe.
- **Server-Log** mit Filter.
## Code
`core/server/` (AdminClient, ServerStore, AdminTexte, MapPush),
`core/ui/panels/server_panel.gd`, `SvmapIO.to_signed_text`.
## Tests
`tests/test_server_sektion.gd` (Unit), `tests/run_server_sektion_e2e.sh`
(echter Match-Server + echtes Panel: Verbinden, falsches Token, unerreichbar,
Einstellungen, Push gültig/doppelt/ersetzen/lokal ungültig/422, Rotation,
Map laden/löschen, Restart, Kick, Logs, 20 Bots, Server-Neustart).

View file

@ -5,12 +5,12 @@ of truth** für alle Shortcut-Karten — FINALE Version nach allen drei Karten:
Karte 1/3 (t_c46d31c2): Navigation, Auswahl, Löschen · Karte 2/3 (t_55257792):
Objektmanipulation + Terrain · Karte 3/3 (t_11b5c25b): Datei & Undo,
Werkzeugwechsel, Hilfe, Test. Das Kurzhilfe-Overlay im Editor (Taste **H**)
zeigt dieselbe Tabelle (Quelle: `src/ui/help_text.gd`).
zeigt dieselbe Tabelle (Quelle: `core/ui/help_text.gd`).
Konventionen (alle Karten):
- Tastaturcode-basiert: InputMap-Actions mit physischen `KEY_*`-Konstanten
(`src/editor/shortcut_keys.gd`). Die physische Taste liegt unabhängig vom
(`core/editor/shortcut_keys.gd`). Die physische Taste liegt unabhängig vom
Tastaturlayout gleich — deutsches (QWERTZ) und Windows-Layout verhalten sich
identisch, keine OS-Hardcodes (PLAN.md Plattform-Regel).
- Jede Objekt-Operation = **EIN** ActionHistory-Eintrag (Strg+Z nimmt die
@ -56,7 +56,7 @@ alle, Strg+G gruppieren / Strg+Umschalt+G lösen.
| Eingabe | Wirkung |
| --- | --- |
| **R** | Auswahl 90° drehen (Vierteldrehung; Umschalt+R = −90°). Szene-Objekte drehen um den Auswahl-Mittelpunkt, Bauen-Bauteile um ihren Fußpunkt. Ein Objekt aus einer Gruppe dreht die GANZE Gruppe. Dauerhaft (kein Vorschau-Zustand) |
| **R** | Auswahl 90° drehen (Vierteldrehung; Umschalt+R = −90°). Objekte (auch Bauteile) drehen um den Auswahl-Mittelpunkt. Ein Objekt aus einer Gruppe dreht die GANZE Gruppe. Dauerhaft (kein Vorschau-Zustand) |
| **Strg+R / Strg+Umschalt+R** | Auswahl um X **kippen** (+15° / −15°) — auch im Platzier-Modus (Ghost kippt mit). Karte t_e166e656 |
| **Alt+R / Alt+Umschalt+R** | Auswahl um Z **kippen** (+15° / −15°) — auch im Platzier-Modus. Karte t_e166e656 |
| Mausrad (mit Auswahl) | Feindrehen im 15°-Raster (bleibt wie bisher) |
@ -177,9 +177,9 @@ keinen fokussierten Button auslöst.
| --- | --- |
| **F1** | Werkzeug: Terrain formen |
| **F2** | Werkzeug: Objekte platzieren/auswählen (Standard) |
| **F3** | Werkzeug: Bauen (Häuser) |
| **F3** | Tab „Bauen“ öffnen (Bauteile wählen, dann in die Karte klicken) |
| **F4** | Werkzeug: Spawn-Zonen malen |
| Esc (im Terrain-/Spawn-/Bauen-Werkzeug) | Werkzeug beenden — zurück zum Objekt-Werkzeug |
| Esc (im Terrain-/Spawn-Werkzeug) | Werkzeug beenden — zurück zum Objekt-Werkzeug |
| Esc (beim Greifen) | Greifen abbrechen, alte Positionen zurück |
| Esc (beim Platzieren) | Ghost-Preview abbrechen |
| Esc (Kurzhilfe offen) | Kurzhilfe schließen |

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
{"aabb_max":[0.4,0.25,0.4],"aabb_min":[-0.4,0.0,-0.4],"dreiecke":84,"oid":"apc_cap","quelle_glb":"res://assets/objekte/military_desert/vehicles/apc_cap.glb","vertices":[[-0.2,0.0,-0.35],[0.0,0.08,-0.4],[-0.2,0.08,-0.35],[-0.2,0.0,-0.35],[0.0,0.0,-0.4],[0.0,0.08,-0.4],[0.35,0.0,-0.2],[0.4,0.08,0.0],[0.35,0.08,-0.2],[0.35,0.0,-0.2],[0.4,0.0,0.0],[0.4,0.08,0.0],[0.4,0.0,0.0],[0.35,0.08,0.2],[0.4,0.08,0.0],[0.4,0.0,0.0],[0.35,0.0,0.2],[0.35,0.08,0.2],[0.35,0.0,0.2],[0.2,0.08,0.35],[0.35,0.08,0.2],[0.35,0.0,0.2],[0.2,0.0,0.35],[0.2,0.08,0.35],[0.2,0.0,0.35],[0.0,0.08,0.4],[0.2,0.08,0.35],[0.2,0.0,0.35],[0.0,0.0,0.4],[0.0,0.08,0.4],[0.0,0.0,0.4],[-0.2,0.08,0.35],[0.0,0.08,0.4],[0.0,0.0,0.4],[-0.2,0.0,0.35],[-0.2,0.08,0.35],[-0.2,0.0,0.35],[-0.35,0.08,0.2],[-0.2,0.08,0.35],[-0.2,0.0,0.35],[-0.35,0.0,0.2],[-0.35,0.08,0.2],[-0.35,0.0,0.2],[-0.4,0.08,0.0],[-0.35,0.08,0.2],[-0.35,0.0,0.2],[-0.4,0.0,0.0],[-0.4,0.08,0.0],[-0.4,0.0,0.0],[-0.35,0.08,-0.2],[-0.4,0.08,0.0],[-0.4,0.0,0.0],[-0.35,0.0,-0.2],[-0.35,0.08,-0.2],[-0.35,0.0,-0.2],[-0.2,0.08,-0.35],[-0.35,0.08,-0.2],[-0.35,0.0,-0.2],[-0.2,0.0,-0.35],[-0.2,0.08,-0.35],[0.0,0.0,-0.4],[0.2,0.08,-0.35],[0.0,0.08,-0.4],[0.0,0.0,-0.4],[0.2,0.0,-0.35],[0.2,0.08,-0.35],[0.2,0.0,-0.35],[0.35,0.08,-0.2],[0.2,0.08,-0.35],[0.2,0.0,-0.35],[0.35,0.0,-0.2],[0.35,0.08,-0.2],[0.2,0.08,-0.35],[0.0,0.14,-0.34],[0.0,0.08,-0.4],[0.2,0.08,-0.35],[0.17,0.14,-0.3],[0.0,0.14,-0.34],[0.35,0.08,-0.2],[0.17,0.14,-0.3],[0.2,0.08,-0.35],[0.35,0.08,-0.2],[0.3,0.14,-0.17],[0.17,0.14,-0.3],[0.4,0.08,0.0],[0.3,0.14,-0.17],[0.35,0.08,-0.2],[0.4,0.08,0.0],[0.34,0.14,0.0],[0.3,0.14,-0.17],[0.35,0.08,0.2],[0.34,0.14,0.0],[0.4,0.08,0.0],[0.35,0.08,0.2],[0.3,0.14,0.17],[0.34,0.14,0.0],[0.2,0.08,0.35],[0.3,0.14,0.17],[0.35,0.08,0.2],[0.2,0.08,0.35],[0.17,0.14,0.3],[0.3,0.14,0.17],[0.0,0.08,0.4],[0.17,0.14,0.3],[0.2,0.08,0.35],[0.0,0.08,0.4],[0.0,0.14,0.34],[0.17,0.14,0.3],[-0.2,0.08,0.35],[0.0,0.14,0.34],[0.0,0.08,0.4],[-0.2,0.08,0.35],[-0.17,0.14,0.3],[0.0,0.14,0.34],[-0.35,0.08,0.2],[-0.17,0.14,0.3],[-0.2,0.08,0.35],[-0.35,0.08,0.2],[-0.3,0.14,0.17],[-0.17,0.14,0.3],[-0.4,0.08,0.0],[-0.3,0.14,0.17],[-0.35,0.08,0.2],[-0.4,0.08,0.0],[-0.34,0.14,0.0],[-0.3,0.14,0.17],[-0.35,0.08,-0.2],[-0.34,0.14,0.0],[-0.4,0.08,0.0],[-0.35,0.08,-0.2],[-0.3,0.14,-0.17],[-0.34,0.14,0.0],[-0.2,0.08,-0.35],[-0.3,0.14,-0.17],[-0.35,0.08,-0.2],[-0.2,0.08,-0.35],[-0.17,0.14,-0.3],[-0.3,0.14,-0.17],[0.0,0.08,-0.4],[-0.17,0.14,-0.3],[-0.2,0.08,-0.35],[0.0,0.08,-0.4],[0.0,0.14,-0.34],[-0.17,0.14,-0.3],[0.3,0.14,-0.17],[0.0,0.14,-0.34],[0.17,0.14,-0.3],[0.0,0.14,-0.34],[-0.3,0.14,-0.17],[-0.17,0.14,-0.3],[-0.3,0.14,-0.17],[-0.3,0.14,0.17],[-0.34,0.14,0.0],[-0.3,0.14,0.17],[0.0,0.14,0.34],[-0.17,0.14,0.3],[0.0,0.14,0.34],[0.3,0.14,0.17],[0.17,0.14,0.3],[0.3,0.14,0.17],[0.3,0.14,-0.17],[0.34,0.14,0.0],[0.3,0.14,-0.17],[-0.3,0.14,-0.17],[0.0,0.14,-0.34],[-0.3,0.14,-0.17],[0.0,0.14,0.34],[-0.3,0.14,0.17],[0.0,0.14,0.34],[0.3,0.14,-0.17],[0.3,0.14,0.17],[-0.3,0.14,-0.17],[0.3,0.14,-0.17],[0.0,0.14,0.34],[-0.17,0.02,-0.09],[-0.09,0.25,-0.05],[-0.17,0.25,-0.09],[-0.17,0.02,-0.09],[-0.09,0.02,-0.05],[-0.09,0.25,-0.05],[-0.09,0.02,-0.05],[-0.09,0.25,0.05],[-0.09,0.25,-0.05],[-0.09,0.02,-0.05],[-0.09,0.02,0.05],[-0.09,0.25,0.05],[-0.09,0.02,0.05],[-0.17,0.25,0.09],[-0.09,0.25,0.05],[-0.09,0.02,0.05],[-0.17,0.02,0.09],[-0.17,0.25,0.09],[-0.17,0.02,0.09],[-0.25,0.25,0.05],[-0.17,0.25,0.09],[-0.17,0.02,0.09],[-0.25,0.02,0.05],[-0.25,0.25,0.05],[-0.09,0.25,0.05],[-0.17,0.25,-0.09],[-0.09,0.25,-0.05],[-0.17,0.25,-0.09],[-0.25,0.25,0.05],[-0.25,0.25,-0.05],[-0.25,0.25,0.05],[-0.09,0.25,0.05],[-0.17,0.25,0.09],[-0.17,0.25,-0.09],[-0.09,0.25,0.05],[-0.25,0.25,0.05],[-0.25,0.02,0.05],[-0.25,0.25,-0.05],[-0.25,0.25,0.05],[-0.25,0.02,0.05],[-0.25,0.02,-0.05],[-0.25,0.25,-0.05],[-0.25,0.02,-0.05],[-0.17,0.25,-0.09],[-0.25,0.25,-0.05],[-0.25,0.02,-0.05],[-0.17,0.02,-0.09],[-0.17,0.25,-0.09],[-0.2,0.0,-0.35],[0.2,0.0,-0.35],[0.0,0.0,-0.4],[0.2,0.0,-0.35],[0.4,0.0,0.0],[0.35,0.0,-0.2],[0.4,0.0,0.0],[0.2,0.0,0.35],[0.35,0.0,0.2],[0.2,0.0,0.35],[-0.2,0.0,0.35],[0.0,0.0,0.4],[-0.2,0.0,0.35],[-0.4,0.0,0.0],[-0.35,0.0,0.2],[-0.4,0.0,0.0],[-0.2,0.0,-0.35],[-0.35,0.0,-0.2],[-0.2,0.0,-0.35],[0.4,0.0,0.0],[0.2,0.0,-0.35],[0.4,0.0,0.0],[-0.2,0.0,0.35],[0.2,0.0,0.35],[-0.2,0.0,0.35],[-0.2,0.0,-0.35],[-0.4,0.0,0.0],[0.4,0.0,0.0],[-0.2,0.0,-0.35],[-0.2,0.0,0.35]]}

View file

@ -1 +0,0 @@
{"aabb_max":[0.4,0.25,0.4],"aabb_min":[-0.4,0.0,-0.4],"dreiecke":84,"oid":"apc_cap_1","quelle_glb":"res://assets/objekte/military_desert/vehicles/apc_cap_1.glb","vertices":[[-0.2,0.0,-0.35],[0.2,0.0,-0.35],[0.0,0.0,-0.4],[0.2,0.0,-0.35],[0.4,0.0,0.0],[0.35,0.0,-0.2],[0.4,0.0,0.0],[0.2,0.0,0.35],[0.35,0.0,0.2],[0.2,0.0,0.35],[-0.2,0.0,0.35],[0.0,0.0,0.4],[-0.2,0.0,0.35],[-0.4,0.0,0.0],[-0.35,0.0,0.2],[-0.4,0.0,0.0],[-0.2,0.0,-0.35],[-0.35,0.0,-0.2],[-0.2,0.0,-0.35],[0.4,0.0,0.0],[0.2,0.0,-0.35],[0.4,0.0,0.0],[-0.2,0.0,0.35],[0.2,0.0,0.35],[-0.2,0.0,0.35],[-0.2,0.0,-0.35],[-0.4,0.0,0.0],[0.4,0.0,0.0],[-0.2,0.0,-0.35],[-0.2,0.0,0.35],[-0.2,0.0,-0.35],[0.0,0.08,-0.4],[-0.2,0.08,-0.35],[-0.2,0.0,-0.35],[0.0,0.0,-0.4],[0.0,0.08,-0.4],[0.35,0.0,-0.2],[0.4,0.08,0.0],[0.35,0.08,-0.2],[0.35,0.0,-0.2],[0.4,0.0,0.0],[0.4,0.08,0.0],[0.4,0.0,0.0],[0.35,0.08,0.2],[0.4,0.08,0.0],[0.4,0.0,0.0],[0.35,0.0,0.2],[0.35,0.08,0.2],[0.35,0.0,0.2],[0.2,0.08,0.35],[0.35,0.08,0.2],[0.35,0.0,0.2],[0.2,0.0,0.35],[0.2,0.08,0.35],[0.2,0.0,0.35],[0.0,0.08,0.4],[0.2,0.08,0.35],[0.2,0.0,0.35],[0.0,0.0,0.4],[0.0,0.08,0.4],[0.0,0.0,0.4],[-0.2,0.08,0.35],[0.0,0.08,0.4],[0.0,0.0,0.4],[-0.2,0.0,0.35],[-0.2,0.08,0.35],[-0.2,0.0,0.35],[-0.35,0.08,0.2],[-0.2,0.08,0.35],[-0.2,0.0,0.35],[-0.35,0.0,0.2],[-0.35,0.08,0.2],[-0.35,0.0,0.2],[-0.4,0.08,0.0],[-0.35,0.08,0.2],[-0.35,0.0,0.2],[-0.4,0.0,0.0],[-0.4,0.08,0.0],[-0.4,0.0,0.0],[-0.35,0.08,-0.2],[-0.4,0.08,0.0],[-0.4,0.0,0.0],[-0.35,0.0,-0.2],[-0.35,0.08,-0.2],[-0.35,0.0,-0.2],[-0.2,0.08,-0.35],[-0.35,0.08,-0.2],[-0.35,0.0,-0.2],[-0.2,0.0,-0.35],[-0.2,0.08,-0.35],[0.0,0.0,-0.4],[0.2,0.08,-0.35],[0.0,0.08,-0.4],[0.0,0.0,-0.4],[0.2,0.0,-0.35],[0.2,0.08,-0.35],[0.2,0.0,-0.35],[0.35,0.08,-0.2],[0.2,0.08,-0.35],[0.2,0.0,-0.35],[0.35,0.0,-0.2],[0.35,0.08,-0.2],[0.2,0.08,-0.35],[0.0,0.14,-0.34],[0.0,0.08,-0.4],[0.2,0.08,-0.35],[0.17,0.14,-0.3],[0.0,0.14,-0.34],[0.35,0.08,-0.2],[0.17,0.14,-0.3],[0.2,0.08,-0.35],[0.35,0.08,-0.2],[0.3,0.14,-0.17],[0.17,0.14,-0.3],[0.4,0.08,0.0],[0.3,0.14,-0.17],[0.35,0.08,-0.2],[0.4,0.08,0.0],[0.34,0.14,0.0],[0.3,0.14,-0.17],[0.35,0.08,0.2],[0.34,0.14,0.0],[0.4,0.08,0.0],[0.35,0.08,0.2],[0.3,0.14,0.17],[0.34,0.14,0.0],[0.2,0.08,0.35],[0.3,0.14,0.17],[0.35,0.08,0.2],[0.2,0.08,0.35],[0.17,0.14,0.3],[0.3,0.14,0.17],[0.0,0.08,0.4],[0.17,0.14,0.3],[0.2,0.08,0.35],[0.0,0.08,0.4],[0.0,0.14,0.34],[0.17,0.14,0.3],[-0.2,0.08,0.35],[0.0,0.14,0.34],[0.0,0.08,0.4],[-0.2,0.08,0.35],[-0.17,0.14,0.3],[0.0,0.14,0.34],[-0.35,0.08,0.2],[-0.17,0.14,0.3],[-0.2,0.08,0.35],[-0.35,0.08,0.2],[-0.3,0.14,0.17],[-0.17,0.14,0.3],[-0.4,0.08,0.0],[-0.3,0.14,0.17],[-0.35,0.08,0.2],[-0.4,0.08,0.0],[-0.34,0.14,0.0],[-0.3,0.14,0.17],[-0.35,0.08,-0.2],[-0.34,0.14,0.0],[-0.4,0.08,0.0],[-0.35,0.08,-0.2],[-0.3,0.14,-0.17],[-0.34,0.14,0.0],[-0.2,0.08,-0.35],[-0.3,0.14,-0.17],[-0.35,0.08,-0.2],[-0.2,0.08,-0.35],[-0.17,0.14,-0.3],[-0.3,0.14,-0.17],[0.0,0.08,-0.4],[-0.17,0.14,-0.3],[-0.2,0.08,-0.35],[0.0,0.08,-0.4],[0.0,0.14,-0.34],[-0.17,0.14,-0.3],[0.3,0.14,-0.17],[0.0,0.14,-0.34],[0.17,0.14,-0.3],[0.0,0.14,-0.34],[-0.3,0.14,-0.17],[-0.17,0.14,-0.3],[-0.3,0.14,-0.17],[-0.3,0.14,0.17],[-0.34,0.14,0.0],[-0.3,0.14,0.17],[0.0,0.14,0.34],[-0.17,0.14,0.3],[0.0,0.14,0.34],[0.3,0.14,0.17],[0.17,0.14,0.3],[0.3,0.14,0.17],[0.3,0.14,-0.17],[0.34,0.14,0.0],[0.3,0.14,-0.17],[-0.3,0.14,-0.17],[0.0,0.14,-0.34],[-0.3,0.14,-0.17],[0.0,0.14,0.34],[-0.3,0.14,0.17],[0.0,0.14,0.34],[0.3,0.14,-0.17],[0.3,0.14,0.17],[-0.3,0.14,-0.17],[0.3,0.14,-0.17],[0.0,0.14,0.34],[-0.17,0.02,-0.09],[-0.09,0.25,-0.05],[-0.17,0.25,-0.09],[-0.17,0.02,-0.09],[-0.09,0.02,-0.05],[-0.09,0.25,-0.05],[-0.09,0.02,-0.05],[-0.09,0.25,0.05],[-0.09,0.25,-0.05],[-0.09,0.02,-0.05],[-0.09,0.02,0.05],[-0.09,0.25,0.05],[-0.09,0.02,0.05],[-0.17,0.25,0.1],[-0.09,0.25,0.05],[-0.09,0.02,0.05],[-0.17,0.02,0.1],[-0.17,0.25,0.1],[-0.17,0.02,0.1],[-0.25,0.25,0.05],[-0.17,0.25,0.1],[-0.17,0.02,0.1],[-0.25,0.02,0.05],[-0.25,0.25,0.05],[-0.09,0.25,0.05],[-0.17,0.25,-0.09],[-0.09,0.25,-0.05],[-0.17,0.25,-0.09],[-0.25,0.25,0.05],[-0.25,0.25,-0.05],[-0.25,0.25,0.05],[-0.09,0.25,0.05],[-0.17,0.25,0.1],[-0.17,0.25,-0.09],[-0.09,0.25,0.05],[-0.25,0.25,0.05],[-0.25,0.02,0.05],[-0.25,0.25,-0.05],[-0.25,0.25,0.05],[-0.25,0.02,0.05],[-0.25,0.02,-0.05],[-0.25,0.25,-0.05],[-0.25,0.02,-0.05],[-0.17,0.25,-0.09],[-0.25,0.25,-0.05],[-0.25,0.02,-0.05],[-0.17,0.02,-0.09],[-0.17,0.25,-0.09]]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
{"aabb_max":[1.16,0.77,0.47],"aabb_min":[-1.16,0.0,-0.47],"dreiecke":72,"oid":"barrier_001","quelle_glb":"res://assets/objekte/military_desert/barriers/barrier_001.glb","vertices":[[1.16,0.0,0.47],[1.16,0.19,-0.32],[1.16,0.0,-0.47],[1.16,0.0,0.47],[1.16,0.19,0.32],[1.16,0.19,-0.32],[-1.16,0.19,0.32],[-1.16,0.0,-0.47],[-1.16,0.19,-0.32],[-1.16,0.19,0.32],[-1.16,0.0,0.47],[-1.16,0.0,-0.47],[1.16,0.0,-0.47],[-1.16,0.19,-0.32],[-1.16,0.0,-0.47],[1.16,0.0,-0.47],[1.16,0.19,-0.32],[-1.16,0.19,-0.32],[-1.16,0.0,0.47],[1.16,0.19,0.32],[1.16,0.0,0.47],[-1.16,0.0,0.47],[-1.16,0.19,0.32],[1.16,0.19,0.32],[1.16,0.19,0.32],[1.16,0.31,-0.24],[1.16,0.19,-0.32],[1.16,0.19,0.32],[1.16,0.31,0.24],[1.16,0.31,-0.24],[1.16,0.19,-0.32],[-1.16,0.31,-0.24],[-1.16,0.19,-0.32],[1.16,0.19,-0.32],[1.16,0.31,-0.24],[-1.16,0.31,-0.24],[-1.16,0.19,-0.32],[-1.16,0.31,0.24],[-1.16,0.19,0.32],[-1.16,0.19,-0.32],[-1.16,0.31,-0.24],[-1.16,0.31,0.24],[-1.16,0.19,0.32],[1.16,0.31,0.24],[1.16,0.19,0.32],[-1.16,0.19,0.32],[-1.16,0.31,0.24],[1.16,0.31,0.24],[1.16,0.31,0.24],[1.16,0.48,-0.16],[1.16,0.31,-0.24],[1.16,0.31,0.24],[1.16,0.48,0.16],[1.16,0.48,-0.16],[1.16,0.31,-0.24],[-1.16,0.48,-0.16],[-1.16,0.31,-0.24],[1.16,0.31,-0.24],[1.16,0.48,-0.16],[-1.16,0.48,-0.16],[-1.16,0.31,-0.24],[-1.16,0.48,0.16],[-1.16,0.31,0.24],[-1.16,0.31,-0.24],[-1.16,0.48,-0.16],[-1.16,0.48,0.16],[-1.16,0.31,0.24],[1.16,0.48,0.16],[1.16,0.31,0.24],[-1.16,0.31,0.24],[-1.16,0.48,0.16],[1.16,0.48,0.16],[1.16,0.63,0.12],[1.16,0.77,-0.09],[1.16,0.63,-0.12],[1.16,0.63,0.12],[1.16,0.77,0.09],[1.16,0.77,-0.09],[-1.16,0.63,-0.12],[-1.16,0.77,0.09],[-1.16,0.63,0.12],[-1.16,0.63,-0.12],[-1.16,0.77,-0.09],[-1.16,0.77,0.09],[1.16,0.48,0.16],[1.16,0.63,-0.12],[1.16,0.48,-0.16],[1.16,0.48,0.16],[1.16,0.63,0.12],[1.16,0.63,-0.12],[-1.16,0.48,-0.16],[-1.16,0.63,0.12],[-1.16,0.48,0.16],[-1.16,0.48,-0.16],[-1.16,0.63,-0.12],[-1.16,0.63,0.12],[1.16,0.63,-0.12],[0.7,0.77,-0.09],[0.7,0.63,-0.12],[1.16,0.63,-0.12],[1.16,0.77,-0.09],[0.7,0.77,-0.09],[0.7,0.63,-0.12],[0.23,0.77,-0.09],[0.23,0.63,-0.12],[0.7,0.63,-0.12],[0.7,0.77,-0.09],[0.23,0.77,-0.09],[0.23,0.63,-0.12],[-0.23,0.77,-0.09],[-0.23,0.63,-0.12],[0.23,0.63,-0.12],[0.23,0.77,-0.09],[-0.23,0.77,-0.09],[-0.23,0.63,-0.12],[-0.7,0.77,-0.09],[-0.7,0.63,-0.12],[-0.23,0.63,-0.12],[-0.23,0.77,-0.09],[-0.7,0.77,-0.09],[-0.7,0.63,-0.12],[-1.16,0.77,-0.09],[-1.16,0.63,-0.12],[-0.7,0.63,-0.12],[-0.7,0.77,-0.09],[-1.16,0.77,-0.09],[1.16,0.63,-0.12],[1.16,0.77,-0.09],[1.16,0.63,-0.12],[1.16,0.77,0.09],[1.16,0.63,0.12],[1.16,0.63,0.12],[-1.16,0.77,-0.09],[-1.16,0.63,-0.12],[-1.16,0.63,-0.12],[-1.16,0.63,0.12],[-1.16,0.77,0.09],[-1.16,0.63,0.12],[-0.7,0.77,-0.09],[-1.16,0.77,0.09],[-1.16,0.77,-0.09],[-0.7,0.77,-0.09],[-0.7,0.77,0.09],[-1.16,0.77,0.09],[-0.23,0.77,-0.09],[-0.7,0.77,0.09],[-0.7,0.77,-0.09],[-0.23,0.77,-0.09],[-0.23,0.77,0.09],[-0.7,0.77,0.09],[0.23,0.77,-0.09],[-0.23,0.77,0.09],[-0.23,0.77,-0.09],[0.23,0.77,-0.09],[0.23,0.77,0.09],[-0.23,0.77,0.09],[1.16,0.77,-0.09],[0.7,0.77,0.09],[0.7,0.77,-0.09],[1.16,0.77,-0.09],[1.16,0.77,0.09],[0.7,0.77,0.09],[0.7,0.77,-0.09],[0.23,0.77,0.09],[0.23,0.77,-0.09],[0.7,0.77,-0.09],[0.7,0.77,0.09],[0.23,0.77,0.09],[-0.7,0.77,0.09],[-1.16,0.63,0.12],[-1.16,0.77,0.09],[-0.7,0.77,0.09],[-0.7,0.63,0.12],[-1.16,0.63,0.12],[-0.23,0.77,0.09],[-0.7,0.63,0.12],[-0.7,0.77,0.09],[-0.23,0.77,0.09],[-0.23,0.63,0.12],[-0.7,0.63,0.12],[0.23,0.77,0.09],[-0.23,0.63,0.12],[-0.23,0.77,0.09],[0.23,0.77,0.09],[0.23,0.63,0.12],[-0.23,0.63,0.12],[1.16,0.77,0.09],[0.7,0.63,0.12],[0.7,0.77,0.09],[1.16,0.77,0.09],[1.16,0.63,0.12],[0.7,0.63,0.12],[0.7,0.77,0.09],[0.23,0.63,0.12],[0.23,0.77,0.09],[0.7,0.77,0.09],[0.7,0.63,0.12],[0.23,0.63,0.12],[1.16,0.63,-0.12],[-1.16,0.48,-0.16],[1.16,0.48,-0.16],[1.16,0.63,-0.12],[-1.16,0.63,-0.12],[-1.16,0.48,-0.16],[1.16,0.48,0.16],[-1.16,0.63,0.12],[1.16,0.63,0.12],[1.16,0.48,0.16],[-1.16,0.48,0.16],[-1.16,0.63,0.12],[1.16,0.0,0.47],[-1.16,0.0,-0.47],[-1.16,0.0,0.47],[1.16,0.0,0.47],[1.16,0.0,-0.47],[-1.16,0.0,-0.47]]}
{"aabb_max":[1.16,0.77,0.47],"aabb_min":[-1.16,-0.0,-0.47],"dreiecke":72,"oid":"barrier_001","quelle_glb":"res://assets/objekte/military_desert/sperren/barrier_001.glb","vertices":[[1.16,-0.0,0.47],[1.16,-0.0,-0.47],[1.16,0.19,-0.32],[1.16,-0.0,0.47],[1.16,0.19,-0.32],[1.16,0.19,0.32],[-1.16,0.19,0.32],[-1.16,0.19,-0.32],[-1.16,-0.0,-0.47],[-1.16,0.19,0.32],[-1.16,-0.0,-0.47],[-1.16,-0.0,0.47],[1.16,-0.0,-0.47],[-1.16,-0.0,-0.47],[-1.16,0.19,-0.32],[1.16,-0.0,-0.47],[-1.16,0.19,-0.32],[1.16,0.19,-0.32],[-1.16,-0.0,0.47],[1.16,-0.0,0.47],[1.16,0.19,0.32],[-1.16,-0.0,0.47],[1.16,0.19,0.32],[-1.16,0.19,0.32],[1.16,0.19,0.32],[1.16,0.19,-0.32],[1.16,0.31,-0.24],[1.16,0.19,0.32],[1.16,0.31,-0.24],[1.16,0.31,0.24],[1.16,0.19,-0.32],[-1.16,0.19,-0.32],[-1.16,0.31,-0.24],[1.16,0.19,-0.32],[-1.16,0.31,-0.24],[1.16,0.31,-0.24],[-1.16,0.19,-0.32],[-1.16,0.19,0.32],[-1.16,0.31,0.24],[-1.16,0.19,-0.32],[-1.16,0.31,0.24],[-1.16,0.31,-0.24],[-1.16,0.19,0.32],[1.16,0.19,0.32],[1.16,0.31,0.24],[-1.16,0.19,0.32],[1.16,0.31,0.24],[-1.16,0.31,0.24],[1.16,0.31,0.24],[1.16,0.31,-0.24],[1.16,0.48,-0.16],[1.16,0.31,0.24],[1.16,0.48,-0.16],[1.16,0.48,0.16],[1.16,0.31,-0.24],[-1.16,0.31,-0.24],[-1.16,0.48,-0.16],[1.16,0.31,-0.24],[-1.16,0.48,-0.16],[1.16,0.48,-0.16],[-1.16,0.31,-0.24],[-1.16,0.31,0.24],[-1.16,0.48,0.16],[-1.16,0.31,-0.24],[-1.16,0.48,0.16],[-1.16,0.48,-0.16],[-1.16,0.31,0.24],[1.16,0.31,0.24],[1.16,0.48,0.16],[-1.16,0.31,0.24],[1.16,0.48,0.16],[-1.16,0.48,0.16],[1.16,0.63,0.12],[1.16,0.63,-0.12],[1.16,0.77,-0.09],[1.16,0.63,0.12],[1.16,0.77,-0.09],[1.16,0.77,0.09],[-1.16,0.63,-0.12],[-1.16,0.63,0.12],[-1.16,0.77,0.09],[-1.16,0.63,-0.12],[-1.16,0.77,0.09],[-1.16,0.77,-0.09],[1.16,0.48,0.16],[1.16,0.48,-0.16],[1.16,0.63,-0.12],[1.16,0.48,0.16],[1.16,0.63,-0.12],[1.16,0.63,0.12],[-1.16,0.48,-0.16],[-1.16,0.48,0.16],[-1.16,0.63,0.12],[-1.16,0.48,-0.16],[-1.16,0.63,0.12],[-1.16,0.63,-0.12],[1.16,0.63,-0.12],[0.7,0.63,-0.12],[0.7,0.77,-0.09],[1.16,0.63,-0.12],[0.7,0.77,-0.09],[1.16,0.77,-0.09],[0.7,0.63,-0.12],[0.23,0.63,-0.12],[0.23,0.77,-0.09],[0.7,0.63,-0.12],[0.23,0.77,-0.09],[0.7,0.77,-0.09],[0.23,0.63,-0.12],[-0.23,0.63,-0.12],[-0.23,0.77,-0.09],[0.23,0.63,-0.12],[-0.23,0.77,-0.09],[0.23,0.77,-0.09],[-0.23,0.63,-0.12],[-0.7,0.63,-0.12],[-0.7,0.77,-0.09],[-0.23,0.63,-0.12],[-0.7,0.77,-0.09],[-0.23,0.77,-0.09],[-0.7,0.63,-0.12],[-1.16,0.63,-0.12],[-1.16,0.77,-0.09],[-0.7,0.63,-0.12],[-1.16,0.77,-0.09],[-0.7,0.77,-0.09],[1.16,0.63,-0.12],[1.16,0.63,-0.12],[1.16,0.77,-0.09],[1.16,0.77,0.09],[1.16,0.63,0.12],[1.16,0.63,0.12],[-1.16,0.77,-0.09],[-1.16,0.63,-0.12],[-1.16,0.63,-0.12],[-1.16,0.63,0.12],[-1.16,0.63,0.12],[-1.16,0.77,0.09],[-0.7,0.77,-0.09],[-1.16,0.77,-0.09],[-1.16,0.77,0.09],[-0.7,0.77,-0.09],[-1.16,0.77,0.09],[-0.7,0.77,0.09],[-0.23,0.77,-0.09],[-0.7,0.77,-0.09],[-0.7,0.77,0.09],[-0.23,0.77,-0.09],[-0.7,0.77,0.09],[-0.23,0.77,0.09],[0.23,0.77,-0.09],[-0.23,0.77,-0.09],[-0.23,0.77,0.09],[0.23,0.77,-0.09],[-0.23,0.77,0.09],[0.23,0.77,0.09],[1.16,0.77,-0.09],[0.7,0.77,-0.09],[0.7,0.77,0.09],[1.16,0.77,-0.09],[0.7,0.77,0.09],[1.16,0.77,0.09],[0.7,0.77,-0.09],[0.23,0.77,-0.09],[0.23,0.77,0.09],[0.7,0.77,-0.09],[0.23,0.77,0.09],[0.7,0.77,0.09],[-0.7,0.77,0.09],[-1.16,0.77,0.09],[-1.16,0.63,0.12],[-0.7,0.77,0.09],[-1.16,0.63,0.12],[-0.7,0.63,0.12],[-0.23,0.77,0.09],[-0.7,0.77,0.09],[-0.7,0.63,0.12],[-0.23,0.77,0.09],[-0.7,0.63,0.12],[-0.23,0.63,0.12],[0.23,0.77,0.09],[-0.23,0.77,0.09],[-0.23,0.63,0.12],[0.23,0.77,0.09],[-0.23,0.63,0.12],[0.23,0.63,0.12],[1.16,0.77,0.09],[0.7,0.77,0.09],[0.7,0.63,0.12],[1.16,0.77,0.09],[0.7,0.63,0.12],[1.16,0.63,0.12],[0.7,0.77,0.09],[0.23,0.77,0.09],[0.23,0.63,0.12],[0.7,0.77,0.09],[0.23,0.63,0.12],[0.7,0.63,0.12],[1.16,0.63,-0.12],[1.16,0.48,-0.16],[-1.16,0.48,-0.16],[1.16,0.63,-0.12],[-1.16,0.48,-0.16],[-1.16,0.63,-0.12],[1.16,0.48,0.16],[1.16,0.63,0.12],[-1.16,0.63,0.12],[1.16,0.48,0.16],[-1.16,0.63,0.12],[-1.16,0.48,0.16],[1.16,-0.0,0.47],[-1.16,-0.0,0.47],[-1.16,-0.0,-0.47],[1.16,-0.0,0.47],[-1.16,-0.0,-0.47],[1.16,-0.0,-0.47]]}

View file

@ -1 +1 @@
{"aabb_max":[2.51,0.24,0.47],"aabb_min":[-2.51,0.0,-0.47],"dreiecke":48,"oid":"barrier_002","quelle_glb":"res://assets/objekte/military_desert/barriers/barrier_002.glb","vertices":[[-1.88,0.13,0.47],[-2.51,0.0,0.47],[-2.51,0.13,0.47],[-2.51,0.0,0.47],[2.51,0.13,0.47],[2.51,0.0,0.47],[2.51,0.13,0.47],[-1.88,0.13,0.47],[1.88,0.13,0.47],[-1.88,0.13,0.47],[2.51,0.13,0.47],[-2.51,0.0,0.47],[2.51,0.13,0.47],[1.88,0.24,0.0],[2.51,0.24,0.0],[1.88,0.13,0.47],[1.88,0.24,0.0],[2.51,0.13,0.47],[1.88,0.13,0.47],[1.26,0.24,0.0],[1.88,0.24,0.0],[1.26,0.13,0.47],[1.26,0.24,0.0],[1.88,0.13,0.47],[1.26,0.13,0.47],[0.63,0.24,0.0],[1.26,0.24,0.0],[0.63,0.13,0.47],[0.63,0.24,0.0],[1.26,0.13,0.47],[0.63,0.13,0.47],[0.0,0.24,0.0],[0.63,0.24,0.0],[0.0,0.13,0.47],[0.0,0.24,0.0],[0.63,0.13,0.47],[0.0,0.13,0.47],[-0.63,0.24,0.0],[0.0,0.24,0.0],[-0.63,0.13,0.47],[-0.63,0.24,0.0],[0.0,0.13,0.47],[-0.63,0.13,0.47],[-1.26,0.24,0.0],[-0.63,0.24,0.0],[-2.51,0.13,0.47],[-2.51,0.24,0.0],[-1.88,0.13,0.47],[-1.26,0.13,0.47],[-1.26,0.24,0.0],[-0.63,0.13,0.47],[-1.26,0.13,0.47],[-1.88,0.24,0.0],[-1.26,0.24,0.0],[1.88,0.24,0.0],[1.88,0.13,-0.47],[2.51,0.24,0.0],[1.88,0.24,0.0],[1.26,0.13,-0.47],[1.88,0.13,-0.47],[1.26,0.24,0.0],[1.26,0.13,-0.47],[1.88,0.24,0.0],[1.26,0.24,0.0],[0.63,0.13,-0.47],[1.26,0.13,-0.47],[0.63,0.24,0.0],[0.63,0.13,-0.47],[1.26,0.24,0.0],[0.63,0.24,0.0],[0.0,0.13,-0.47],[0.63,0.13,-0.47],[0.0,0.24,0.0],[0.0,0.13,-0.47],[0.63,0.24,0.0],[0.0,0.24,0.0],[-0.63,0.13,-0.47],[0.0,0.13,-0.47],[-0.63,0.24,0.0],[-0.63,0.13,-0.47],[0.0,0.24,0.0],[-0.63,0.24,0.0],[-1.26,0.13,-0.47],[-0.63,0.13,-0.47],[-1.26,0.24,0.0],[-1.26,0.13,-0.47],[-0.63,0.24,0.0],[-1.26,0.24,0.0],[-1.88,0.13,-0.47],[-1.26,0.13,-0.47],[-2.51,0.24,0.0],[-2.51,0.13,-0.47],[-1.88,0.24,0.0],[-1.88,0.24,0.0],[-1.88,0.13,-0.47],[-1.26,0.24,0.0],[-1.88,0.24,0.0],[-2.51,0.13,-0.47],[-1.88,0.13,-0.47],[2.51,0.13,-0.47],[-2.51,0.0,-0.47],[2.51,0.0,-0.47],[-2.51,0.0,-0.47],[-1.88,0.13,-0.47],[-2.51,0.13,-0.47],[-1.88,0.13,-0.47],[2.51,0.13,-0.47],[1.88,0.13,-0.47],[-2.51,0.0,-0.47],[2.51,0.13,-0.47],[-1.88,0.13,-0.47],[-2.51,0.24,0.0],[-1.26,0.13,0.47],[-1.88,0.13,0.47],[-2.51,0.24,0.0],[-1.88,0.24,0.0],[-1.26,0.13,0.47],[1.88,0.13,-0.47],[2.51,0.13,-0.47],[2.51,0.24,0.0],[2.51,0.0,0.47],[2.51,0.13,-0.47],[2.51,0.0,-0.47],[2.51,0.0,0.47],[2.51,0.13,0.47],[2.51,0.13,-0.47],[2.51,0.24,0.0],[2.51,0.13,-0.47],[2.51,0.13,0.47],[-2.51,0.13,0.47],[-2.51,0.0,-0.47],[-2.51,0.13,-0.47],[-2.51,0.13,0.47],[-2.51,0.0,0.47],[-2.51,0.0,-0.47],[-2.51,0.24,0.0],[-2.51,0.13,0.47],[-2.51,0.13,-0.47],[-2.51,0.0,0.47],[2.51,0.0,-0.47],[-2.51,0.0,-0.47],[-2.51,0.0,0.47],[2.51,0.0,0.47],[2.51,0.0,-0.47]]}
{"aabb_max":[2.51,0.24,0.47],"aabb_min":[-2.51,0.0,-0.47],"dreiecke":48,"oid":"barrier_002","quelle_glb":"res://assets/objekte/military_desert/sperren/barrier_002.glb","vertices":[[-1.88,0.13,0.47],[-2.51,0.13,0.47],[-2.51,-0.0,0.47],[-2.51,-0.0,0.47],[2.51,0.0,0.47],[2.51,0.13,0.47],[2.51,0.13,0.47],[1.88,0.13,0.47],[-1.88,0.13,0.47],[-1.88,0.13,0.47],[-2.51,-0.0,0.47],[2.51,0.13,0.47],[2.51,0.13,0.47],[2.51,0.24,0.0],[1.88,0.24,0.0],[1.88,0.13,0.47],[2.51,0.13,0.47],[1.88,0.24,0.0],[1.88,0.13,0.47],[1.88,0.24,0.0],[1.26,0.24,0.0],[1.26,0.13,0.47],[1.88,0.13,0.47],[1.26,0.24,0.0],[1.26,0.13,0.47],[1.26,0.24,0.0],[0.63,0.24,0.0],[0.63,0.13,0.47],[1.26,0.13,0.47],[0.63,0.24,0.0],[0.63,0.13,0.47],[0.63,0.24,0.0],[-0.0,0.24,0.0],[-0.0,0.13,0.47],[0.63,0.13,0.47],[-0.0,0.24,0.0],[-0.0,0.13,0.47],[-0.0,0.24,0.0],[-0.63,0.24,0.0],[-0.63,0.13,0.47],[-0.0,0.13,0.47],[-0.63,0.24,0.0],[-0.63,0.13,0.47],[-0.63,0.24,0.0],[-1.26,0.24,0.0],[-2.51,0.13,0.47],[-1.88,0.13,0.47],[-2.51,0.24,-0.0],[-1.26,0.13,0.47],[-0.63,0.13,0.47],[-1.26,0.24,0.0],[-1.26,0.13,0.47],[-1.26,0.24,0.0],[-1.88,0.24,0.0],[1.88,0.24,0.0],[2.51,0.24,0.0],[1.88,0.13,-0.47],[1.88,0.24,0.0],[1.88,0.13,-0.47],[1.26,0.13,-0.47],[1.26,0.24,0.0],[1.88,0.24,0.0],[1.26,0.13,-0.47],[1.26,0.24,0.0],[1.26,0.13,-0.47],[0.63,0.13,-0.47],[0.63,0.24,0.0],[1.26,0.24,0.0],[0.63,0.13,-0.47],[0.63,0.24,0.0],[0.63,0.13,-0.47],[-0.0,0.13,-0.47],[-0.0,0.24,0.0],[0.63,0.24,0.0],[-0.0,0.13,-0.47],[-0.0,0.24,0.0],[-0.0,0.13,-0.47],[-0.63,0.13,-0.47],[-0.63,0.24,0.0],[-0.0,0.24,0.0],[-0.63,0.13,-0.47],[-0.63,0.24,0.0],[-0.63,0.13,-0.47],[-1.26,0.13,-0.47],[-1.26,0.24,0.0],[-0.63,0.24,0.0],[-1.26,0.13,-0.47],[-1.26,0.24,0.0],[-1.26,0.13,-0.47],[-1.88,0.13,-0.47],[-2.51,0.24,-0.0],[-1.88,0.24,0.0],[-2.51,0.13,-0.47],[-1.88,0.24,0.0],[-1.26,0.24,0.0],[-1.88,0.13,-0.47],[-1.88,0.24,0.0],[-1.88,0.13,-0.47],[-2.51,0.13,-0.47],[2.51,0.13,-0.47],[2.51,0.0,-0.47],[-2.51,-0.0,-0.47],[-2.51,-0.0,-0.47],[-2.51,0.13,-0.47],[-1.88,0.13,-0.47],[-1.88,0.13,-0.47],[1.88,0.13,-0.47],[2.51,0.13,-0.47],[-2.51,-0.0,-0.47],[-1.88,0.13,-0.47],[2.51,0.13,-0.47],[-2.51,0.24,-0.0],[-1.88,0.13,0.47],[-1.26,0.13,0.47],[-2.51,0.24,-0.0],[-1.26,0.13,0.47],[-1.88,0.24,0.0],[1.88,0.13,-0.47],[2.51,0.24,0.0],[2.51,0.13,-0.47],[2.51,0.0,0.47],[2.51,0.0,-0.47],[2.51,0.13,-0.47],[2.51,0.0,0.47],[2.51,0.13,-0.47],[2.51,0.13,0.47],[2.51,0.24,0.0],[2.51,0.13,0.47],[2.51,0.13,-0.47],[-2.51,0.13,0.47],[-2.51,0.13,-0.47],[-2.51,-0.0,-0.47],[-2.51,0.13,0.47],[-2.51,-0.0,-0.47],[-2.51,-0.0,0.47],[-2.51,0.24,-0.0],[-2.51,0.13,-0.47],[-2.51,0.13,0.47],[-2.51,-0.0,0.47],[-2.51,-0.0,-0.47],[2.51,0.0,-0.47],[-2.51,-0.0,0.47],[2.51,0.0,-0.47],[2.51,0.0,0.47]]}

View file

@ -1 +1 @@
{"aabb_max":[2.19,0.97,0.21],"aabb_min":[-2.18,0.0,-0.21],"dreiecke":80,"oid":"barrier_003","quelle_glb":"res://assets/objekte/military_desert/barriers/barrier_003.glb","vertices":[[-2.01,0.0,-0.21],[-1.93,0.36,0.14],[-2.01,0.0,0.21],[-2.01,0.0,-0.21],[-1.93,0.36,-0.14],[-1.93,0.36,0.14],[-1.93,0.97,-0.14],[-1.66,0.97,0.14],[-1.93,0.97,0.14],[-1.93,0.97,-0.14],[-1.66,0.97,-0.14],[-1.66,0.97,0.14],[-1.66,0.36,-0.14],[-1.58,0.0,0.21],[-1.66,0.36,0.14],[-1.66,0.36,-0.14],[-1.58,0.0,-0.21],[-1.58,0.0,0.21],[-2.01,0.0,0.21],[-1.66,0.36,0.14],[-1.58,0.0,0.21],[-2.01,0.0,0.21],[-1.93,0.36,0.14],[-1.66,0.36,0.14],[-1.58,0.0,-0.21],[-1.93,0.36,-0.14],[-2.01,0.0,-0.21],[-1.58,0.0,-0.21],[-1.66,0.36,-0.14],[-1.93,0.36,-0.14],[-1.93,0.36,-0.14],[-1.93,0.97,0.14],[-1.93,0.36,0.14],[-1.93,0.36,-0.14],[-1.93,0.97,-0.14],[-1.93,0.97,0.14],[-1.93,0.36,0.14],[-1.66,0.97,0.14],[-1.66,0.36,0.14],[-1.93,0.36,0.14],[-1.93,0.97,0.14],[-1.66,0.97,0.14],[-1.66,0.36,0.14],[-1.66,0.97,-0.14],[-1.66,0.36,-0.14],[-1.66,0.36,0.14],[-1.66,0.97,0.14],[-1.66,0.97,-0.14],[-1.66,0.36,-0.14],[-1.93,0.97,-0.14],[-1.93,0.36,-0.14],[-1.66,0.36,-0.14],[-1.66,0.97,-0.14],[-1.93,0.97,-0.14],[2.19,0.91,-0.02],[2.19,0.8,0.02],[2.19,0.91,0.02],[2.19,0.91,-0.02],[2.19,0.8,-0.02],[2.19,0.8,0.02],[-0.41,0.91,-0.02],[0.12,0.91,0.02],[-0.41,0.91,0.02],[-0.41,0.91,-0.02],[0.12,0.91,-0.02],[0.12,0.91,0.02],[-0.41,0.91,0.02],[0.22,0.8,0.02],[-0.32,0.8,0.02],[-0.41,0.91,0.02],[0.12,0.91,0.02],[0.22,0.8,0.02],[-0.32,0.8,0.02],[0.22,0.8,-0.02],[-0.32,0.8,-0.02],[-0.32,0.8,0.02],[0.22,0.8,0.02],[0.22,0.8,-0.02],[-0.32,0.8,-0.02],[0.12,0.91,-0.02],[-0.41,0.91,-0.02],[-0.32,0.8,-0.02],[0.22,0.8,-0.02],[0.12,0.91,-0.02],[-2.18,0.91,-0.02],[-2.18,0.67,0.02],[-2.18,0.67,-0.02],[-2.18,0.91,-0.02],[-2.18,0.91,0.02],[-2.18,0.67,0.02],[-0.41,0.91,-0.02],[-1.33,0.67,-0.02],[-0.32,0.8,-0.02],[-0.41,0.91,-0.02],[-1.33,0.91,-0.02],[-1.33,0.67,-0.02],[-0.32,0.8,-0.02],[-1.33,0.67,0.02],[-0.32,0.8,0.02],[-0.32,0.8,-0.02],[-1.33,0.67,-0.02],[-1.33,0.67,0.02],[-0.32,0.8,0.02],[-1.33,0.91,0.02],[-0.41,0.91,0.02],[-0.32,0.8,0.02],[-1.33,0.67,0.02],[-1.33,0.91,0.02],[-0.41,0.91,0.02],[-1.33,0.91,-0.02],[-0.41,0.91,-0.02],[-0.41,0.91,0.02],[-1.33,0.91,0.02],[-1.33,0.91,-0.02],[-1.33,0.91,-0.02],[-2.18,0.67,-0.02],[-1.33,0.67,-0.02],[-1.33,0.91,-0.02],[-2.18,0.91,-0.02],[-2.18,0.67,-0.02],[-1.33,0.67,-0.02],[-2.18,0.67,0.02],[-1.33,0.67,0.02],[-1.33,0.67,-0.02],[-2.18,0.67,-0.02],[-2.18,0.67,0.02],[-1.33,0.67,0.02],[-2.18,0.91,0.02],[-1.33,0.91,0.02],[-1.33,0.67,0.02],[-2.18,0.67,0.02],[-2.18,0.91,0.02],[-1.33,0.91,0.02],[-2.18,0.91,-0.02],[-1.33,0.91,-0.02],[-1.33,0.91,0.02],[-2.18,0.91,0.02],[-2.18,0.91,-0.02],[0.12,0.91,-0.02],[0.71,0.91,0.02],[0.12,0.91,0.02],[0.12,0.91,-0.02],[0.71,0.91,-0.02],[0.71,0.91,0.02],[0.12,0.91,0.02],[0.8,0.8,0.02],[0.22,0.8,0.02],[0.12,0.91,0.02],[0.71,0.91,0.02],[0.8,0.8,0.02],[0.22,0.8,0.02],[0.8,0.8,-0.02],[0.22,0.8,-0.02],[0.22,0.8,0.02],[0.8,0.8,0.02],[0.8,0.8,-0.02],[0.22,0.8,-0.02],[0.71,0.91,-0.02],[0.12,0.91,-0.02],[0.22,0.8,-0.02],[0.8,0.8,-0.02],[0.71,0.91,-0.02],[0.71,0.91,-0.02],[1.24,0.91,0.02],[0.71,0.91,0.02],[0.71,0.91,-0.02],[1.24,0.91,-0.02],[1.24,0.91,0.02],[0.71,0.91,0.02],[1.33,0.8,0.02],[0.8,0.8,0.02],[0.71,0.91,0.02],[1.24,0.91,0.02],[1.33,0.8,0.02],[0.8,0.8,0.02],[1.33,0.8,-0.02],[0.8,0.8,-0.02],[0.8,0.8,0.02],[1.33,0.8,0.02],[1.33,0.8,-0.02],[0.8,0.8,-0.02],[1.24,0.91,-0.02],[0.71,0.91,-0.02],[0.8,0.8,-0.02],[1.33,0.8,-0.02],[1.24,0.91,-0.02],[1.24,0.91,-0.02],[1.75,0.91,0.02],[1.24,0.91,0.02],[1.24,0.91,-0.02],[1.75,0.91,-0.02],[1.75,0.91,0.02],[1.24,0.91,0.02],[1.85,0.8,0.02],[1.33,0.8,0.02],[1.24,0.91,0.02],[1.75,0.91,0.02],[1.85,0.8,0.02],[1.33,0.8,0.02],[1.85,0.8,-0.02],[1.33,0.8,-0.02],[1.33,0.8,0.02],[1.85,0.8,0.02],[1.85,0.8,-0.02],[1.33,0.8,-0.02],[1.75,0.91,-0.02],[1.24,0.91,-0.02],[1.33,0.8,-0.02],[1.85,0.8,-0.02],[1.75,0.91,-0.02],[1.75,0.91,-0.02],[2.19,0.91,0.02],[1.75,0.91,0.02],[1.75,0.91,-0.02],[2.19,0.91,-0.02],[2.19,0.91,0.02],[1.75,0.91,0.02],[2.19,0.8,0.02],[1.85,0.8,0.02],[1.75,0.91,0.02],[2.19,0.91,0.02],[2.19,0.8,0.02],[1.85,0.8,0.02],[2.19,0.8,-0.02],[1.85,0.8,-0.02],[1.85,0.8,0.02],[2.19,0.8,0.02],[2.19,0.8,-0.02],[1.85,0.8,-0.02],[2.19,0.91,-0.02],[1.75,0.91,-0.02],[1.85,0.8,-0.02],[2.19,0.8,-0.02],[2.19,0.91,-0.02],[-2.01,0.0,-0.21],[-1.58,0.0,0.21],[-1.58,0.0,-0.21],[-2.01,0.0,-0.21],[-2.01,0.0,0.21],[-1.58,0.0,0.21]]}
{"aabb_max":[2.19,0.97,0.21],"aabb_min":[-2.18,-0.0,-0.21],"dreiecke":80,"oid":"barrier_003","quelle_glb":"res://assets/objekte/military_desert/sperren/barrier_003.glb","vertices":[[-2.01,-0.0,-0.21],[-2.01,-0.0,0.21],[-1.93,0.36,0.14],[-2.01,-0.0,-0.21],[-1.93,0.36,0.14],[-1.93,0.36,-0.14],[-1.93,0.97,-0.14],[-1.93,0.97,0.14],[-1.66,0.97,0.14],[-1.93,0.97,-0.14],[-1.66,0.97,0.14],[-1.66,0.97,-0.14],[-1.66,0.36,-0.14],[-1.66,0.36,0.14],[-1.58,-0.0,0.21],[-1.66,0.36,-0.14],[-1.58,-0.0,0.21],[-1.58,-0.0,-0.21],[-2.01,-0.0,0.21],[-1.58,-0.0,0.21],[-1.66,0.36,0.14],[-2.01,-0.0,0.21],[-1.66,0.36,0.14],[-1.93,0.36,0.14],[-1.58,-0.0,-0.21],[-2.01,-0.0,-0.21],[-1.93,0.36,-0.14],[-1.58,-0.0,-0.21],[-1.93,0.36,-0.14],[-1.66,0.36,-0.14],[-1.93,0.36,-0.14],[-1.93,0.36,0.14],[-1.93,0.97,0.14],[-1.93,0.36,-0.14],[-1.93,0.97,0.14],[-1.93,0.97,-0.14],[-1.93,0.36,0.14],[-1.66,0.36,0.14],[-1.66,0.97,0.14],[-1.93,0.36,0.14],[-1.66,0.97,0.14],[-1.93,0.97,0.14],[-1.66,0.36,0.14],[-1.66,0.36,-0.14],[-1.66,0.97,-0.14],[-1.66,0.36,0.14],[-1.66,0.97,-0.14],[-1.66,0.97,0.14],[-1.66,0.36,-0.14],[-1.93,0.36,-0.14],[-1.93,0.97,-0.14],[-1.66,0.36,-0.14],[-1.93,0.97,-0.14],[-1.66,0.97,-0.14],[2.19,0.91,-0.02],[2.19,0.91,0.02],[2.19,0.8,0.02],[2.19,0.91,-0.02],[2.19,0.8,0.02],[2.19,0.8,-0.02],[-0.41,0.91,-0.02],[-0.41,0.91,0.02],[0.12,0.91,0.02],[-0.41,0.91,-0.02],[0.12,0.91,0.02],[0.12,0.91,-0.02],[-0.41,0.91,0.02],[-0.32,0.8,0.02],[0.22,0.8,0.02],[-0.41,0.91,0.02],[0.22,0.8,0.02],[0.12,0.91,0.02],[-0.32,0.8,0.02],[-0.32,0.8,-0.02],[0.22,0.8,-0.02],[-0.32,0.8,0.02],[0.22,0.8,-0.02],[0.22,0.8,0.02],[-0.32,0.8,-0.02],[-0.41,0.91,-0.02],[0.12,0.91,-0.02],[-0.32,0.8,-0.02],[0.12,0.91,-0.02],[0.22,0.8,-0.02],[-2.18,0.91,-0.02],[-2.18,0.67,-0.02],[-2.18,0.67,0.02],[-2.18,0.91,-0.02],[-2.18,0.67,0.02],[-2.18,0.91,0.02],[-0.41,0.91,-0.02],[-0.32,0.8,-0.02],[-1.33,0.67,-0.02],[-0.41,0.91,-0.02],[-1.33,0.67,-0.02],[-1.33,0.91,-0.02],[-0.32,0.8,-0.02],[-0.32,0.8,0.02],[-1.33,0.67,0.02],[-0.32,0.8,-0.02],[-1.33,0.67,0.02],[-1.33,0.67,-0.02],[-0.32,0.8,0.02],[-0.41,0.91,0.02],[-1.33,0.91,0.02],[-0.32,0.8,0.02],[-1.33,0.91,0.02],[-1.33,0.67,0.02],[-0.41,0.91,0.02],[-0.41,0.91,-0.02],[-1.33,0.91,-0.02],[-0.41,0.91,0.02],[-1.33,0.91,-0.02],[-1.33,0.91,0.02],[-1.33,0.91,-0.02],[-1.33,0.67,-0.02],[-2.18,0.67,-0.02],[-1.33,0.91,-0.02],[-2.18,0.67,-0.02],[-2.18,0.91,-0.02],[-1.33,0.67,-0.02],[-1.33,0.67,0.02],[-2.18,0.67,0.02],[-1.33,0.67,-0.02],[-2.18,0.67,0.02],[-2.18,0.67,-0.02],[-1.33,0.67,0.02],[-1.33,0.91,0.02],[-2.18,0.91,0.02],[-1.33,0.67,0.02],[-2.18,0.91,0.02],[-2.18,0.67,0.02],[-1.33,0.91,0.02],[-1.33,0.91,-0.02],[-2.18,0.91,-0.02],[-1.33,0.91,0.02],[-2.18,0.91,-0.02],[-2.18,0.91,0.02],[0.12,0.91,-0.02],[0.12,0.91,0.02],[0.71,0.91,0.02],[0.12,0.91,-0.02],[0.71,0.91,0.02],[0.71,0.91,-0.02],[0.12,0.91,0.02],[0.22,0.8,0.02],[0.8,0.8,0.02],[0.12,0.91,0.02],[0.8,0.8,0.02],[0.71,0.91,0.02],[0.22,0.8,0.02],[0.22,0.8,-0.02],[0.8,0.8,-0.02],[0.22,0.8,0.02],[0.8,0.8,-0.02],[0.8,0.8,0.02],[0.22,0.8,-0.02],[0.12,0.91,-0.02],[0.71,0.91,-0.02],[0.22,0.8,-0.02],[0.71,0.91,-0.02],[0.8,0.8,-0.02],[0.71,0.91,-0.02],[0.71,0.91,0.02],[1.24,0.91,0.02],[0.71,0.91,-0.02],[1.24,0.91,0.02],[1.24,0.91,-0.02],[0.71,0.91,0.02],[0.8,0.8,0.02],[1.33,0.8,0.02],[0.71,0.91,0.02],[1.33,0.8,0.02],[1.24,0.91,0.02],[0.8,0.8,0.02],[0.8,0.8,-0.02],[1.33,0.8,-0.02],[0.8,0.8,0.02],[1.33,0.8,-0.02],[1.33,0.8,0.02],[0.8,0.8,-0.02],[0.71,0.91,-0.02],[1.24,0.91,-0.02],[0.8,0.8,-0.02],[1.24,0.91,-0.02],[1.33,0.8,-0.02],[1.24,0.91,-0.02],[1.24,0.91,0.02],[1.75,0.91,0.02],[1.24,0.91,-0.02],[1.75,0.91,0.02],[1.75,0.91,-0.02],[1.24,0.91,0.02],[1.33,0.8,0.02],[1.85,0.8,0.02],[1.24,0.91,0.02],[1.85,0.8,0.02],[1.75,0.91,0.02],[1.33,0.8,0.02],[1.33,0.8,-0.02],[1.85,0.8,-0.02],[1.33,0.8,0.02],[1.85,0.8,-0.02],[1.85,0.8,0.02],[1.33,0.8,-0.02],[1.24,0.91,-0.02],[1.75,0.91,-0.02],[1.33,0.8,-0.02],[1.75,0.91,-0.02],[1.85,0.8,-0.02],[1.75,0.91,-0.02],[1.75,0.91,0.02],[2.19,0.91,0.02],[1.75,0.91,-0.02],[2.19,0.91,0.02],[2.19,0.91,-0.02],[1.75,0.91,0.02],[1.85,0.8,0.02],[2.19,0.8,0.02],[1.75,0.91,0.02],[2.19,0.8,0.02],[2.19,0.91,0.02],[1.85,0.8,0.02],[1.85,0.8,-0.02],[2.19,0.8,-0.02],[1.85,0.8,0.02],[2.19,0.8,-0.02],[2.19,0.8,0.02],[1.85,0.8,-0.02],[1.75,0.91,-0.02],[2.19,0.91,-0.02],[1.85,0.8,-0.02],[2.19,0.91,-0.02],[2.19,0.8,-0.02],[-2.01,-0.0,-0.21],[-1.58,-0.0,-0.21],[-1.58,-0.0,0.21],[-2.01,-0.0,-0.21],[-1.58,-0.0,0.21],[-2.01,-0.0,0.21]]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
{"aabb_max":[0.45,0.29,0.22],"aabb_min":[-0.45,0.0,-0.22],"dreiecke":60,"oid":"barrier_008","quelle_glb":"res://assets/objekte/military_desert/barriers/barrier_008.glb","vertices":[[0.01,0.29,-0.17],[0.39,0.19,-0.22],[0.37,0.28,-0.17],[0.01,0.29,-0.17],[0.01,0.19,-0.22],[0.39,0.19,-0.22],[0.37,0.28,-0.17],[0.39,0.19,-0.22],[0.44,0.18,-0.14],[0.37,0.28,-0.17],[0.42,0.18,0.14],[0.36,0.28,0.16],[0.37,0.28,-0.17],[0.44,0.18,-0.14],[0.42,0.18,0.14],[0.01,0.29,-0.17],[0.36,0.28,0.16],[0.01,0.29,0.17],[0.01,0.29,-0.17],[0.37,0.28,-0.17],[0.36,0.28,0.16],[0.36,0.28,0.16],[0.42,0.18,0.14],[0.36,0.18,0.21],[0.36,0.28,0.16],[0.01,0.19,0.22],[0.01,0.29,0.17],[0.36,0.28,0.16],[0.36,0.18,0.21],[0.01,0.19,0.22],[-0.37,0.29,-0.17],[0.01,0.29,0.17],[-0.37,0.29,0.16],[-0.37,0.29,-0.17],[0.01,0.29,-0.17],[0.01,0.29,0.17],[0.01,0.29,0.17],[-0.35,0.18,0.2],[-0.37,0.29,0.16],[0.01,0.29,0.17],[0.01,0.19,0.22],[-0.35,0.18,0.2],[0.01,0.19,0.22],[0.35,0.08,0.21],[0.0,0.07,0.22],[0.01,0.19,0.22],[0.36,0.18,0.21],[0.35,0.08,0.21],[-0.35,0.18,0.2],[0.0,0.07,0.22],[-0.36,0.08,0.2],[-0.35,0.18,0.2],[0.01,0.19,0.22],[0.0,0.07,0.22],[-0.36,0.01,0.14],[0.0,0.07,0.22],[0.0,0.0,0.15],[-0.36,0.01,0.14],[-0.36,0.08,0.2],[0.0,0.07,0.22],[0.0,0.0,0.15],[0.35,0.08,0.21],[0.35,0.01,0.14],[0.0,0.0,0.15],[0.0,0.07,0.22],[0.35,0.08,0.21],[0.0,0.0,0.15],[0.38,0.0,-0.15],[0.0,0.01,-0.14],[0.0,0.0,0.15],[0.35,0.01,0.14],[0.38,0.0,-0.15],[-0.36,0.01,0.14],[0.0,0.01,-0.14],[-0.38,0.0,-0.15],[-0.36,0.01,0.14],[0.0,0.0,0.15],[0.0,0.01,-0.14],[0.0,0.01,-0.14],[-0.36,0.08,-0.21],[-0.38,0.0,-0.15],[0.0,0.01,-0.14],[0.0,0.08,-0.21],[-0.36,0.08,-0.21],[0.38,0.0,-0.15],[0.0,0.08,-0.21],[0.0,0.01,-0.14],[0.38,0.0,-0.15],[0.38,0.07,-0.22],[0.0,0.08,-0.21],[0.39,0.19,-0.22],[0.0,0.08,-0.21],[0.38,0.07,-0.22],[0.39,0.19,-0.22],[0.01,0.19,-0.22],[0.0,0.08,-0.21],[0.01,0.19,-0.22],[-0.36,0.08,-0.21],[0.0,0.08,-0.21],[0.01,0.19,-0.22],[-0.35,0.18,-0.21],[-0.36,0.08,-0.21],[-0.37,0.29,-0.17],[0.01,0.19,-0.22],[0.01,0.29,-0.17],[-0.37,0.29,-0.17],[-0.35,0.18,-0.21],[0.01,0.19,-0.22],[-0.37,0.29,-0.17],[-0.42,0.18,-0.15],[-0.35,0.18,-0.21],[-0.45,0.07,-0.15],[-0.35,0.18,-0.21],[-0.42,0.18,-0.15],[-0.45,0.07,-0.15],[-0.36,0.08,-0.21],[-0.35,0.18,-0.21],[-0.37,0.29,0.16],[-0.42,0.18,-0.15],[-0.37,0.29,-0.17],[-0.37,0.29,0.16],[-0.45,0.19,0.15],[-0.42,0.18,-0.15],[-0.42,0.18,-0.15],[-0.45,0.07,0.15],[-0.45,0.07,-0.15],[-0.42,0.18,-0.15],[-0.45,0.19,0.15],[-0.45,0.07,0.15],[-0.37,0.29,0.16],[-0.35,0.18,0.2],[-0.45,0.19,0.15],[-0.36,0.08,0.2],[-0.45,0.19,0.15],[-0.35,0.18,0.2],[-0.36,0.08,0.2],[-0.45,0.07,0.15],[-0.45,0.19,0.15],[-0.38,0.0,-0.15],[-0.45,0.07,0.15],[-0.36,0.01,0.14],[-0.38,0.0,-0.15],[-0.45,0.07,-0.15],[-0.45,0.07,0.15],[-0.36,0.01,0.14],[-0.45,0.07,0.15],[-0.36,0.08,0.2],[-0.38,0.0,-0.15],[-0.36,0.08,-0.21],[-0.45,0.07,-0.15],[0.44,0.18,-0.14],[0.38,0.07,-0.22],[0.45,0.07,-0.15],[0.44,0.18,-0.14],[0.39,0.19,-0.22],[0.38,0.07,-0.22],[0.45,0.07,-0.15],[0.38,0.07,-0.22],[0.38,0.0,-0.15],[0.35,0.01,0.14],[0.45,0.07,-0.15],[0.38,0.0,-0.15],[0.35,0.01,0.14],[0.42,0.08,0.14],[0.45,0.07,-0.15],[0.42,0.18,0.14],[0.45,0.07,-0.15],[0.42,0.08,0.14],[0.42,0.18,0.14],[0.44,0.18,-0.14],[0.45,0.07,-0.15],[0.35,0.01,0.14],[0.35,0.08,0.21],[0.42,0.08,0.14],[0.42,0.08,0.14],[0.36,0.18,0.21],[0.42,0.18,0.14],[0.42,0.08,0.14],[0.35,0.08,0.21],[0.36,0.18,0.21]]}
{"aabb_max":[0.45,0.29,0.22],"aabb_min":[-0.45,0.0,-0.22],"dreiecke":60,"oid":"barrier_008","quelle_glb":"res://assets/objekte/military_desert/sperren/barrier_008.glb","vertices":[[0.01,0.29,-0.17],[0.37,0.28,-0.17],[0.39,0.19,-0.22],[0.01,0.29,-0.17],[0.39,0.19,-0.22],[0.01,0.19,-0.22],[0.37,0.28,-0.17],[0.44,0.18,-0.14],[0.39,0.19,-0.22],[0.37,0.28,-0.17],[0.36,0.28,0.16],[0.42,0.18,0.14],[0.37,0.28,-0.17],[0.42,0.18,0.14],[0.44,0.18,-0.14],[0.01,0.29,-0.17],[0.01,0.29,0.17],[0.36,0.28,0.16],[0.01,0.29,-0.17],[0.36,0.28,0.16],[0.37,0.28,-0.17],[0.36,0.28,0.16],[0.36,0.18,0.21],[0.42,0.18,0.14],[0.36,0.28,0.16],[0.01,0.29,0.17],[0.01,0.19,0.22],[0.36,0.28,0.16],[0.01,0.19,0.22],[0.36,0.18,0.21],[-0.37,0.29,-0.17],[-0.37,0.29,0.16],[0.01,0.29,0.17],[-0.37,0.29,-0.17],[0.01,0.29,0.17],[0.01,0.29,-0.17],[0.01,0.29,0.17],[-0.37,0.29,0.16],[-0.35,0.18,0.2],[0.01,0.29,0.17],[-0.35,0.18,0.2],[0.01,0.19,0.22],[0.01,0.19,0.22],[-0.0,0.07,0.22],[0.35,0.08,0.21],[0.01,0.19,0.22],[0.35,0.08,0.21],[0.36,0.18,0.21],[-0.35,0.18,0.2],[-0.36,0.08,0.2],[-0.0,0.07,0.22],[-0.35,0.18,0.2],[-0.0,0.07,0.22],[0.01,0.19,0.22],[-0.36,0.01,0.14],[-0.0,0.0,0.15],[-0.0,0.07,0.22],[-0.36,0.01,0.14],[-0.0,0.07,0.22],[-0.36,0.08,0.2],[-0.0,0.0,0.15],[0.35,0.01,0.14],[0.35,0.08,0.21],[-0.0,0.0,0.15],[0.35,0.08,0.21],[-0.0,0.07,0.22],[-0.0,0.0,0.15],[-0.0,0.01,-0.14],[0.38,0.0,-0.15],[-0.0,0.0,0.15],[0.38,0.0,-0.15],[0.35,0.01,0.14],[-0.36,0.01,0.14],[-0.38,0.0,-0.15],[-0.0,0.01,-0.14],[-0.36,0.01,0.14],[-0.0,0.01,-0.14],[-0.0,0.0,0.15],[-0.0,0.01,-0.14],[-0.38,0.0,-0.15],[-0.36,0.08,-0.21],[-0.0,0.01,-0.14],[-0.36,0.08,-0.21],[-0.0,0.08,-0.21],[0.38,0.0,-0.15],[-0.0,0.01,-0.14],[-0.0,0.08,-0.21],[0.38,0.0,-0.15],[-0.0,0.08,-0.21],[0.38,0.07,-0.22],[0.39,0.19,-0.22],[0.38,0.07,-0.22],[-0.0,0.08,-0.21],[0.39,0.19,-0.22],[-0.0,0.08,-0.21],[0.01,0.19,-0.22],[0.01,0.19,-0.22],[-0.0,0.08,-0.21],[-0.36,0.08,-0.21],[0.01,0.19,-0.22],[-0.36,0.08,-0.21],[-0.35,0.18,-0.21],[-0.37,0.29,-0.17],[0.01,0.29,-0.17],[0.01,0.19,-0.22],[-0.37,0.29,-0.17],[0.01,0.19,-0.22],[-0.35,0.18,-0.21],[-0.37,0.29,-0.17],[-0.35,0.18,-0.21],[-0.42,0.18,-0.15],[-0.45,0.07,-0.15],[-0.42,0.18,-0.15],[-0.35,0.18,-0.21],[-0.45,0.07,-0.15],[-0.35,0.18,-0.21],[-0.36,0.08,-0.21],[-0.37,0.29,0.16],[-0.37,0.29,-0.17],[-0.42,0.18,-0.15],[-0.37,0.29,0.16],[-0.42,0.18,-0.15],[-0.45,0.19,0.15],[-0.42,0.18,-0.15],[-0.45,0.07,-0.15],[-0.45,0.07,0.15],[-0.42,0.18,-0.15],[-0.45,0.07,0.15],[-0.45,0.19,0.15],[-0.37,0.29,0.16],[-0.45,0.19,0.15],[-0.35,0.18,0.2],[-0.36,0.08,0.2],[-0.35,0.18,0.2],[-0.45,0.19,0.15],[-0.36,0.08,0.2],[-0.45,0.19,0.15],[-0.45,0.07,0.15],[-0.38,0.0,-0.15],[-0.36,0.01,0.14],[-0.45,0.07,0.15],[-0.38,0.0,-0.15],[-0.45,0.07,0.15],[-0.45,0.07,-0.15],[-0.36,0.01,0.14],[-0.36,0.08,0.2],[-0.45,0.07,0.15],[-0.38,0.0,-0.15],[-0.45,0.07,-0.15],[-0.36,0.08,-0.21],[0.44,0.18,-0.14],[0.45,0.07,-0.15],[0.38,0.07,-0.22],[0.44,0.18,-0.14],[0.38,0.07,-0.22],[0.39,0.19,-0.22],[0.45,0.07,-0.15],[0.38,0.0,-0.15],[0.38,0.07,-0.22],[0.35,0.01,0.14],[0.38,0.0,-0.15],[0.45,0.07,-0.15],[0.35,0.01,0.14],[0.45,0.07,-0.15],[0.42,0.08,0.14],[0.42,0.18,0.14],[0.42,0.08,0.14],[0.45,0.07,-0.15],[0.42,0.18,0.14],[0.45,0.07,-0.15],[0.44,0.18,-0.14],[0.35,0.01,0.14],[0.42,0.08,0.14],[0.35,0.08,0.21],[0.42,0.08,0.14],[0.42,0.18,0.14],[0.36,0.18,0.21],[0.42,0.08,0.14],[0.36,0.18,0.21],[0.35,0.08,0.21]]}

View file

@ -1 +1 @@
{"aabb_max":[0.44,0.28,0.22],"aabb_min":[-0.44,0.0,-0.22],"dreiecke":60,"oid":"barrier_009","quelle_glb":"res://assets/objekte/military_desert/barriers/barrier_009.glb","vertices":[[0.02,0.0,0.15],[0.4,0.07,0.22],[0.37,0.01,0.14],[0.02,0.0,0.15],[0.02,0.07,0.22],[0.4,0.07,0.22],[0.37,0.01,0.14],[0.4,0.07,0.22],[0.43,0.08,0.14],[0.37,0.01,0.14],[0.43,0.08,-0.14],[0.37,0.01,-0.14],[0.37,0.01,0.14],[0.43,0.08,0.14],[0.43,0.08,-0.14],[0.02,0.0,0.15],[0.37,0.01,-0.14],[0.02,0.0,-0.15],[0.02,0.0,0.15],[0.37,0.01,0.14],[0.37,0.01,-0.14],[0.37,0.01,-0.14],[0.43,0.08,-0.14],[0.37,0.08,-0.21],[0.37,0.01,-0.14],[0.02,0.07,-0.22],[0.02,0.0,-0.15],[0.37,0.01,-0.14],[0.37,0.08,-0.21],[0.02,0.07,-0.22],[-0.37,0.0,0.15],[0.02,0.0,-0.15],[-0.37,0.0,-0.15],[-0.37,0.0,0.15],[0.02,0.0,0.15],[0.02,0.0,-0.15],[0.02,0.0,-0.15],[-0.34,0.08,-0.21],[-0.37,0.0,-0.15],[0.02,0.0,-0.15],[0.02,0.07,-0.22],[-0.34,0.08,-0.21],[0.02,0.07,-0.22],[0.36,0.21,-0.2],[0.02,0.21,-0.22],[0.02,0.07,-0.22],[0.37,0.08,-0.21],[0.36,0.21,-0.2],[-0.34,0.08,-0.21],[0.02,0.21,-0.22],[-0.33,0.21,-0.2],[-0.34,0.08,-0.21],[0.02,0.07,-0.22],[0.02,0.21,-0.22],[-0.33,0.27,-0.14],[0.02,0.21,-0.22],[0.02,0.28,-0.15],[-0.33,0.27,-0.14],[-0.33,0.21,-0.2],[0.02,0.21,-0.22],[0.02,0.28,-0.15],[0.36,0.21,-0.2],[0.36,0.27,-0.13],[0.02,0.28,-0.15],[0.02,0.21,-0.22],[0.36,0.21,-0.2],[0.02,0.28,-0.15],[0.37,0.28,0.15],[0.01,0.27,0.14],[0.02,0.28,-0.15],[0.36,0.27,-0.13],[0.37,0.28,0.15],[-0.33,0.27,-0.14],[0.01,0.27,0.14],[-0.34,0.28,0.15],[-0.33,0.27,-0.14],[0.02,0.28,-0.15],[0.01,0.27,0.14],[0.01,0.27,0.14],[-0.32,0.21,0.2],[-0.34,0.28,0.15],[0.01,0.27,0.14],[0.01,0.21,0.2],[-0.32,0.21,0.2],[0.37,0.28,0.15],[0.01,0.21,0.2],[0.01,0.27,0.14],[0.37,0.28,0.15],[0.37,0.21,0.21],[0.01,0.21,0.2],[0.4,0.07,0.22],[0.01,0.21,0.2],[0.37,0.21,0.21],[0.4,0.07,0.22],[0.02,0.07,0.22],[0.01,0.21,0.2],[0.02,0.07,0.22],[-0.32,0.21,0.2],[0.01,0.21,0.2],[0.02,0.07,0.22],[-0.34,0.08,0.21],[-0.32,0.21,0.2],[-0.37,0.0,0.15],[0.02,0.07,0.22],[0.02,0.0,0.15],[-0.37,0.0,0.15],[-0.34,0.08,0.21],[0.02,0.07,0.22],[-0.37,0.0,0.15],[-0.41,0.08,0.14],[-0.34,0.08,0.21],[-0.41,0.21,0.15],[-0.34,0.08,0.21],[-0.41,0.08,0.14],[-0.41,0.21,0.15],[-0.32,0.21,0.2],[-0.34,0.08,0.21],[-0.37,0.0,-0.15],[-0.41,0.08,0.14],[-0.37,0.0,0.15],[-0.37,0.0,-0.15],[-0.44,0.07,-0.15],[-0.41,0.08,0.14],[-0.41,0.08,0.14],[-0.42,0.21,-0.15],[-0.41,0.21,0.15],[-0.41,0.08,0.14],[-0.44,0.07,-0.15],[-0.42,0.21,-0.15],[-0.37,0.0,-0.15],[-0.34,0.08,-0.21],[-0.44,0.07,-0.15],[-0.33,0.21,-0.2],[-0.44,0.07,-0.15],[-0.34,0.08,-0.21],[-0.33,0.21,-0.2],[-0.42,0.21,-0.15],[-0.44,0.07,-0.15],[-0.34,0.28,0.15],[-0.42,0.21,-0.15],[-0.33,0.27,-0.14],[-0.34,0.28,0.15],[-0.41,0.21,0.15],[-0.42,0.21,-0.15],[-0.33,0.27,-0.14],[-0.42,0.21,-0.15],[-0.33,0.21,-0.2],[-0.34,0.28,0.15],[-0.32,0.21,0.2],[-0.41,0.21,0.15],[0.43,0.08,0.14],[0.37,0.21,0.21],[0.44,0.21,0.15],[0.43,0.08,0.14],[0.4,0.07,0.22],[0.37,0.21,0.21],[0.44,0.21,0.15],[0.37,0.21,0.21],[0.37,0.28,0.15],[0.36,0.27,-0.13],[0.44,0.21,0.15],[0.37,0.28,0.15],[0.36,0.27,-0.13],[0.42,0.21,-0.13],[0.44,0.21,0.15],[0.43,0.08,-0.14],[0.44,0.21,0.15],[0.42,0.21,-0.13],[0.43,0.08,-0.14],[0.43,0.08,0.14],[0.44,0.21,0.15],[0.36,0.27,-0.13],[0.36,0.21,-0.2],[0.42,0.21,-0.13],[0.42,0.21,-0.13],[0.37,0.08,-0.21],[0.43,0.08,-0.14],[0.42,0.21,-0.13],[0.36,0.21,-0.2],[0.37,0.08,-0.21]]}
{"aabb_max":[0.44,0.28,0.22],"aabb_min":[-0.44,-0.0,-0.22],"dreiecke":60,"oid":"barrier_009","quelle_glb":"res://assets/objekte/military_desert/sperren/barrier_009.glb","vertices":[[0.02,-0.0,0.15],[0.37,0.01,0.14],[0.4,0.07,0.22],[0.02,-0.0,0.15],[0.4,0.07,0.22],[0.02,0.07,0.22],[0.37,0.01,0.14],[0.43,0.08,0.14],[0.4,0.07,0.22],[0.37,0.01,0.14],[0.37,0.01,-0.14],[0.43,0.08,-0.14],[0.37,0.01,0.14],[0.43,0.08,-0.14],[0.43,0.08,0.14],[0.02,-0.0,0.15],[0.02,-0.0,-0.15],[0.37,0.01,-0.14],[0.02,-0.0,0.15],[0.37,0.01,-0.14],[0.37,0.01,0.14],[0.37,0.01,-0.14],[0.37,0.08,-0.21],[0.43,0.08,-0.14],[0.37,0.01,-0.14],[0.02,-0.0,-0.15],[0.02,0.07,-0.22],[0.37,0.01,-0.14],[0.02,0.07,-0.22],[0.37,0.08,-0.21],[-0.37,-0.0,0.15],[-0.37,-0.0,-0.15],[0.02,-0.0,-0.15],[-0.37,-0.0,0.15],[0.02,-0.0,-0.15],[0.02,-0.0,0.15],[0.02,-0.0,-0.15],[-0.37,-0.0,-0.15],[-0.34,0.08,-0.21],[0.02,-0.0,-0.15],[-0.34,0.08,-0.21],[0.02,0.07,-0.22],[0.02,0.07,-0.22],[0.02,0.21,-0.22],[0.36,0.21,-0.2],[0.02,0.07,-0.22],[0.36,0.21,-0.2],[0.37,0.08,-0.21],[-0.34,0.08,-0.21],[-0.33,0.21,-0.2],[0.02,0.21,-0.22],[-0.34,0.08,-0.21],[0.02,0.21,-0.22],[0.02,0.07,-0.22],[-0.33,0.27,-0.14],[0.02,0.28,-0.15],[0.02,0.21,-0.22],[-0.33,0.27,-0.14],[0.02,0.21,-0.22],[-0.33,0.21,-0.2],[0.02,0.28,-0.15],[0.36,0.27,-0.13],[0.36,0.21,-0.2],[0.02,0.28,-0.15],[0.36,0.21,-0.2],[0.02,0.21,-0.22],[0.02,0.28,-0.15],[0.01,0.27,0.14],[0.37,0.28,0.15],[0.02,0.28,-0.15],[0.37,0.28,0.15],[0.36,0.27,-0.13],[-0.33,0.27,-0.14],[-0.34,0.28,0.15],[0.01,0.27,0.14],[-0.33,0.27,-0.14],[0.01,0.27,0.14],[0.02,0.28,-0.15],[0.01,0.27,0.14],[-0.34,0.28,0.15],[-0.32,0.21,0.2],[0.01,0.27,0.14],[-0.32,0.21,0.2],[0.01,0.21,0.2],[0.37,0.28,0.15],[0.01,0.27,0.14],[0.01,0.21,0.2],[0.37,0.28,0.15],[0.01,0.21,0.2],[0.37,0.21,0.21],[0.4,0.07,0.22],[0.37,0.21,0.21],[0.01,0.21,0.2],[0.4,0.07,0.22],[0.01,0.21,0.2],[0.02,0.07,0.22],[0.02,0.07,0.22],[0.01,0.21,0.2],[-0.32,0.21,0.2],[0.02,0.07,0.22],[-0.32,0.21,0.2],[-0.34,0.08,0.21],[-0.37,-0.0,0.15],[0.02,-0.0,0.15],[0.02,0.07,0.22],[-0.37,-0.0,0.15],[0.02,0.07,0.22],[-0.34,0.08,0.21],[-0.37,-0.0,0.15],[-0.34,0.08,0.21],[-0.41,0.08,0.14],[-0.41,0.21,0.15],[-0.41,0.08,0.14],[-0.34,0.08,0.21],[-0.41,0.21,0.15],[-0.34,0.08,0.21],[-0.32,0.21,0.2],[-0.37,-0.0,-0.15],[-0.37,-0.0,0.15],[-0.41,0.08,0.14],[-0.37,-0.0,-0.15],[-0.41,0.08,0.14],[-0.44,0.07,-0.15],[-0.41,0.08,0.14],[-0.41,0.21,0.15],[-0.42,0.21,-0.15],[-0.41,0.08,0.14],[-0.42,0.21,-0.15],[-0.44,0.07,-0.15],[-0.37,-0.0,-0.15],[-0.44,0.07,-0.15],[-0.34,0.08,-0.21],[-0.33,0.21,-0.2],[-0.34,0.08,-0.21],[-0.44,0.07,-0.15],[-0.33,0.21,-0.2],[-0.44,0.07,-0.15],[-0.42,0.21,-0.15],[-0.34,0.28,0.15],[-0.33,0.27,-0.14],[-0.42,0.21,-0.15],[-0.34,0.28,0.15],[-0.42,0.21,-0.15],[-0.41,0.21,0.15],[-0.33,0.27,-0.14],[-0.33,0.21,-0.2],[-0.42,0.21,-0.15],[-0.34,0.28,0.15],[-0.41,0.21,0.15],[-0.32,0.21,0.2],[0.43,0.08,0.14],[0.44,0.21,0.15],[0.37,0.21,0.21],[0.43,0.08,0.14],[0.37,0.21,0.21],[0.4,0.07,0.22],[0.44,0.21,0.15],[0.37,0.28,0.15],[0.37,0.21,0.21],[0.36,0.27,-0.13],[0.37,0.28,0.15],[0.44,0.21,0.15],[0.36,0.27,-0.13],[0.44,0.21,0.15],[0.42,0.21,-0.13],[0.43,0.08,-0.14],[0.42,0.21,-0.13],[0.44,0.21,0.15],[0.43,0.08,-0.14],[0.44,0.21,0.15],[0.43,0.08,0.14],[0.36,0.27,-0.13],[0.42,0.21,-0.13],[0.36,0.21,-0.2],[0.42,0.21,-0.13],[0.43,0.08,-0.14],[0.37,0.08,-0.21],[0.42,0.21,-0.13],[0.37,0.08,-0.21],[0.36,0.21,-0.2]]}

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
{"aabb_max":[0.45,0.29,0.22],"aabb_min":[-0.45,0.0,-0.22],"dreiecke":60,"oid":"barrier_011","quelle_glb":"res://assets/objekte/military_desert/barriers/barrier_011.glb","vertices":[[0.01,0.29,-0.17],[0.39,0.19,-0.22],[0.37,0.28,-0.17],[0.01,0.29,-0.17],[0.01,0.19,-0.22],[0.39,0.19,-0.22],[0.37,0.28,-0.17],[0.39,0.19,-0.22],[0.44,0.18,-0.14],[0.37,0.28,-0.17],[0.42,0.18,0.14],[0.36,0.28,0.16],[0.37,0.28,-0.17],[0.44,0.18,-0.14],[0.42,0.18,0.14],[0.01,0.29,-0.17],[0.36,0.28,0.16],[0.01,0.29,0.17],[0.01,0.29,-0.17],[0.37,0.28,-0.17],[0.36,0.28,0.16],[0.36,0.28,0.16],[0.42,0.18,0.14],[0.36,0.18,0.21],[0.36,0.28,0.16],[0.01,0.19,0.22],[0.01,0.29,0.17],[0.36,0.28,0.16],[0.36,0.18,0.21],[0.01,0.19,0.22],[-0.37,0.29,-0.17],[0.01,0.29,0.17],[-0.37,0.29,0.16],[-0.37,0.29,-0.17],[0.01,0.29,-0.17],[0.01,0.29,0.17],[0.01,0.29,0.17],[-0.35,0.18,0.2],[-0.37,0.29,0.16],[0.01,0.29,0.17],[0.01,0.19,0.22],[-0.35,0.18,0.2],[0.01,0.19,0.22],[0.35,0.08,0.21],[0.0,0.07,0.22],[0.01,0.19,0.22],[0.36,0.18,0.21],[0.35,0.08,0.21],[-0.35,0.18,0.2],[0.0,0.07,0.22],[-0.36,0.08,0.2],[-0.35,0.18,0.2],[0.01,0.19,0.22],[0.0,0.07,0.22],[-0.36,0.01,0.14],[0.0,0.07,0.22],[0.0,0.0,0.15],[-0.36,0.01,0.14],[-0.36,0.08,0.2],[0.0,0.07,0.22],[0.0,0.0,0.15],[0.35,0.08,0.21],[0.35,0.01,0.14],[0.0,0.0,0.15],[0.0,0.07,0.22],[0.35,0.08,0.21],[0.0,0.0,0.15],[0.38,0.0,-0.15],[0.0,0.01,-0.14],[0.0,0.0,0.15],[0.35,0.01,0.14],[0.38,0.0,-0.15],[-0.36,0.01,0.14],[0.0,0.01,-0.14],[-0.38,0.0,-0.15],[-0.36,0.01,0.14],[0.0,0.0,0.15],[0.0,0.01,-0.14],[0.0,0.01,-0.14],[-0.36,0.08,-0.21],[-0.38,0.0,-0.15],[0.0,0.01,-0.14],[0.0,0.08,-0.21],[-0.36,0.08,-0.21],[0.38,0.0,-0.15],[0.0,0.08,-0.21],[0.0,0.01,-0.14],[0.38,0.0,-0.15],[0.38,0.07,-0.22],[0.0,0.08,-0.21],[0.39,0.19,-0.22],[0.0,0.08,-0.21],[0.38,0.07,-0.22],[0.39,0.19,-0.22],[0.01,0.19,-0.22],[0.0,0.08,-0.21],[0.01,0.19,-0.22],[-0.36,0.08,-0.21],[0.0,0.08,-0.21],[0.01,0.19,-0.22],[-0.35,0.18,-0.21],[-0.36,0.08,-0.21],[-0.37,0.29,-0.17],[0.01,0.19,-0.22],[0.01,0.29,-0.17],[-0.37,0.29,-0.17],[-0.35,0.18,-0.21],[0.01,0.19,-0.22],[-0.37,0.29,-0.17],[-0.42,0.18,-0.15],[-0.35,0.18,-0.21],[-0.45,0.07,-0.15],[-0.35,0.18,-0.21],[-0.42,0.18,-0.15],[-0.45,0.07,-0.15],[-0.36,0.08,-0.21],[-0.35,0.18,-0.21],[-0.37,0.29,0.16],[-0.42,0.18,-0.15],[-0.37,0.29,-0.17],[-0.37,0.29,0.16],[-0.45,0.19,0.15],[-0.42,0.18,-0.15],[-0.42,0.18,-0.15],[-0.45,0.07,0.15],[-0.45,0.07,-0.15],[-0.42,0.18,-0.15],[-0.45,0.19,0.15],[-0.45,0.07,0.15],[-0.37,0.29,0.16],[-0.35,0.18,0.2],[-0.45,0.19,0.15],[-0.36,0.08,0.2],[-0.45,0.19,0.15],[-0.35,0.18,0.2],[-0.36,0.08,0.2],[-0.45,0.07,0.15],[-0.45,0.19,0.15],[-0.38,0.0,-0.15],[-0.45,0.07,0.15],[-0.36,0.01,0.14],[-0.38,0.0,-0.15],[-0.45,0.07,-0.15],[-0.45,0.07,0.15],[-0.36,0.01,0.14],[-0.45,0.07,0.15],[-0.36,0.08,0.2],[-0.38,0.0,-0.15],[-0.36,0.08,-0.21],[-0.45,0.07,-0.15],[0.44,0.18,-0.14],[0.38,0.07,-0.22],[0.45,0.07,-0.15],[0.44,0.18,-0.14],[0.39,0.19,-0.22],[0.38,0.07,-0.22],[0.45,0.07,-0.15],[0.38,0.07,-0.22],[0.38,0.0,-0.15],[0.35,0.01,0.14],[0.45,0.07,-0.15],[0.38,0.0,-0.15],[0.35,0.01,0.14],[0.42,0.08,0.14],[0.45,0.07,-0.15],[0.42,0.18,0.14],[0.45,0.07,-0.15],[0.42,0.08,0.14],[0.42,0.18,0.14],[0.44,0.18,-0.14],[0.45,0.07,-0.15],[0.35,0.01,0.14],[0.35,0.08,0.21],[0.42,0.08,0.14],[0.42,0.08,0.14],[0.36,0.18,0.21],[0.42,0.18,0.14],[0.42,0.08,0.14],[0.35,0.08,0.21],[0.36,0.18,0.21]]}
{"aabb_max":[0.45,0.29,0.22],"aabb_min":[-0.45,0.0,-0.22],"dreiecke":60,"oid":"barrier_011","quelle_glb":"res://assets/objekte/military_desert/sperren/barrier_011.glb","vertices":[[0.01,0.29,-0.17],[0.37,0.28,-0.17],[0.39,0.19,-0.22],[0.01,0.29,-0.17],[0.39,0.19,-0.22],[0.01,0.19,-0.22],[0.37,0.28,-0.17],[0.44,0.18,-0.14],[0.39,0.19,-0.22],[0.37,0.28,-0.17],[0.36,0.28,0.16],[0.42,0.18,0.14],[0.37,0.28,-0.17],[0.42,0.18,0.14],[0.44,0.18,-0.14],[0.01,0.29,-0.17],[0.01,0.29,0.17],[0.36,0.28,0.16],[0.01,0.29,-0.17],[0.36,0.28,0.16],[0.37,0.28,-0.17],[0.36,0.28,0.16],[0.36,0.18,0.21],[0.42,0.18,0.14],[0.36,0.28,0.16],[0.01,0.29,0.17],[0.01,0.19,0.22],[0.36,0.28,0.16],[0.01,0.19,0.22],[0.36,0.18,0.21],[-0.37,0.29,-0.17],[-0.37,0.29,0.16],[0.01,0.29,0.17],[-0.37,0.29,-0.17],[0.01,0.29,0.17],[0.01,0.29,-0.17],[0.01,0.29,0.17],[-0.37,0.29,0.16],[-0.35,0.18,0.2],[0.01,0.29,0.17],[-0.35,0.18,0.2],[0.01,0.19,0.22],[0.01,0.19,0.22],[-0.0,0.07,0.22],[0.35,0.08,0.21],[0.01,0.19,0.22],[0.35,0.08,0.21],[0.36,0.18,0.21],[-0.35,0.18,0.2],[-0.36,0.08,0.2],[-0.0,0.07,0.22],[-0.35,0.18,0.2],[-0.0,0.07,0.22],[0.01,0.19,0.22],[-0.36,0.01,0.14],[-0.0,0.0,0.15],[-0.0,0.07,0.22],[-0.36,0.01,0.14],[-0.0,0.07,0.22],[-0.36,0.08,0.2],[-0.0,0.0,0.15],[0.35,0.01,0.14],[0.35,0.08,0.21],[-0.0,0.0,0.15],[0.35,0.08,0.21],[-0.0,0.07,0.22],[-0.0,0.0,0.15],[-0.0,0.01,-0.14],[0.38,0.0,-0.15],[-0.0,0.0,0.15],[0.38,0.0,-0.15],[0.35,0.01,0.14],[-0.36,0.01,0.14],[-0.38,0.0,-0.15],[-0.0,0.01,-0.14],[-0.36,0.01,0.14],[-0.0,0.01,-0.14],[-0.0,0.0,0.15],[-0.0,0.01,-0.14],[-0.38,0.0,-0.15],[-0.36,0.08,-0.21],[-0.0,0.01,-0.14],[-0.36,0.08,-0.21],[-0.0,0.08,-0.21],[0.38,0.0,-0.15],[-0.0,0.01,-0.14],[-0.0,0.08,-0.21],[0.38,0.0,-0.15],[-0.0,0.08,-0.21],[0.38,0.07,-0.22],[0.39,0.19,-0.22],[0.38,0.07,-0.22],[-0.0,0.08,-0.21],[0.39,0.19,-0.22],[-0.0,0.08,-0.21],[0.01,0.19,-0.22],[0.01,0.19,-0.22],[-0.0,0.08,-0.21],[-0.36,0.08,-0.21],[0.01,0.19,-0.22],[-0.36,0.08,-0.21],[-0.35,0.18,-0.21],[-0.37,0.29,-0.17],[0.01,0.29,-0.17],[0.01,0.19,-0.22],[-0.37,0.29,-0.17],[0.01,0.19,-0.22],[-0.35,0.18,-0.21],[-0.37,0.29,-0.17],[-0.35,0.18,-0.21],[-0.42,0.18,-0.15],[-0.45,0.07,-0.15],[-0.42,0.18,-0.15],[-0.35,0.18,-0.21],[-0.45,0.07,-0.15],[-0.35,0.18,-0.21],[-0.36,0.08,-0.21],[-0.37,0.29,0.16],[-0.37,0.29,-0.17],[-0.42,0.18,-0.15],[-0.37,0.29,0.16],[-0.42,0.18,-0.15],[-0.45,0.19,0.15],[-0.42,0.18,-0.15],[-0.45,0.07,-0.15],[-0.45,0.07,0.15],[-0.42,0.18,-0.15],[-0.45,0.07,0.15],[-0.45,0.19,0.15],[-0.37,0.29,0.16],[-0.45,0.19,0.15],[-0.35,0.18,0.2],[-0.36,0.08,0.2],[-0.35,0.18,0.2],[-0.45,0.19,0.15],[-0.36,0.08,0.2],[-0.45,0.19,0.15],[-0.45,0.07,0.15],[-0.38,0.0,-0.15],[-0.36,0.01,0.14],[-0.45,0.07,0.15],[-0.38,0.0,-0.15],[-0.45,0.07,0.15],[-0.45,0.07,-0.15],[-0.36,0.01,0.14],[-0.36,0.08,0.2],[-0.45,0.07,0.15],[-0.38,0.0,-0.15],[-0.45,0.07,-0.15],[-0.36,0.08,-0.21],[0.44,0.18,-0.14],[0.45,0.07,-0.15],[0.38,0.07,-0.22],[0.44,0.18,-0.14],[0.38,0.07,-0.22],[0.39,0.19,-0.22],[0.45,0.07,-0.15],[0.38,0.0,-0.15],[0.38,0.07,-0.22],[0.35,0.01,0.14],[0.38,0.0,-0.15],[0.45,0.07,-0.15],[0.35,0.01,0.14],[0.45,0.07,-0.15],[0.42,0.08,0.14],[0.42,0.18,0.14],[0.42,0.08,0.14],[0.45,0.07,-0.15],[0.42,0.18,0.14],[0.45,0.07,-0.15],[0.44,0.18,-0.14],[0.35,0.01,0.14],[0.42,0.08,0.14],[0.35,0.08,0.21],[0.42,0.08,0.14],[0.42,0.18,0.14],[0.36,0.18,0.21],[0.42,0.08,0.14],[0.36,0.18,0.21],[0.35,0.08,0.21]]}

View file

@ -1 +1 @@
{"aabb_max":[0.44,0.28,0.22],"aabb_min":[-0.44,0.0,-0.22],"dreiecke":60,"oid":"barrier_012","quelle_glb":"res://assets/objekte/military_desert/barriers/barrier_012.glb","vertices":[[0.02,0.0,0.15],[0.4,0.07,0.22],[0.37,0.01,0.14],[0.02,0.0,0.15],[0.02,0.07,0.22],[0.4,0.07,0.22],[0.37,0.01,0.14],[0.4,0.07,0.22],[0.43,0.08,0.14],[0.37,0.01,0.14],[0.43,0.08,-0.14],[0.37,0.01,-0.14],[0.37,0.01,0.14],[0.43,0.08,0.14],[0.43,0.08,-0.14],[0.02,0.0,0.15],[0.37,0.01,-0.14],[0.02,0.0,-0.15],[0.02,0.0,0.15],[0.37,0.01,0.14],[0.37,0.01,-0.14],[0.37,0.01,-0.14],[0.43,0.08,-0.14],[0.37,0.08,-0.21],[0.37,0.01,-0.14],[0.02,0.07,-0.22],[0.02,0.0,-0.15],[0.37,0.01,-0.14],[0.37,0.08,-0.21],[0.02,0.07,-0.22],[-0.37,0.0,0.15],[0.02,0.0,-0.15],[-0.37,0.0,-0.15],[-0.37,0.0,0.15],[0.02,0.0,0.15],[0.02,0.0,-0.15],[0.02,0.0,-0.15],[-0.34,0.08,-0.21],[-0.37,0.0,-0.15],[0.02,0.0,-0.15],[0.02,0.07,-0.22],[-0.34,0.08,-0.21],[0.02,0.07,-0.22],[0.36,0.21,-0.2],[0.02,0.21,-0.22],[0.02,0.07,-0.22],[0.37,0.08,-0.21],[0.36,0.21,-0.2],[-0.34,0.08,-0.21],[0.02,0.21,-0.22],[-0.33,0.21,-0.2],[-0.34,0.08,-0.21],[0.02,0.07,-0.22],[0.02,0.21,-0.22],[-0.33,0.27,-0.14],[0.02,0.21,-0.22],[0.02,0.28,-0.15],[-0.33,0.27,-0.14],[-0.33,0.21,-0.2],[0.02,0.21,-0.22],[0.02,0.28,-0.15],[0.36,0.21,-0.2],[0.36,0.27,-0.13],[0.02,0.28,-0.15],[0.02,0.21,-0.22],[0.36,0.21,-0.2],[0.02,0.28,-0.15],[0.37,0.28,0.15],[0.01,0.27,0.14],[0.02,0.28,-0.15],[0.36,0.27,-0.13],[0.37,0.28,0.15],[-0.33,0.27,-0.14],[0.01,0.27,0.14],[-0.34,0.28,0.15],[-0.33,0.27,-0.14],[0.02,0.28,-0.15],[0.01,0.27,0.14],[0.01,0.27,0.14],[-0.32,0.21,0.2],[-0.34,0.28,0.15],[0.01,0.27,0.14],[0.01,0.21,0.2],[-0.32,0.21,0.2],[0.37,0.28,0.15],[0.01,0.21,0.2],[0.01,0.27,0.14],[0.37,0.28,0.15],[0.37,0.21,0.21],[0.01,0.21,0.2],[0.4,0.07,0.22],[0.01,0.21,0.2],[0.37,0.21,0.21],[0.4,0.07,0.22],[0.02,0.07,0.22],[0.01,0.21,0.2],[0.02,0.07,0.22],[-0.32,0.21,0.2],[0.01,0.21,0.2],[0.02,0.07,0.22],[-0.34,0.08,0.21],[-0.32,0.21,0.2],[-0.37,0.0,0.15],[0.02,0.07,0.22],[0.02,0.0,0.15],[-0.37,0.0,0.15],[-0.34,0.08,0.21],[0.02,0.07,0.22],[-0.37,0.0,0.15],[-0.41,0.08,0.14],[-0.34,0.08,0.21],[-0.41,0.21,0.15],[-0.34,0.08,0.21],[-0.41,0.08,0.14],[-0.41,0.21,0.15],[-0.32,0.21,0.2],[-0.34,0.08,0.21],[-0.37,0.0,-0.15],[-0.41,0.08,0.14],[-0.37,0.0,0.15],[-0.37,0.0,-0.15],[-0.44,0.07,-0.15],[-0.41,0.08,0.14],[-0.41,0.08,0.14],[-0.42,0.21,-0.15],[-0.41,0.21,0.15],[-0.41,0.08,0.14],[-0.44,0.07,-0.15],[-0.42,0.21,-0.15],[-0.37,0.0,-0.15],[-0.34,0.08,-0.21],[-0.44,0.07,-0.15],[-0.33,0.21,-0.2],[-0.44,0.07,-0.15],[-0.34,0.08,-0.21],[-0.33,0.21,-0.2],[-0.42,0.21,-0.15],[-0.44,0.07,-0.15],[-0.34,0.28,0.15],[-0.42,0.21,-0.15],[-0.33,0.27,-0.14],[-0.34,0.28,0.15],[-0.41,0.21,0.15],[-0.42,0.21,-0.15],[-0.33,0.27,-0.14],[-0.42,0.21,-0.15],[-0.33,0.21,-0.2],[-0.34,0.28,0.15],[-0.32,0.21,0.2],[-0.41,0.21,0.15],[0.43,0.08,0.14],[0.37,0.21,0.21],[0.44,0.21,0.15],[0.43,0.08,0.14],[0.4,0.07,0.22],[0.37,0.21,0.21],[0.44,0.21,0.15],[0.37,0.21,0.21],[0.37,0.28,0.15],[0.36,0.27,-0.13],[0.44,0.21,0.15],[0.37,0.28,0.15],[0.36,0.27,-0.13],[0.42,0.21,-0.13],[0.44,0.21,0.15],[0.43,0.08,-0.14],[0.44,0.21,0.15],[0.42,0.21,-0.13],[0.43,0.08,-0.14],[0.43,0.08,0.14],[0.44,0.21,0.15],[0.36,0.27,-0.13],[0.36,0.21,-0.2],[0.42,0.21,-0.13],[0.42,0.21,-0.13],[0.37,0.08,-0.21],[0.43,0.08,-0.14],[0.42,0.21,-0.13],[0.36,0.21,-0.2],[0.37,0.08,-0.21]]}
{"aabb_max":[0.44,0.28,0.22],"aabb_min":[-0.44,-0.0,-0.22],"dreiecke":60,"oid":"barrier_012","quelle_glb":"res://assets/objekte/military_desert/sperren/barrier_012.glb","vertices":[[0.02,-0.0,0.15],[0.37,0.01,0.14],[0.4,0.07,0.22],[0.02,-0.0,0.15],[0.4,0.07,0.22],[0.02,0.07,0.22],[0.37,0.01,0.14],[0.43,0.08,0.14],[0.4,0.07,0.22],[0.37,0.01,0.14],[0.37,0.01,-0.14],[0.43,0.08,-0.14],[0.37,0.01,0.14],[0.43,0.08,-0.14],[0.43,0.08,0.14],[0.02,-0.0,0.15],[0.02,-0.0,-0.15],[0.37,0.01,-0.14],[0.02,-0.0,0.15],[0.37,0.01,-0.14],[0.37,0.01,0.14],[0.37,0.01,-0.14],[0.37,0.08,-0.21],[0.43,0.08,-0.14],[0.37,0.01,-0.14],[0.02,-0.0,-0.15],[0.02,0.07,-0.22],[0.37,0.01,-0.14],[0.02,0.07,-0.22],[0.37,0.08,-0.21],[-0.37,-0.0,0.15],[-0.37,-0.0,-0.15],[0.02,-0.0,-0.15],[-0.37,-0.0,0.15],[0.02,-0.0,-0.15],[0.02,-0.0,0.15],[0.02,-0.0,-0.15],[-0.37,-0.0,-0.15],[-0.34,0.08,-0.21],[0.02,-0.0,-0.15],[-0.34,0.08,-0.21],[0.02,0.07,-0.22],[0.02,0.07,-0.22],[0.02,0.21,-0.22],[0.36,0.21,-0.2],[0.02,0.07,-0.22],[0.36,0.21,-0.2],[0.37,0.08,-0.21],[-0.34,0.08,-0.21],[-0.33,0.21,-0.2],[0.02,0.21,-0.22],[-0.34,0.08,-0.21],[0.02,0.21,-0.22],[0.02,0.07,-0.22],[-0.33,0.27,-0.14],[0.02,0.28,-0.15],[0.02,0.21,-0.22],[-0.33,0.27,-0.14],[0.02,0.21,-0.22],[-0.33,0.21,-0.2],[0.02,0.28,-0.15],[0.36,0.27,-0.13],[0.36,0.21,-0.2],[0.02,0.28,-0.15],[0.36,0.21,-0.2],[0.02,0.21,-0.22],[0.02,0.28,-0.15],[0.01,0.27,0.14],[0.37,0.28,0.15],[0.02,0.28,-0.15],[0.37,0.28,0.15],[0.36,0.27,-0.13],[-0.33,0.27,-0.14],[-0.34,0.28,0.15],[0.01,0.27,0.14],[-0.33,0.27,-0.14],[0.01,0.27,0.14],[0.02,0.28,-0.15],[0.01,0.27,0.14],[-0.34,0.28,0.15],[-0.32,0.21,0.2],[0.01,0.27,0.14],[-0.32,0.21,0.2],[0.01,0.21,0.2],[0.37,0.28,0.15],[0.01,0.27,0.14],[0.01,0.21,0.2],[0.37,0.28,0.15],[0.01,0.21,0.2],[0.37,0.21,0.21],[0.4,0.07,0.22],[0.37,0.21,0.21],[0.01,0.21,0.2],[0.4,0.07,0.22],[0.01,0.21,0.2],[0.02,0.07,0.22],[0.02,0.07,0.22],[0.01,0.21,0.2],[-0.32,0.21,0.2],[0.02,0.07,0.22],[-0.32,0.21,0.2],[-0.34,0.08,0.21],[-0.37,-0.0,0.15],[0.02,-0.0,0.15],[0.02,0.07,0.22],[-0.37,-0.0,0.15],[0.02,0.07,0.22],[-0.34,0.08,0.21],[-0.37,-0.0,0.15],[-0.34,0.08,0.21],[-0.41,0.08,0.14],[-0.41,0.21,0.15],[-0.41,0.08,0.14],[-0.34,0.08,0.21],[-0.41,0.21,0.15],[-0.34,0.08,0.21],[-0.32,0.21,0.2],[-0.37,-0.0,-0.15],[-0.37,-0.0,0.15],[-0.41,0.08,0.14],[-0.37,-0.0,-0.15],[-0.41,0.08,0.14],[-0.44,0.07,-0.15],[-0.41,0.08,0.14],[-0.41,0.21,0.15],[-0.42,0.21,-0.15],[-0.41,0.08,0.14],[-0.42,0.21,-0.15],[-0.44,0.07,-0.15],[-0.37,-0.0,-0.15],[-0.44,0.07,-0.15],[-0.34,0.08,-0.21],[-0.33,0.21,-0.2],[-0.34,0.08,-0.21],[-0.44,0.07,-0.15],[-0.33,0.21,-0.2],[-0.44,0.07,-0.15],[-0.42,0.21,-0.15],[-0.34,0.28,0.15],[-0.33,0.27,-0.14],[-0.42,0.21,-0.15],[-0.34,0.28,0.15],[-0.42,0.21,-0.15],[-0.41,0.21,0.15],[-0.33,0.27,-0.14],[-0.33,0.21,-0.2],[-0.42,0.21,-0.15],[-0.34,0.28,0.15],[-0.41,0.21,0.15],[-0.32,0.21,0.2],[0.43,0.08,0.14],[0.44,0.21,0.15],[0.37,0.21,0.21],[0.43,0.08,0.14],[0.37,0.21,0.21],[0.4,0.07,0.22],[0.44,0.21,0.15],[0.37,0.28,0.15],[0.37,0.21,0.21],[0.36,0.27,-0.13],[0.37,0.28,0.15],[0.44,0.21,0.15],[0.36,0.27,-0.13],[0.44,0.21,0.15],[0.42,0.21,-0.13],[0.43,0.08,-0.14],[0.42,0.21,-0.13],[0.44,0.21,0.15],[0.43,0.08,-0.14],[0.44,0.21,0.15],[0.43,0.08,0.14],[0.36,0.27,-0.13],[0.42,0.21,-0.13],[0.36,0.21,-0.2],[0.42,0.21,-0.13],[0.43,0.08,-0.14],[0.37,0.08,-0.21],[0.42,0.21,-0.13],[0.37,0.08,-0.21],[0.36,0.21,-0.2]]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"aabb_max":[1.0,0.2,1.0],"aabb_min":[-1.0,0.0,-1.0],"dreiecke":24,"oid":"bau_boden","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_boden.glb","vertices":[[-1.0,0.2,-1.0],[1.0,0.2,-1.0],[1.0,0.2,1.0],[1.0,0.2,-1.0],[-1.0,0.2,-1.0],[1.0,0.2,1.0],[-1.0,0.0,-1.0],[1.0,0.0,1.0],[1.0,0.0,-1.0],[1.0,0.0,1.0],[-1.0,0.0,-1.0],[1.0,0.0,-1.0],[-1.0,0.2,-1.0],[1.0,0.2,1.0],[-1.0,0.2,1.0],[1.0,0.2,1.0],[-1.0,0.2,-1.0],[-1.0,0.2,1.0],[-1.0,0.0,-1.0],[-1.0,0.0,1.0],[1.0,0.0,1.0],[-1.0,0.0,1.0],[-1.0,0.0,-1.0],[1.0,0.0,1.0],[-1.0,0.0,-1.0],[1.0,0.2,-1.0],[1.0,0.0,-1.0],[1.0,0.2,-1.0],[-1.0,0.0,-1.0],[1.0,0.0,-1.0],[-1.0,0.0,-1.0],[-1.0,0.2,-1.0],[1.0,0.2,-1.0],[-1.0,0.2,-1.0],[-1.0,0.0,-1.0],[1.0,0.2,-1.0],[1.0,0.0,-1.0],[1.0,0.2,1.0],[1.0,0.0,1.0],[1.0,0.2,1.0],[1.0,0.0,-1.0],[1.0,0.0,1.0],[1.0,0.0,-1.0],[1.0,0.2,-1.0],[1.0,0.2,1.0],[1.0,0.2,-1.0],[1.0,0.0,-1.0],[1.0,0.2,1.0],[1.0,0.0,1.0],[-1.0,0.2,1.0],[-1.0,0.0,1.0],[-1.0,0.2,1.0],[1.0,0.0,1.0],[-1.0,0.0,1.0],[1.0,0.0,1.0],[1.0,0.2,1.0],[-1.0,0.2,1.0],[1.0,0.2,1.0],[1.0,0.0,1.0],[-1.0,0.2,1.0],[-1.0,0.0,1.0],[-1.0,0.2,-1.0],[-1.0,0.0,-1.0],[-1.0,0.2,-1.0],[-1.0,0.0,1.0],[-1.0,0.0,-1.0],[-1.0,0.0,1.0],[-1.0,0.2,1.0],[-1.0,0.2,-1.0],[-1.0,0.2,1.0],[-1.0,0.0,1.0],[-1.0,0.2,-1.0]]}

View file

@ -0,0 +1 @@
{"aabb_max":[1.0,1.1,0.1],"aabb_min":[-1.0,0.0,-0.1],"dreiecke":24,"oid":"bau_bruestung","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_bruestung.glb","vertices":[[-1.0,1.1,0.1],[1.0,0.0,0.1],[-1.0,0.0,0.1],[1.0,0.0,0.1],[-1.0,1.1,0.1],[-1.0,0.0,0.1],[1.0,0.0,-0.1],[-1.0,1.1,-0.1],[-1.0,0.0,-0.1],[-1.0,1.1,-0.1],[1.0,0.0,-0.1],[-1.0,0.0,-0.1],[1.0,0.0,0.1],[-1.0,1.1,0.1],[1.0,1.1,0.1],[-1.0,1.1,0.1],[1.0,0.0,0.1],[1.0,1.1,0.1],[-1.0,1.1,-0.1],[1.0,0.0,-0.1],[1.0,1.1,-0.1],[1.0,0.0,-0.1],[-1.0,1.1,-0.1],[1.0,1.1,-0.1],[-1.0,0.0,-0.1],[-1.0,1.1,0.1],[-1.0,0.0,0.1],[-1.0,1.1,0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[-1.0,0.0,-0.1],[-1.0,1.1,-0.1],[-1.0,1.1,0.1],[-1.0,1.1,-0.1],[-1.0,0.0,-0.1],[-1.0,1.1,0.1],[1.0,0.0,0.1],[1.0,1.1,-0.1],[1.0,0.0,-0.1],[1.0,1.1,-0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[1.0,1.1,0.1],[1.0,1.1,-0.1],[1.0,1.1,0.1],[1.0,0.0,0.1],[1.0,1.1,-0.1],[-1.0,1.1,0.1],[1.0,1.1,-0.1],[1.0,1.1,0.1],[1.0,1.1,-0.1],[-1.0,1.1,0.1],[1.0,1.1,0.1],[-1.0,1.1,0.1],[-1.0,1.1,-0.1],[1.0,1.1,-0.1],[-1.0,1.1,-0.1],[-1.0,1.1,0.1],[1.0,1.1,-0.1],[-1.0,0.0,-0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[-1.0,0.0,-0.1],[1.0,0.0,-0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[1.0,0.0,0.1],[-1.0,0.0,0.1],[-1.0,0.0,-0.1],[1.0,0.0,0.1]]}

View file

@ -0,0 +1 @@
{"aabb_max":[1.0,2.0,1.0],"aabb_min":[-1.0,0.0,-1.0],"dreiecke":6,"oid":"bau_dach_ecke_aussen","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_dach_ecke_aussen.glb","vertices":[[-1.0,0.0,-1.0],[1.0,0.0,-1.0],[1.0,2.0,1.0],[-1.0,0.0,-1.0],[1.0,2.0,1.0],[-1.0,0.0,1.0],[1.0,0.0,-1.0],[1.0,0.0,1.0],[1.0,2.0,1.0],[-1.0,0.0,1.0],[1.0,2.0,1.0],[1.0,0.0,1.0],[-1.0,0.0,-1.0],[1.0,0.0,1.0],[1.0,0.0,-1.0],[-1.0,0.0,-1.0],[-1.0,0.0,1.0],[1.0,0.0,1.0]]}

View file

@ -0,0 +1 @@
{"aabb_max":[1.0,2.0,1.0],"aabb_min":[-1.0,0.0,-1.0],"dreiecke":10,"oid":"bau_dach_ecke_innen","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_dach_ecke_innen.glb","vertices":[[-1.0,0.0,-1.0],[1.0,2.0,-1.0],[1.0,2.0,1.0],[-1.0,0.0,-1.0],[1.0,2.0,1.0],[-1.0,2.0,1.0],[-1.0,0.0,-1.0],[1.0,0.0,-1.0],[1.0,2.0,-1.0],[-1.0,0.0,-1.0],[-1.0,2.0,1.0],[-1.0,0.0,1.0],[1.0,0.0,-1.0],[1.0,0.0,1.0],[1.0,2.0,1.0],[1.0,0.0,-1.0],[1.0,2.0,1.0],[1.0,2.0,-1.0],[-1.0,0.0,1.0],[1.0,2.0,1.0],[1.0,0.0,1.0],[-1.0,0.0,1.0],[-1.0,2.0,1.0],[1.0,2.0,1.0],[-1.0,0.0,-1.0],[1.0,0.0,1.0],[1.0,0.0,-1.0],[-1.0,0.0,-1.0],[-1.0,0.0,1.0],[1.0,0.0,1.0]]}

View file

@ -0,0 +1 @@
{"aabb_max":[1.071,1.141,1.0],"aabb_min":[-1.071,0.0,-1.0],"dreiecke":48,"oid":"bau_dach_giebel","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_dach_giebel.glb","vertices":[[-1.0707,0.1414,-1.0],[-0.0707,1.1414,1.0],[-1.0707,0.1414,1.0],[-0.0707,1.1414,1.0],[-1.0707,0.1414,-1.0],[-1.0707,0.1414,1.0],[0.0707,1.0,1.0],[-0.9293,0.0,-1.0],[-0.9293,0.0,1.0],[-0.9293,0.0,-1.0],[0.0707,1.0,1.0],[-0.9293,0.0,1.0],[-1.0707,0.1414,-1.0],[-0.0707,1.1414,-1.0],[-0.0707,1.1414,1.0],[-0.0707,1.1414,-1.0],[-1.0707,0.1414,-1.0],[-0.0707,1.1414,1.0],[0.0707,1.0,-1.0],[-0.9293,0.0,-1.0],[0.0707,1.0,1.0],[-0.9293,0.0,-1.0],[0.0707,1.0,-1.0],[0.0707,1.0,1.0],[-1.0707,0.1414,-1.0],[-0.9293,0.0,1.0],[-0.9293,0.0,-1.0],[-0.9293,0.0,1.0],[-1.0707,0.1414,-1.0],[-0.9293,0.0,-1.0],[-1.0707,0.1414,-1.0],[-1.0707,0.1414,1.0],[-0.9293,0.0,1.0],[-1.0707,0.1414,1.0],[-1.0707,0.1414,-1.0],[-0.9293,0.0,1.0],[-1.0707,0.1414,1.0],[0.0707,1.0,1.0],[-0.9293,0.0,1.0],[0.0707,1.0,1.0],[-1.0707,0.1414,1.0],[-0.9293,0.0,1.0],[-1.0707,0.1414,1.0],[-0.0707,1.1414,1.0],[0.0707,1.0,1.0],[-0.0707,1.1414,1.0],[-1.0707,0.1414,1.0],[0.0707,1.0,1.0],[-0.0707,1.1414,1.0],[0.0707,1.0,-1.0],[0.0707,1.0,1.0],[0.0707,1.0,-1.0],[-0.0707,1.1414,1.0],[0.0707,1.0,1.0],[-0.0707,1.1414,1.0],[-0.0707,1.1414,-1.0],[0.0707,1.0,-1.0],[-0.0707,1.1414,-1.0],[-0.0707,1.1414,1.0],[0.0707,1.0,-1.0],[-0.0707,1.1414,-1.0],[-0.9293,0.0,-1.0],[0.0707,1.0,-1.0],[-0.9293,0.0,-1.0],[-0.0707,1.1414,-1.0],[0.0707,1.0,-1.0],[-0.0707,1.1414,-1.0],[-1.0707,0.1414,-1.0],[-0.9293,0.0,-1.0],[-1.0707,0.1414,-1.0],[-0.0707,1.1414,-1.0],[-0.9293,0.0,-1.0],[0.0707,1.1414,-1.0],[1.0707,0.1414,1.0],[0.0707,1.1414,1.0],[1.0707,0.1414,1.0],[0.0707,1.1414,-1.0],[0.0707,1.1414,1.0],[0.9293,0.0,1.0],[-0.0707,1.0,-1.0],[-0.0707,1.0,1.0],[-0.0707,1.0,-1.0],[0.9293,0.0,1.0],[-0.0707,1.0,1.0],[0.0707,1.1414,-1.0],[1.0707,0.1414,-1.0],[1.0707,0.1414,1.0],[1.0707,0.1414,-1.0],[0.0707,1.1414,-1.0],[1.0707,0.1414,1.0],[0.9293,0.0,-1.0],[-0.0707,1.0,-1.0],[0.9293,0.0,1.0],[-0.0707,1.0,-1.0],[0.9293,0.0,-1.0],[0.9293,0.0,1.0],[0.0707,1.1414,-1.0],[-0.0707,1.0,1.0],[-0.0707,1.0,-1.0],[-0.0707,1.0,1.0],[0.0707,1.1414,-1.0],[-0.0707,1.0,-1.0],[0.0707,1.1414,-1.0],[0.0707,1.1414,1.0],[-0.0707,1.0,1.0],[0.0707,1.1414,1.0],[0.0707,1.1414,-1.0],[-0.0707,1.0,1.0],[0.0707,1.1414,1.0],[0.9293,0.0,1.0],[-0.0707,1.0,1.0],[0.9293,0.0,1.0],[0.0707,1.1414,1.0],[-0.0707,1.0,1.0],[0.0707,1.1414,1.0],[1.0707,0.1414,1.0],[0.9293,0.0,1.0],[1.0707,0.1414,1.0],[0.0707,1.1414,1.0],[0.9293,0.0,1.0],[1.0707,0.1414,1.0],[0.9293,0.0,-1.0],[0.9293,0.0,1.0],[0.9293,0.0,-1.0],[1.0707,0.1414,1.0],[0.9293,0.0,1.0],[1.0707,0.1414,1.0],[1.0707,0.1414,-1.0],[0.9293,0.0,-1.0],[1.0707,0.1414,-1.0],[1.0707,0.1414,1.0],[0.9293,0.0,-1.0],[1.0707,0.1414,-1.0],[-0.0707,1.0,-1.0],[0.9293,0.0,-1.0],[-0.0707,1.0,-1.0],[1.0707,0.1414,-1.0],[0.9293,0.0,-1.0],[1.0707,0.1414,-1.0],[0.0707,1.1414,-1.0],[-0.0707,1.0,-1.0],[0.0707,1.1414,-1.0],[1.0707,0.1414,-1.0],[-0.0707,1.0,-1.0]]}

View file

@ -0,0 +1 @@
{"aabb_max":[2.071,2.141,2.0],"aabb_min":[-2.071,0.0,-2.0],"dreiecke":48,"oid":"bau_dach_giebel_4","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_dach_giebel_4.glb","vertices":[[-2.0707,0.1414,-2.0],[-0.0707,2.1414,2.0],[-2.0707,0.1414,2.0],[-0.0707,2.1414,2.0],[-2.0707,0.1414,-2.0],[-2.0707,0.1414,2.0],[0.0707,2.0,2.0],[-1.9293,0.0,-2.0],[-1.9293,0.0,2.0],[-1.9293,0.0,-2.0],[0.0707,2.0,2.0],[-1.9293,0.0,2.0],[-2.0707,0.1414,-2.0],[-0.0707,2.1414,-2.0],[-0.0707,2.1414,2.0],[-0.0707,2.1414,-2.0],[-2.0707,0.1414,-2.0],[-0.0707,2.1414,2.0],[0.0707,2.0,-2.0],[-1.9293,0.0,-2.0],[0.0707,2.0,2.0],[-1.9293,0.0,-2.0],[0.0707,2.0,-2.0],[0.0707,2.0,2.0],[-2.0707,0.1414,-2.0],[-1.9293,0.0,2.0],[-1.9293,0.0,-2.0],[-1.9293,0.0,2.0],[-2.0707,0.1414,-2.0],[-1.9293,0.0,-2.0],[-2.0707,0.1414,-2.0],[-2.0707,0.1414,2.0],[-1.9293,0.0,2.0],[-2.0707,0.1414,2.0],[-2.0707,0.1414,-2.0],[-1.9293,0.0,2.0],[-2.0707,0.1414,2.0],[0.0707,2.0,2.0],[-1.9293,0.0,2.0],[0.0707,2.0,2.0],[-2.0707,0.1414,2.0],[-1.9293,0.0,2.0],[-2.0707,0.1414,2.0],[-0.0707,2.1414,2.0],[0.0707,2.0,2.0],[-0.0707,2.1414,2.0],[-2.0707,0.1414,2.0],[0.0707,2.0,2.0],[-0.0707,2.1414,2.0],[0.0707,2.0,-2.0],[0.0707,2.0,2.0],[0.0707,2.0,-2.0],[-0.0707,2.1414,2.0],[0.0707,2.0,2.0],[-0.0707,2.1414,2.0],[-0.0707,2.1414,-2.0],[0.0707,2.0,-2.0],[-0.0707,2.1414,-2.0],[-0.0707,2.1414,2.0],[0.0707,2.0,-2.0],[-0.0707,2.1414,-2.0],[-1.9293,0.0,-2.0],[0.0707,2.0,-2.0],[-1.9293,0.0,-2.0],[-0.0707,2.1414,-2.0],[0.0707,2.0,-2.0],[-0.0707,2.1414,-2.0],[-2.0707,0.1414,-2.0],[-1.9293,0.0,-2.0],[-2.0707,0.1414,-2.0],[-0.0707,2.1414,-2.0],[-1.9293,0.0,-2.0],[0.0707,2.1414,-2.0],[2.0707,0.1414,2.0],[0.0707,2.1414,2.0],[2.0707,0.1414,2.0],[0.0707,2.1414,-2.0],[0.0707,2.1414,2.0],[1.9293,0.0,2.0],[-0.0707,2.0,-2.0],[-0.0707,2.0,2.0],[-0.0707,2.0,-2.0],[1.9293,0.0,2.0],[-0.0707,2.0,2.0],[0.0707,2.1414,-2.0],[2.0707,0.1414,-2.0],[2.0707,0.1414,2.0],[2.0707,0.1414,-2.0],[0.0707,2.1414,-2.0],[2.0707,0.1414,2.0],[1.9293,0.0,-2.0],[-0.0707,2.0,-2.0],[1.9293,0.0,2.0],[-0.0707,2.0,-2.0],[1.9293,0.0,-2.0],[1.9293,0.0,2.0],[0.0707,2.1414,-2.0],[-0.0707,2.0,2.0],[-0.0707,2.0,-2.0],[-0.0707,2.0,2.0],[0.0707,2.1414,-2.0],[-0.0707,2.0,-2.0],[0.0707,2.1414,-2.0],[0.0707,2.1414,2.0],[-0.0707,2.0,2.0],[0.0707,2.1414,2.0],[0.0707,2.1414,-2.0],[-0.0707,2.0,2.0],[0.0707,2.1414,2.0],[1.9293,0.0,2.0],[-0.0707,2.0,2.0],[1.9293,0.0,2.0],[0.0707,2.1414,2.0],[-0.0707,2.0,2.0],[0.0707,2.1414,2.0],[2.0707,0.1414,2.0],[1.9293,0.0,2.0],[2.0707,0.1414,2.0],[0.0707,2.1414,2.0],[1.9293,0.0,2.0],[2.0707,0.1414,2.0],[1.9293,0.0,-2.0],[1.9293,0.0,2.0],[1.9293,0.0,-2.0],[2.0707,0.1414,2.0],[1.9293,0.0,2.0],[2.0707,0.1414,2.0],[2.0707,0.1414,-2.0],[1.9293,0.0,-2.0],[2.0707,0.1414,-2.0],[2.0707,0.1414,2.0],[1.9293,0.0,-2.0],[2.0707,0.1414,-2.0],[-0.0707,2.0,-2.0],[1.9293,0.0,-2.0],[-0.0707,2.0,-2.0],[2.0707,0.1414,-2.0],[1.9293,0.0,-2.0],[2.0707,0.1414,-2.0],[0.0707,2.1414,-2.0],[-0.0707,2.0,-2.0],[0.0707,2.1414,-2.0],[2.0707,0.1414,-2.0],[-0.0707,2.0,-2.0]]}

View file

@ -0,0 +1 @@
{"aabb_max":[3.071,3.141,3.0],"aabb_min":[-3.071,0.0,-3.0],"dreiecke":48,"oid":"bau_dach_giebel_6","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_dach_giebel_6.glb","vertices":[[-3.0707,0.1414,-3.0],[-0.0707,3.1414,3.0],[-3.0707,0.1414,3.0],[-0.0707,3.1414,3.0],[-3.0707,0.1414,-3.0],[-3.0707,0.1414,3.0],[0.0707,3.0,3.0],[-2.9293,0.0,-3.0],[-2.9293,0.0,3.0],[-2.9293,0.0,-3.0],[0.0707,3.0,3.0],[-2.9293,0.0,3.0],[-3.0707,0.1414,-3.0],[-0.0707,3.1414,-3.0],[-0.0707,3.1414,3.0],[-0.0707,3.1414,-3.0],[-3.0707,0.1414,-3.0],[-0.0707,3.1414,3.0],[0.0707,3.0,-3.0],[-2.9293,0.0,-3.0],[0.0707,3.0,3.0],[-2.9293,0.0,-3.0],[0.0707,3.0,-3.0],[0.0707,3.0,3.0],[-3.0707,0.1414,-3.0],[-2.9293,0.0,3.0],[-2.9293,0.0,-3.0],[-2.9293,0.0,3.0],[-3.0707,0.1414,-3.0],[-2.9293,0.0,-3.0],[-3.0707,0.1414,-3.0],[-3.0707,0.1414,3.0],[-2.9293,0.0,3.0],[-3.0707,0.1414,3.0],[-3.0707,0.1414,-3.0],[-2.9293,0.0,3.0],[-3.0707,0.1414,3.0],[0.0707,3.0,3.0],[-2.9293,0.0,3.0],[0.0707,3.0,3.0],[-3.0707,0.1414,3.0],[-2.9293,0.0,3.0],[-3.0707,0.1414,3.0],[-0.0707,3.1414,3.0],[0.0707,3.0,3.0],[-0.0707,3.1414,3.0],[-3.0707,0.1414,3.0],[0.0707,3.0,3.0],[-0.0707,3.1414,3.0],[0.0707,3.0,-3.0],[0.0707,3.0,3.0],[0.0707,3.0,-3.0],[-0.0707,3.1414,3.0],[0.0707,3.0,3.0],[-0.0707,3.1414,3.0],[-0.0707,3.1414,-3.0],[0.0707,3.0,-3.0],[-0.0707,3.1414,-3.0],[-0.0707,3.1414,3.0],[0.0707,3.0,-3.0],[-0.0707,3.1414,-3.0],[-2.9293,0.0,-3.0],[0.0707,3.0,-3.0],[-2.9293,0.0,-3.0],[-0.0707,3.1414,-3.0],[0.0707,3.0,-3.0],[-0.0707,3.1414,-3.0],[-3.0707,0.1414,-3.0],[-2.9293,0.0,-3.0],[-3.0707,0.1414,-3.0],[-0.0707,3.1414,-3.0],[-2.9293,0.0,-3.0],[0.0707,3.1414,-3.0],[3.0707,0.1414,3.0],[0.0707,3.1414,3.0],[3.0707,0.1414,3.0],[0.0707,3.1414,-3.0],[0.0707,3.1414,3.0],[2.9293,0.0,3.0],[-0.0707,3.0,-3.0],[-0.0707,3.0,3.0],[-0.0707,3.0,-3.0],[2.9293,0.0,3.0],[-0.0707,3.0,3.0],[0.0707,3.1414,-3.0],[3.0707,0.1414,-3.0],[3.0707,0.1414,3.0],[3.0707,0.1414,-3.0],[0.0707,3.1414,-3.0],[3.0707,0.1414,3.0],[2.9293,0.0,-3.0],[-0.0707,3.0,-3.0],[2.9293,0.0,3.0],[-0.0707,3.0,-3.0],[2.9293,0.0,-3.0],[2.9293,0.0,3.0],[0.0707,3.1414,-3.0],[-0.0707,3.0,3.0],[-0.0707,3.0,-3.0],[-0.0707,3.0,3.0],[0.0707,3.1414,-3.0],[-0.0707,3.0,-3.0],[0.0707,3.1414,-3.0],[0.0707,3.1414,3.0],[-0.0707,3.0,3.0],[0.0707,3.1414,3.0],[0.0707,3.1414,-3.0],[-0.0707,3.0,3.0],[0.0707,3.1414,3.0],[2.9293,0.0,3.0],[-0.0707,3.0,3.0],[2.9293,0.0,3.0],[0.0707,3.1414,3.0],[-0.0707,3.0,3.0],[0.0707,3.1414,3.0],[3.0707,0.1414,3.0],[2.9293,0.0,3.0],[3.0707,0.1414,3.0],[0.0707,3.1414,3.0],[2.9293,0.0,3.0],[3.0707,0.1414,3.0],[2.9293,0.0,-3.0],[2.9293,0.0,3.0],[2.9293,0.0,-3.0],[3.0707,0.1414,3.0],[2.9293,0.0,3.0],[3.0707,0.1414,3.0],[3.0707,0.1414,-3.0],[2.9293,0.0,-3.0],[3.0707,0.1414,-3.0],[3.0707,0.1414,3.0],[2.9293,0.0,-3.0],[3.0707,0.1414,-3.0],[-0.0707,3.0,-3.0],[2.9293,0.0,-3.0],[-0.0707,3.0,-3.0],[3.0707,0.1414,-3.0],[2.9293,0.0,-3.0],[3.0707,0.1414,-3.0],[0.0707,3.1414,-3.0],[-0.0707,3.0,-3.0],[0.0707,3.1414,-3.0],[3.0707,0.1414,-3.0],[-0.0707,3.0,-3.0]]}

View file

@ -0,0 +1 @@
{"aabb_max":[1.0,2.0,0.1],"aabb_min":[-1.0,0.0,-0.1],"dreiecke":8,"oid":"bau_dach_giebel_ende","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_dach_giebel_ende.glb","vertices":[[-1.0,0.0,-0.1],[1.0,0.0,-0.1],[-1.0,2.0,-0.1],[-1.0,0.0,0.1],[-1.0,2.0,0.1],[1.0,0.0,0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[1.0,0.0,0.1],[-1.0,0.0,-0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[-1.0,0.0,-0.1],[-1.0,2.0,-0.1],[-1.0,2.0,0.1],[-1.0,0.0,-0.1],[-1.0,2.0,0.1],[-1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[-1.0,2.0,0.1],[1.0,0.0,-0.1],[-1.0,2.0,0.1],[-1.0,2.0,-0.1]]}

View file

@ -0,0 +1 @@
{"aabb_max":[1.0,2.0,1.0],"aabb_min":[-1.0,0.0,-1.0],"dreiecke":12,"oid":"bau_dach_plateau","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_dach_plateau.glb","vertices":[[-1.0,2.0,1.0],[1.0,2.0,1.0],[-1.0,0.0,1.0],[1.0,2.0,1.0],[1.0,0.0,1.0],[-1.0,0.0,1.0],[1.0,2.0,-1.0],[-1.0,2.0,-1.0],[1.0,0.0,-1.0],[-1.0,2.0,-1.0],[-1.0,0.0,-1.0],[1.0,0.0,-1.0],[1.0,2.0,1.0],[1.0,2.0,-1.0],[1.0,0.0,1.0],[1.0,2.0,-1.0],[1.0,0.0,-1.0],[1.0,0.0,1.0],[-1.0,2.0,-1.0],[-1.0,2.0,1.0],[-1.0,0.0,-1.0],[-1.0,2.0,1.0],[-1.0,0.0,1.0],[-1.0,0.0,-1.0],[1.0,2.0,1.0],[-1.0,2.0,1.0],[1.0,2.0,-1.0],[-1.0,2.0,1.0],[-1.0,2.0,-1.0],[1.0,2.0,-1.0],[-1.0,0.0,1.0],[1.0,0.0,1.0],[-1.0,0.0,-1.0],[1.0,0.0,1.0],[1.0,0.0,-1.0],[-1.0,0.0,-1.0]]}

View file

@ -0,0 +1 @@
{"aabb_max":[1.071,1.141,1.071],"aabb_min":[-1.071,0.0,-1.071],"dreiecke":64,"oid":"bau_dach_pyramide","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_dach_pyramide.glb","vertices":[[-1.0,0.0,-0.9293],[0.0,1.0,0.0707],[1.0,0.0,-0.9293],[0.0,1.0,0.0707],[-1.0,0.0,-0.9293],[1.0,0.0,-0.9293],[0.0,1.1414,-0.0707],[-1.0,0.1414,-1.0707],[1.0,0.1414,-1.0707],[-1.0,0.1414,-1.0707],[0.0,1.1414,-0.0707],[1.0,0.1414,-1.0707],[-1.0,0.0,-0.9293],[1.0,0.1414,-1.0707],[-1.0,0.1414,-1.0707],[1.0,0.1414,-1.0707],[-1.0,0.0,-0.9293],[-1.0,0.1414,-1.0707],[-1.0,0.0,-0.9293],[1.0,0.0,-0.9293],[1.0,0.1414,-1.0707],[1.0,0.0,-0.9293],[-1.0,0.0,-0.9293],[1.0,0.1414,-1.0707],[1.0,0.0,-0.9293],[0.0,1.1414,-0.0707],[1.0,0.1414,-1.0707],[0.0,1.1414,-0.0707],[1.0,0.0,-0.9293],[1.0,0.1414,-1.0707],[1.0,0.0,-0.9293],[0.0,1.0,0.0707],[0.0,1.1414,-0.0707],[0.0,1.0,0.0707],[1.0,0.0,-0.9293],[0.0,1.1414,-0.0707],[0.0,1.0,0.0707],[-1.0,0.1414,-1.0707],[0.0,1.1414,-0.0707],[-1.0,0.1414,-1.0707],[0.0,1.0,0.0707],[0.0,1.1414,-0.0707],[0.0,1.0,0.0707],[-1.0,0.0,-0.9293],[-1.0,0.1414,-1.0707],[-1.0,0.0,-0.9293],[0.0,1.0,0.0707],[-1.0,0.1414,-1.0707],[0.9293,0.0,-1.0],[-0.0707,1.0,0.0],[0.9293,0.0,1.0],[-0.0707,1.0,0.0],[0.9293,0.0,-1.0],[0.9293,0.0,1.0],[0.0707,1.1414,0.0],[1.0707,0.1414,-1.0],[1.0707,0.1414,1.0],[1.0707,0.1414,-1.0],[0.0707,1.1414,0.0],[1.0707,0.1414,1.0],[0.9293,0.0,-1.0],[1.0707,0.1414,1.0],[1.0707,0.1414,-1.0],[1.0707,0.1414,1.0],[0.9293,0.0,-1.0],[1.0707,0.1414,-1.0],[0.9293,0.0,-1.0],[0.9293,0.0,1.0],[1.0707,0.1414,1.0],[0.9293,0.0,1.0],[0.9293,0.0,-1.0],[1.0707,0.1414,1.0],[0.9293,0.0,1.0],[0.0707,1.1414,0.0],[1.0707,0.1414,1.0],[0.0707,1.1414,0.0],[0.9293,0.0,1.0],[1.0707,0.1414,1.0],[0.9293,0.0,1.0],[-0.0707,1.0,0.0],[0.0707,1.1414,0.0],[-0.0707,1.0,0.0],[0.9293,0.0,1.0],[0.0707,1.1414,0.0],[-0.0707,1.0,0.0],[1.0707,0.1414,-1.0],[0.0707,1.1414,0.0],[1.0707,0.1414,-1.0],[-0.0707,1.0,0.0],[0.0707,1.1414,0.0],[-0.0707,1.0,0.0],[0.9293,0.0,-1.0],[1.0707,0.1414,-1.0],[0.9293,0.0,-1.0],[-0.0707,1.0,0.0],[1.0707,0.1414,-1.0],[1.0,0.0,0.9293],[0.0,1.0,-0.0707],[-1.0,0.0,0.9293],[0.0,1.0,-0.0707],[1.0,0.0,0.9293],[-1.0,0.0,0.9293],[0.0,1.1414,0.0707],[1.0,0.1414,1.0707],[-1.0,0.1414,1.0707],[1.0,0.1414,1.0707],[0.0,1.1414,0.0707],[-1.0,0.1414,1.0707],[1.0,0.0,0.9293],[-1.0,0.1414,1.0707],[1.0,0.1414,1.0707],[-1.0,0.1414,1.0707],[1.0,0.0,0.9293],[1.0,0.1414,1.0707],[1.0,0.0,0.9293],[-1.0,0.0,0.9293],[-1.0,0.1414,1.0707],[-1.0,0.0,0.9293],[1.0,0.0,0.9293],[-1.0,0.1414,1.0707],[-1.0,0.0,0.9293],[0.0,1.1414,0.0707],[-1.0,0.1414,1.0707],[0.0,1.1414,0.0707],[-1.0,0.0,0.9293],[-1.0,0.1414,1.0707],[-1.0,0.0,0.9293],[0.0,1.0,-0.0707],[0.0,1.1414,0.0707],[0.0,1.0,-0.0707],[-1.0,0.0,0.9293],[0.0,1.1414,0.0707],[0.0,1.0,-0.0707],[1.0,0.1414,1.0707],[0.0,1.1414,0.0707],[1.0,0.1414,1.0707],[0.0,1.0,-0.0707],[0.0,1.1414,0.0707],[0.0,1.0,-0.0707],[1.0,0.0,0.9293],[1.0,0.1414,1.0707],[1.0,0.0,0.9293],[0.0,1.0,-0.0707],[1.0,0.1414,1.0707],[-0.9293,0.0,1.0],[0.0707,1.0,0.0],[-0.9293,0.0,-1.0],[0.0707,1.0,0.0],[-0.9293,0.0,1.0],[-0.9293,0.0,-1.0],[-0.0707,1.1414,0.0],[-1.0707,0.1414,1.0],[-1.0707,0.1414,-1.0],[-1.0707,0.1414,1.0],[-0.0707,1.1414,0.0],[-1.0707,0.1414,-1.0],[-0.9293,0.0,1.0],[-1.0707,0.1414,-1.0],[-1.0707,0.1414,1.0],[-1.0707,0.1414,-1.0],[-0.9293,0.0,1.0],[-1.0707,0.1414,1.0],[-0.9293,0.0,1.0],[-0.9293,0.0,-1.0],[-1.0707,0.1414,-1.0],[-0.9293,0.0,-1.0],[-0.9293,0.0,1.0],[-1.0707,0.1414,-1.0],[-0.9293,0.0,-1.0],[-0.0707,1.1414,0.0],[-1.0707,0.1414,-1.0],[-0.0707,1.1414,0.0],[-0.9293,0.0,-1.0],[-1.0707,0.1414,-1.0],[-0.9293,0.0,-1.0],[0.0707,1.0,0.0],[-0.0707,1.1414,0.0],[0.0707,1.0,0.0],[-0.9293,0.0,-1.0],[-0.0707,1.1414,0.0],[0.0707,1.0,0.0],[-1.0707,0.1414,1.0],[-0.0707,1.1414,0.0],[-1.0707,0.1414,1.0],[0.0707,1.0,0.0],[-0.0707,1.1414,0.0],[0.0707,1.0,0.0],[-0.9293,0.0,1.0],[-1.0707,0.1414,1.0],[-0.9293,0.0,1.0],[0.0707,1.0,0.0],[-1.0707,0.1414,1.0]]}

View file

@ -0,0 +1 @@
{"aabb_max":[2.071,2.141,2.071],"aabb_min":[-2.071,0.0,-2.071],"dreiecke":64,"oid":"bau_dach_pyramide_4","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_dach_pyramide_4.glb","vertices":[[-2.0,0.0,-1.9293],[0.0,2.0,0.0707],[2.0,0.0,-1.9293],[0.0,2.0,0.0707],[-2.0,0.0,-1.9293],[2.0,0.0,-1.9293],[0.0,2.1414,-0.0707],[-2.0,0.1414,-2.0707],[2.0,0.1414,-2.0707],[-2.0,0.1414,-2.0707],[0.0,2.1414,-0.0707],[2.0,0.1414,-2.0707],[-2.0,0.0,-1.9293],[2.0,0.1414,-2.0707],[-2.0,0.1414,-2.0707],[2.0,0.1414,-2.0707],[-2.0,0.0,-1.9293],[-2.0,0.1414,-2.0707],[-2.0,0.0,-1.9293],[2.0,0.0,-1.9293],[2.0,0.1414,-2.0707],[2.0,0.0,-1.9293],[-2.0,0.0,-1.9293],[2.0,0.1414,-2.0707],[2.0,0.0,-1.9293],[0.0,2.1414,-0.0707],[2.0,0.1414,-2.0707],[0.0,2.1414,-0.0707],[2.0,0.0,-1.9293],[2.0,0.1414,-2.0707],[2.0,0.0,-1.9293],[0.0,2.0,0.0707],[0.0,2.1414,-0.0707],[0.0,2.0,0.0707],[2.0,0.0,-1.9293],[0.0,2.1414,-0.0707],[0.0,2.0,0.0707],[-2.0,0.1414,-2.0707],[0.0,2.1414,-0.0707],[-2.0,0.1414,-2.0707],[0.0,2.0,0.0707],[0.0,2.1414,-0.0707],[0.0,2.0,0.0707],[-2.0,0.0,-1.9293],[-2.0,0.1414,-2.0707],[-2.0,0.0,-1.9293],[0.0,2.0,0.0707],[-2.0,0.1414,-2.0707],[1.9293,0.0,-2.0],[-0.0707,2.0,0.0],[1.9293,0.0,2.0],[-0.0707,2.0,0.0],[1.9293,0.0,-2.0],[1.9293,0.0,2.0],[0.0707,2.1414,0.0],[2.0707,0.1414,-2.0],[2.0707,0.1414,2.0],[2.0707,0.1414,-2.0],[0.0707,2.1414,0.0],[2.0707,0.1414,2.0],[1.9293,0.0,-2.0],[2.0707,0.1414,2.0],[2.0707,0.1414,-2.0],[2.0707,0.1414,2.0],[1.9293,0.0,-2.0],[2.0707,0.1414,-2.0],[1.9293,0.0,-2.0],[1.9293,0.0,2.0],[2.0707,0.1414,2.0],[1.9293,0.0,2.0],[1.9293,0.0,-2.0],[2.0707,0.1414,2.0],[1.9293,0.0,2.0],[0.0707,2.1414,0.0],[2.0707,0.1414,2.0],[0.0707,2.1414,0.0],[1.9293,0.0,2.0],[2.0707,0.1414,2.0],[1.9293,0.0,2.0],[-0.0707,2.0,0.0],[0.0707,2.1414,0.0],[-0.0707,2.0,0.0],[1.9293,0.0,2.0],[0.0707,2.1414,0.0],[-0.0707,2.0,0.0],[2.0707,0.1414,-2.0],[0.0707,2.1414,0.0],[2.0707,0.1414,-2.0],[-0.0707,2.0,0.0],[0.0707,2.1414,0.0],[-0.0707,2.0,0.0],[1.9293,0.0,-2.0],[2.0707,0.1414,-2.0],[1.9293,0.0,-2.0],[-0.0707,2.0,0.0],[2.0707,0.1414,-2.0],[2.0,0.0,1.9293],[0.0,2.0,-0.0707],[-2.0,0.0,1.9293],[0.0,2.0,-0.0707],[2.0,0.0,1.9293],[-2.0,0.0,1.9293],[0.0,2.1414,0.0707],[2.0,0.1414,2.0707],[-2.0,0.1414,2.0707],[2.0,0.1414,2.0707],[0.0,2.1414,0.0707],[-2.0,0.1414,2.0707],[2.0,0.0,1.9293],[-2.0,0.1414,2.0707],[2.0,0.1414,2.0707],[-2.0,0.1414,2.0707],[2.0,0.0,1.9293],[2.0,0.1414,2.0707],[2.0,0.0,1.9293],[-2.0,0.0,1.9293],[-2.0,0.1414,2.0707],[-2.0,0.0,1.9293],[2.0,0.0,1.9293],[-2.0,0.1414,2.0707],[-2.0,0.0,1.9293],[0.0,2.1414,0.0707],[-2.0,0.1414,2.0707],[0.0,2.1414,0.0707],[-2.0,0.0,1.9293],[-2.0,0.1414,2.0707],[-2.0,0.0,1.9293],[0.0,2.0,-0.0707],[0.0,2.1414,0.0707],[0.0,2.0,-0.0707],[-2.0,0.0,1.9293],[0.0,2.1414,0.0707],[0.0,2.0,-0.0707],[2.0,0.1414,2.0707],[0.0,2.1414,0.0707],[2.0,0.1414,2.0707],[0.0,2.0,-0.0707],[0.0,2.1414,0.0707],[0.0,2.0,-0.0707],[2.0,0.0,1.9293],[2.0,0.1414,2.0707],[2.0,0.0,1.9293],[0.0,2.0,-0.0707],[2.0,0.1414,2.0707],[-1.9293,0.0,2.0],[0.0707,2.0,0.0],[-1.9293,0.0,-2.0],[0.0707,2.0,0.0],[-1.9293,0.0,2.0],[-1.9293,0.0,-2.0],[-0.0707,2.1414,0.0],[-2.0707,0.1414,2.0],[-2.0707,0.1414,-2.0],[-2.0707,0.1414,2.0],[-0.0707,2.1414,0.0],[-2.0707,0.1414,-2.0],[-1.9293,0.0,2.0],[-2.0707,0.1414,-2.0],[-2.0707,0.1414,2.0],[-2.0707,0.1414,-2.0],[-1.9293,0.0,2.0],[-2.0707,0.1414,2.0],[-1.9293,0.0,2.0],[-1.9293,0.0,-2.0],[-2.0707,0.1414,-2.0],[-1.9293,0.0,-2.0],[-1.9293,0.0,2.0],[-2.0707,0.1414,-2.0],[-1.9293,0.0,-2.0],[-0.0707,2.1414,0.0],[-2.0707,0.1414,-2.0],[-0.0707,2.1414,0.0],[-1.9293,0.0,-2.0],[-2.0707,0.1414,-2.0],[-1.9293,0.0,-2.0],[0.0707,2.0,0.0],[-0.0707,2.1414,0.0],[0.0707,2.0,0.0],[-1.9293,0.0,-2.0],[-0.0707,2.1414,0.0],[0.0707,2.0,0.0],[-2.0707,0.1414,2.0],[-0.0707,2.1414,0.0],[-2.0707,0.1414,2.0],[0.0707,2.0,0.0],[-0.0707,2.1414,0.0],[0.0707,2.0,0.0],[-1.9293,0.0,2.0],[-2.0707,0.1414,2.0],[-1.9293,0.0,2.0],[0.0707,2.0,0.0],[-2.0707,0.1414,2.0]]}

View file

@ -0,0 +1 @@
{"aabb_max":[3.071,3.141,3.071],"aabb_min":[-3.071,0.0,-3.071],"dreiecke":64,"oid":"bau_dach_pyramide_6","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_dach_pyramide_6.glb","vertices":[[-3.0,0.0,-2.9293],[0.0,3.0,0.0707],[3.0,0.0,-2.9293],[0.0,3.0,0.0707],[-3.0,0.0,-2.9293],[3.0,0.0,-2.9293],[0.0,3.1414,-0.0707],[-3.0,0.1414,-3.0707],[3.0,0.1414,-3.0707],[-3.0,0.1414,-3.0707],[0.0,3.1414,-0.0707],[3.0,0.1414,-3.0707],[-3.0,0.0,-2.9293],[3.0,0.1414,-3.0707],[-3.0,0.1414,-3.0707],[3.0,0.1414,-3.0707],[-3.0,0.0,-2.9293],[-3.0,0.1414,-3.0707],[-3.0,0.0,-2.9293],[3.0,0.0,-2.9293],[3.0,0.1414,-3.0707],[3.0,0.0,-2.9293],[-3.0,0.0,-2.9293],[3.0,0.1414,-3.0707],[3.0,0.0,-2.9293],[0.0,3.1414,-0.0707],[3.0,0.1414,-3.0707],[0.0,3.1414,-0.0707],[3.0,0.0,-2.9293],[3.0,0.1414,-3.0707],[3.0,0.0,-2.9293],[0.0,3.0,0.0707],[0.0,3.1414,-0.0707],[0.0,3.0,0.0707],[3.0,0.0,-2.9293],[0.0,3.1414,-0.0707],[0.0,3.0,0.0707],[-3.0,0.1414,-3.0707],[0.0,3.1414,-0.0707],[-3.0,0.1414,-3.0707],[0.0,3.0,0.0707],[0.0,3.1414,-0.0707],[0.0,3.0,0.0707],[-3.0,0.0,-2.9293],[-3.0,0.1414,-3.0707],[-3.0,0.0,-2.9293],[0.0,3.0,0.0707],[-3.0,0.1414,-3.0707],[2.9293,0.0,-3.0],[-0.0707,3.0,0.0],[2.9293,0.0,3.0],[-0.0707,3.0,0.0],[2.9293,0.0,-3.0],[2.9293,0.0,3.0],[0.0707,3.1414,0.0],[3.0707,0.1414,-3.0],[3.0707,0.1414,3.0],[3.0707,0.1414,-3.0],[0.0707,3.1414,0.0],[3.0707,0.1414,3.0],[2.9293,0.0,-3.0],[3.0707,0.1414,3.0],[3.0707,0.1414,-3.0],[3.0707,0.1414,3.0],[2.9293,0.0,-3.0],[3.0707,0.1414,-3.0],[2.9293,0.0,-3.0],[2.9293,0.0,3.0],[3.0707,0.1414,3.0],[2.9293,0.0,3.0],[2.9293,0.0,-3.0],[3.0707,0.1414,3.0],[2.9293,0.0,3.0],[0.0707,3.1414,0.0],[3.0707,0.1414,3.0],[0.0707,3.1414,0.0],[2.9293,0.0,3.0],[3.0707,0.1414,3.0],[2.9293,0.0,3.0],[-0.0707,3.0,0.0],[0.0707,3.1414,0.0],[-0.0707,3.0,0.0],[2.9293,0.0,3.0],[0.0707,3.1414,0.0],[-0.0707,3.0,0.0],[3.0707,0.1414,-3.0],[0.0707,3.1414,0.0],[3.0707,0.1414,-3.0],[-0.0707,3.0,0.0],[0.0707,3.1414,0.0],[-0.0707,3.0,0.0],[2.9293,0.0,-3.0],[3.0707,0.1414,-3.0],[2.9293,0.0,-3.0],[-0.0707,3.0,0.0],[3.0707,0.1414,-3.0],[3.0,0.0,2.9293],[0.0,3.0,-0.0707],[-3.0,0.0,2.9293],[0.0,3.0,-0.0707],[3.0,0.0,2.9293],[-3.0,0.0,2.9293],[0.0,3.1414,0.0707],[3.0,0.1414,3.0707],[-3.0,0.1414,3.0707],[3.0,0.1414,3.0707],[0.0,3.1414,0.0707],[-3.0,0.1414,3.0707],[3.0,0.0,2.9293],[-3.0,0.1414,3.0707],[3.0,0.1414,3.0707],[-3.0,0.1414,3.0707],[3.0,0.0,2.9293],[3.0,0.1414,3.0707],[3.0,0.0,2.9293],[-3.0,0.0,2.9293],[-3.0,0.1414,3.0707],[-3.0,0.0,2.9293],[3.0,0.0,2.9293],[-3.0,0.1414,3.0707],[-3.0,0.0,2.9293],[0.0,3.1414,0.0707],[-3.0,0.1414,3.0707],[0.0,3.1414,0.0707],[-3.0,0.0,2.9293],[-3.0,0.1414,3.0707],[-3.0,0.0,2.9293],[0.0,3.0,-0.0707],[0.0,3.1414,0.0707],[0.0,3.0,-0.0707],[-3.0,0.0,2.9293],[0.0,3.1414,0.0707],[0.0,3.0,-0.0707],[3.0,0.1414,3.0707],[0.0,3.1414,0.0707],[3.0,0.1414,3.0707],[0.0,3.0,-0.0707],[0.0,3.1414,0.0707],[0.0,3.0,-0.0707],[3.0,0.0,2.9293],[3.0,0.1414,3.0707],[3.0,0.0,2.9293],[0.0,3.0,-0.0707],[3.0,0.1414,3.0707],[-2.9293,0.0,3.0],[0.0707,3.0,0.0],[-2.9293,0.0,-3.0],[0.0707,3.0,0.0],[-2.9293,0.0,3.0],[-2.9293,0.0,-3.0],[-0.0707,3.1414,0.0],[-3.0707,0.1414,3.0],[-3.0707,0.1414,-3.0],[-3.0707,0.1414,3.0],[-0.0707,3.1414,0.0],[-3.0707,0.1414,-3.0],[-2.9293,0.0,3.0],[-3.0707,0.1414,-3.0],[-3.0707,0.1414,3.0],[-3.0707,0.1414,-3.0],[-2.9293,0.0,3.0],[-3.0707,0.1414,3.0],[-2.9293,0.0,3.0],[-2.9293,0.0,-3.0],[-3.0707,0.1414,-3.0],[-2.9293,0.0,-3.0],[-2.9293,0.0,3.0],[-3.0707,0.1414,-3.0],[-2.9293,0.0,-3.0],[-0.0707,3.1414,0.0],[-3.0707,0.1414,-3.0],[-0.0707,3.1414,0.0],[-2.9293,0.0,-3.0],[-3.0707,0.1414,-3.0],[-2.9293,0.0,-3.0],[0.0707,3.0,0.0],[-0.0707,3.1414,0.0],[0.0707,3.0,0.0],[-2.9293,0.0,-3.0],[-0.0707,3.1414,0.0],[0.0707,3.0,0.0],[-3.0707,0.1414,3.0],[-0.0707,3.1414,0.0],[-3.0707,0.1414,3.0],[0.0707,3.0,0.0],[-0.0707,3.1414,0.0],[0.0707,3.0,0.0],[-2.9293,0.0,3.0],[-3.0707,0.1414,3.0],[-2.9293,0.0,3.0],[0.0707,3.0,0.0],[-3.0707,0.1414,3.0]]}

View file

@ -0,0 +1 @@
{"aabb_max":[1.0,2.0,1.0],"aabb_min":[-1.0,0.0,-1.0],"dreiecke":8,"oid":"bau_dach_schraege","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_dach_schraege.glb","vertices":[[-1.0,0.0,-1.0],[1.0,0.0,-1.0],[1.0,2.0,1.0],[-1.0,0.0,-1.0],[1.0,2.0,1.0],[-1.0,2.0,1.0],[-1.0,0.0,1.0],[1.0,2.0,1.0],[1.0,0.0,1.0],[-1.0,0.0,1.0],[-1.0,2.0,1.0],[1.0,2.0,1.0],[-1.0,0.0,-1.0],[-1.0,2.0,1.0],[-1.0,0.0,1.0],[1.0,0.0,-1.0],[1.0,0.0,1.0],[1.0,2.0,1.0],[-1.0,0.0,-1.0],[1.0,0.0,1.0],[1.0,0.0,-1.0],[-1.0,0.0,-1.0],[-1.0,0.0,1.0],[1.0,0.0,1.0]]}

View file

@ -0,0 +1 @@
{"aabb_max":[1.0,0.2,1.0],"aabb_min":[-1.0,0.0,-1.0],"dreiecke":24,"oid":"bau_fundament","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_fundament.glb","vertices":[[-1.0,0.2,-1.0],[1.0,0.2,-1.0],[1.0,0.2,1.0],[1.0,0.2,-1.0],[-1.0,0.2,-1.0],[1.0,0.2,1.0],[-1.0,0.0,-1.0],[1.0,0.0,1.0],[1.0,0.0,-1.0],[1.0,0.0,1.0],[-1.0,0.0,-1.0],[1.0,0.0,-1.0],[-1.0,0.2,-1.0],[1.0,0.2,1.0],[-1.0,0.2,1.0],[1.0,0.2,1.0],[-1.0,0.2,-1.0],[-1.0,0.2,1.0],[-1.0,0.0,-1.0],[-1.0,0.0,1.0],[1.0,0.0,1.0],[-1.0,0.0,1.0],[-1.0,0.0,-1.0],[1.0,0.0,1.0],[-1.0,0.0,-1.0],[1.0,0.2,-1.0],[1.0,0.0,-1.0],[1.0,0.2,-1.0],[-1.0,0.0,-1.0],[1.0,0.0,-1.0],[-1.0,0.0,-1.0],[-1.0,0.2,-1.0],[1.0,0.2,-1.0],[-1.0,0.2,-1.0],[-1.0,0.0,-1.0],[1.0,0.2,-1.0],[1.0,0.0,-1.0],[1.0,0.2,1.0],[1.0,0.0,1.0],[1.0,0.2,1.0],[1.0,0.0,-1.0],[1.0,0.0,1.0],[1.0,0.0,-1.0],[1.0,0.2,-1.0],[1.0,0.2,1.0],[1.0,0.2,-1.0],[1.0,0.0,-1.0],[1.0,0.2,1.0],[1.0,0.0,1.0],[-1.0,0.2,1.0],[-1.0,0.0,1.0],[-1.0,0.2,1.0],[1.0,0.0,1.0],[-1.0,0.0,1.0],[1.0,0.0,1.0],[1.0,0.2,1.0],[-1.0,0.2,1.0],[1.0,0.2,1.0],[1.0,0.0,1.0],[-1.0,0.2,1.0],[-1.0,0.0,1.0],[-1.0,0.2,-1.0],[-1.0,0.0,-1.0],[-1.0,0.2,-1.0],[-1.0,0.0,1.0],[-1.0,0.0,-1.0],[-1.0,0.0,1.0],[-1.0,0.2,1.0],[-1.0,0.2,-1.0],[-1.0,0.2,1.0],[-1.0,0.0,1.0],[-1.0,0.2,-1.0]]}

View file

@ -0,0 +1 @@
{"aabb_max":[1.0,1.0,0.1],"aabb_min":[-1.0,0.0,-0.1],"dreiecke":16,"oid":"bau_giebelwand","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_giebelwand.glb","vertices":[[-1.0,0.0,0.1],[0.0,1.0,0.1],[1.0,0.0,0.1],[0.0,1.0,0.1],[-1.0,0.0,0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[0.0,1.0,-0.1],[-1.0,0.0,-0.1],[0.0,1.0,-0.1],[1.0,0.0,-0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[1.0,0.0,-0.1],[-1.0,0.0,-0.1],[1.0,0.0,-0.1],[-1.0,0.0,0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[-1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[0.0,1.0,-0.1],[1.0,0.0,-0.1],[0.0,1.0,-0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[0.0,1.0,0.1],[0.0,1.0,-0.1],[0.0,1.0,0.1],[1.0,0.0,0.1],[0.0,1.0,-0.1],[0.0,1.0,0.1],[-1.0,0.0,-0.1],[0.0,1.0,-0.1],[-1.0,0.0,-0.1],[0.0,1.0,0.1],[0.0,1.0,-0.1],[0.0,1.0,0.1],[-1.0,0.0,0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[0.0,1.0,0.1],[-1.0,0.0,-0.1]]}

View file

@ -0,0 +1 @@
{"aabb_max":[2.0,2.0,0.1],"aabb_min":[-2.0,0.0,-0.1],"dreiecke":16,"oid":"bau_giebelwand_4","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_giebelwand_4.glb","vertices":[[-2.0,0.0,0.1],[0.0,2.0,0.1],[2.0,0.0,0.1],[0.0,2.0,0.1],[-2.0,0.0,0.1],[2.0,0.0,0.1],[2.0,0.0,-0.1],[0.0,2.0,-0.1],[-2.0,0.0,-0.1],[0.0,2.0,-0.1],[2.0,0.0,-0.1],[-2.0,0.0,-0.1],[-2.0,0.0,0.1],[2.0,0.0,-0.1],[-2.0,0.0,-0.1],[2.0,0.0,-0.1],[-2.0,0.0,0.1],[-2.0,0.0,-0.1],[-2.0,0.0,0.1],[2.0,0.0,0.1],[2.0,0.0,-0.1],[2.0,0.0,0.1],[-2.0,0.0,0.1],[2.0,0.0,-0.1],[2.0,0.0,0.1],[0.0,2.0,-0.1],[2.0,0.0,-0.1],[0.0,2.0,-0.1],[2.0,0.0,0.1],[2.0,0.0,-0.1],[2.0,0.0,0.1],[0.0,2.0,0.1],[0.0,2.0,-0.1],[0.0,2.0,0.1],[2.0,0.0,0.1],[0.0,2.0,-0.1],[0.0,2.0,0.1],[-2.0,0.0,-0.1],[0.0,2.0,-0.1],[-2.0,0.0,-0.1],[0.0,2.0,0.1],[0.0,2.0,-0.1],[0.0,2.0,0.1],[-2.0,0.0,0.1],[-2.0,0.0,-0.1],[-2.0,0.0,0.1],[0.0,2.0,0.1],[-2.0,0.0,-0.1]]}

View file

@ -0,0 +1 @@
{"aabb_max":[3.0,3.0,0.1],"aabb_min":[-3.0,0.0,-0.1],"dreiecke":16,"oid":"bau_giebelwand_6","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_giebelwand_6.glb","vertices":[[-3.0,0.0,0.1],[0.0,3.0,0.1],[3.0,0.0,0.1],[0.0,3.0,0.1],[-3.0,0.0,0.1],[3.0,0.0,0.1],[3.0,0.0,-0.1],[0.0,3.0,-0.1],[-3.0,0.0,-0.1],[0.0,3.0,-0.1],[3.0,0.0,-0.1],[-3.0,0.0,-0.1],[-3.0,0.0,0.1],[3.0,0.0,-0.1],[-3.0,0.0,-0.1],[3.0,0.0,-0.1],[-3.0,0.0,0.1],[-3.0,0.0,-0.1],[-3.0,0.0,0.1],[3.0,0.0,0.1],[3.0,0.0,-0.1],[3.0,0.0,0.1],[-3.0,0.0,0.1],[3.0,0.0,-0.1],[3.0,0.0,0.1],[0.0,3.0,-0.1],[3.0,0.0,-0.1],[0.0,3.0,-0.1],[3.0,0.0,0.1],[3.0,0.0,-0.1],[3.0,0.0,0.1],[0.0,3.0,0.1],[0.0,3.0,-0.1],[0.0,3.0,0.1],[3.0,0.0,0.1],[0.0,3.0,-0.1],[0.0,3.0,0.1],[-3.0,0.0,-0.1],[0.0,3.0,-0.1],[-3.0,0.0,-0.1],[0.0,3.0,0.1],[0.0,3.0,-0.1],[0.0,3.0,0.1],[-3.0,0.0,0.1],[-3.0,0.0,-0.1],[-3.0,0.0,0.1],[0.0,3.0,0.1],[-3.0,0.0,-0.1]]}

View file

@ -0,0 +1 @@
{"aabb_max":[0.15,3.0,0.15],"aabb_min":[-0.15,0.0,-0.15],"dreiecke":12,"oid":"bau_pfeiler","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_pfeiler.glb","vertices":[[-0.15,3.0,0.15],[0.15,3.0,0.15],[-0.15,0.0,0.15],[0.15,3.0,0.15],[0.15,0.0,0.15],[-0.15,0.0,0.15],[0.15,3.0,-0.15],[-0.15,3.0,-0.15],[0.15,0.0,-0.15],[-0.15,3.0,-0.15],[-0.15,0.0,-0.15],[0.15,0.0,-0.15],[0.15,3.0,0.15],[0.15,3.0,-0.15],[0.15,0.0,0.15],[0.15,3.0,-0.15],[0.15,0.0,-0.15],[0.15,0.0,0.15],[-0.15,3.0,-0.15],[-0.15,3.0,0.15],[-0.15,0.0,-0.15],[-0.15,3.0,0.15],[-0.15,0.0,0.15],[-0.15,0.0,-0.15],[0.15,3.0,0.15],[-0.15,3.0,0.15],[0.15,3.0,-0.15],[-0.15,3.0,0.15],[-0.15,3.0,-0.15],[0.15,3.0,-0.15],[-0.15,0.0,0.15],[0.15,0.0,0.15],[-0.15,0.0,-0.15],[0.15,0.0,0.15],[0.15,0.0,-0.15],[-0.15,0.0,-0.15]]}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"aabb_max":[1.0,3.0,0.1],"aabb_min":[-1.0,0.0,-0.1],"dreiecke":24,"oid":"bau_wand","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_wand.glb","vertices":[[-1.0,3.0,0.1],[1.0,0.0,0.1],[-1.0,0.0,0.1],[1.0,0.0,0.1],[-1.0,3.0,0.1],[-1.0,0.0,0.1],[1.0,0.0,-0.1],[-1.0,3.0,-0.1],[-1.0,0.0,-0.1],[-1.0,3.0,-0.1],[1.0,0.0,-0.1],[-1.0,0.0,-0.1],[1.0,0.0,0.1],[-1.0,3.0,0.1],[1.0,3.0,0.1],[-1.0,3.0,0.1],[1.0,0.0,0.1],[1.0,3.0,0.1],[-1.0,3.0,-0.1],[1.0,0.0,-0.1],[1.0,3.0,-0.1],[1.0,0.0,-0.1],[-1.0,3.0,-0.1],[1.0,3.0,-0.1],[-1.0,0.0,-0.1],[-1.0,3.0,0.1],[-1.0,0.0,0.1],[-1.0,3.0,0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[-1.0,0.0,-0.1],[-1.0,3.0,-0.1],[-1.0,3.0,0.1],[-1.0,3.0,-0.1],[-1.0,0.0,-0.1],[-1.0,3.0,0.1],[1.0,0.0,0.1],[1.0,3.0,-0.1],[1.0,0.0,-0.1],[1.0,3.0,-0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[1.0,3.0,0.1],[1.0,3.0,-0.1],[1.0,3.0,0.1],[1.0,0.0,0.1],[1.0,3.0,-0.1],[-1.0,3.0,0.1],[1.0,3.0,-0.1],[1.0,3.0,0.1],[1.0,3.0,-0.1],[-1.0,3.0,0.1],[1.0,3.0,0.1],[-1.0,3.0,0.1],[-1.0,3.0,-0.1],[1.0,3.0,-0.1],[-1.0,3.0,-0.1],[-1.0,3.0,0.1],[1.0,3.0,-0.1],[-1.0,0.0,-0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[-1.0,0.0,-0.1],[1.0,0.0,-0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[1.0,0.0,0.1],[-1.0,0.0,0.1],[-1.0,0.0,-0.1],[1.0,0.0,0.1]]}

View file

@ -0,0 +1 @@
{"aabb_max":[1.0,3.0,0.1],"aabb_min":[-1.0,0.0,-0.1],"dreiecke":96,"oid":"bau_wand_fenster","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_wand_fenster.glb","vertices":[[-0.6,0.0,0.1],[-1.0,1.1,0.1],[-0.6,1.1,0.1],[-1.0,1.1,0.1],[-0.6,0.0,0.1],[-0.6,1.1,0.1],[-1.0,1.1,-0.1],[-0.6,0.0,-0.1],[-0.6,1.1,-0.1],[-0.6,0.0,-0.1],[-1.0,1.1,-0.1],[-0.6,1.1,-0.1],[-1.0,1.1,0.1],[-0.6,0.0,0.1],[-1.0,0.0,0.1],[-0.6,0.0,0.1],[-1.0,1.1,0.1],[-1.0,0.0,0.1],[-0.6,0.0,-0.1],[-1.0,1.1,-0.1],[-1.0,0.0,-0.1],[-1.0,1.1,-0.1],[-0.6,0.0,-0.1],[-1.0,0.0,-0.1],[-0.6,1.1,0.1],[-1.0,2.3,0.1],[-0.6,2.3,0.1],[-1.0,2.3,0.1],[-0.6,1.1,0.1],[-0.6,2.3,0.1],[-1.0,2.3,-0.1],[-0.6,1.1,-0.1],[-0.6,2.3,-0.1],[-0.6,1.1,-0.1],[-1.0,2.3,-0.1],[-0.6,2.3,-0.1],[-1.0,2.3,0.1],[-0.6,1.1,0.1],[-1.0,1.1,0.1],[-0.6,1.1,0.1],[-1.0,2.3,0.1],[-1.0,1.1,0.1],[-0.6,1.1,-0.1],[-1.0,2.3,-0.1],[-1.0,1.1,-0.1],[-1.0,2.3,-0.1],[-0.6,1.1,-0.1],[-1.0,1.1,-0.1],[-0.6,2.3,0.1],[-1.0,3.0,0.1],[-0.6,3.0,0.1],[-1.0,3.0,0.1],[-0.6,2.3,0.1],[-0.6,3.0,0.1],[-1.0,3.0,-0.1],[-0.6,2.3,-0.1],[-0.6,3.0,-0.1],[-0.6,2.3,-0.1],[-1.0,3.0,-0.1],[-0.6,3.0,-0.1],[-1.0,3.0,0.1],[-0.6,2.3,0.1],[-1.0,2.3,0.1],[-0.6,2.3,0.1],[-1.0,3.0,0.1],[-1.0,2.3,0.1],[-0.6,2.3,-0.1],[-1.0,3.0,-0.1],[-1.0,2.3,-0.1],[-1.0,3.0,-0.1],[-0.6,2.3,-0.1],[-1.0,2.3,-0.1],[0.6,0.0,0.1],[-0.6,1.1,0.1],[0.6,1.1,0.1],[-0.6,1.1,0.1],[0.6,0.0,0.1],[0.6,1.1,0.1],[-0.6,1.1,-0.1],[0.6,0.0,-0.1],[0.6,1.1,-0.1],[0.6,0.0,-0.1],[-0.6,1.1,-0.1],[0.6,1.1,-0.1],[-0.6,1.1,0.1],[0.6,0.0,0.1],[-0.6,0.0,0.1],[0.6,0.0,0.1],[-0.6,1.1,0.1],[-0.6,0.0,0.1],[0.6,0.0,-0.1],[-0.6,1.1,-0.1],[-0.6,0.0,-0.1],[-0.6,1.1,-0.1],[0.6,0.0,-0.1],[-0.6,0.0,-0.1],[0.6,2.3,0.1],[-0.6,3.0,0.1],[0.6,3.0,0.1],[-0.6,3.0,0.1],[0.6,2.3,0.1],[0.6,3.0,0.1],[-0.6,3.0,-0.1],[0.6,2.3,-0.1],[0.6,3.0,-0.1],[0.6,2.3,-0.1],[-0.6,3.0,-0.1],[0.6,3.0,-0.1],[-0.6,3.0,0.1],[0.6,2.3,0.1],[-0.6,2.3,0.1],[0.6,2.3,0.1],[-0.6,3.0,0.1],[-0.6,2.3,0.1],[0.6,2.3,-0.1],[-0.6,3.0,-0.1],[-0.6,2.3,-0.1],[-0.6,3.0,-0.1],[0.6,2.3,-0.1],[-0.6,2.3,-0.1],[1.0,0.0,0.1],[0.6,1.1,0.1],[1.0,1.1,0.1],[0.6,1.1,0.1],[1.0,0.0,0.1],[1.0,1.1,0.1],[0.6,1.1,-0.1],[1.0,0.0,-0.1],[1.0,1.1,-0.1],[1.0,0.0,-0.1],[0.6,1.1,-0.1],[1.0,1.1,-0.1],[0.6,1.1,0.1],[1.0,0.0,0.1],[0.6,0.0,0.1],[1.0,0.0,0.1],[0.6,1.1,0.1],[0.6,0.0,0.1],[1.0,0.0,-0.1],[0.6,1.1,-0.1],[0.6,0.0,-0.1],[0.6,1.1,-0.1],[1.0,0.0,-0.1],[0.6,0.0,-0.1],[1.0,1.1,0.1],[0.6,2.3,0.1],[1.0,2.3,0.1],[0.6,2.3,0.1],[1.0,1.1,0.1],[1.0,2.3,0.1],[0.6,2.3,-0.1],[1.0,1.1,-0.1],[1.0,2.3,-0.1],[1.0,1.1,-0.1],[0.6,2.3,-0.1],[1.0,2.3,-0.1],[0.6,2.3,0.1],[1.0,1.1,0.1],[0.6,1.1,0.1],[1.0,1.1,0.1],[0.6,2.3,0.1],[0.6,1.1,0.1],[1.0,1.1,-0.1],[0.6,2.3,-0.1],[0.6,1.1,-0.1],[0.6,2.3,-0.1],[1.0,1.1,-0.1],[0.6,1.1,-0.1],[1.0,2.3,0.1],[0.6,3.0,0.1],[1.0,3.0,0.1],[0.6,3.0,0.1],[1.0,2.3,0.1],[1.0,3.0,0.1],[0.6,3.0,-0.1],[1.0,2.3,-0.1],[1.0,3.0,-0.1],[1.0,2.3,-0.1],[0.6,3.0,-0.1],[1.0,3.0,-0.1],[0.6,3.0,0.1],[1.0,2.3,0.1],[0.6,2.3,0.1],[1.0,2.3,0.1],[0.6,3.0,0.1],[0.6,2.3,0.1],[1.0,2.3,-0.1],[0.6,3.0,-0.1],[0.6,2.3,-0.1],[0.6,3.0,-0.1],[1.0,2.3,-0.1],[0.6,2.3,-0.1],[-1.0,0.0,-0.1],[-1.0,3.0,0.1],[-1.0,0.0,0.1],[-1.0,3.0,0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[-1.0,0.0,-0.1],[-1.0,3.0,-0.1],[-1.0,3.0,0.1],[-1.0,3.0,-0.1],[-1.0,0.0,-0.1],[-1.0,3.0,0.1],[1.0,0.0,0.1],[1.0,3.0,-0.1],[1.0,0.0,-0.1],[1.0,3.0,-0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[1.0,3.0,0.1],[1.0,3.0,-0.1],[1.0,3.0,0.1],[1.0,0.0,0.1],[1.0,3.0,-0.1],[-1.0,3.0,0.1],[1.0,3.0,-0.1],[1.0,3.0,0.1],[1.0,3.0,-0.1],[-1.0,3.0,0.1],[1.0,3.0,0.1],[-1.0,3.0,0.1],[-1.0,3.0,-0.1],[1.0,3.0,-0.1],[-1.0,3.0,-0.1],[-1.0,3.0,0.1],[1.0,3.0,-0.1],[-1.0,0.0,-0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[-1.0,0.0,-0.1],[1.0,0.0,-0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[1.0,0.0,0.1],[-1.0,0.0,0.1],[-1.0,0.0,-0.1],[1.0,0.0,0.1],[0.6,2.3,0.1],[-0.6,2.3,-0.1],[0.6,2.3,-0.1],[-0.6,2.3,-0.1],[0.6,2.3,0.1],[0.6,2.3,-0.1],[0.6,2.3,0.1],[-0.6,2.3,0.1],[-0.6,2.3,-0.1],[-0.6,2.3,0.1],[0.6,2.3,0.1],[-0.6,2.3,-0.1],[-0.6,2.3,0.1],[-0.6,1.1,-0.1],[-0.6,2.3,-0.1],[-0.6,1.1,-0.1],[-0.6,2.3,0.1],[-0.6,2.3,-0.1],[-0.6,2.3,0.1],[-0.6,1.1,0.1],[-0.6,1.1,-0.1],[-0.6,1.1,0.1],[-0.6,2.3,0.1],[-0.6,1.1,-0.1],[-0.6,1.1,0.1],[0.6,1.1,-0.1],[-0.6,1.1,-0.1],[0.6,1.1,-0.1],[-0.6,1.1,0.1],[-0.6,1.1,-0.1],[-0.6,1.1,0.1],[0.6,1.1,0.1],[0.6,1.1,-0.1],[0.6,1.1,0.1],[-0.6,1.1,0.1],[0.6,1.1,-0.1],[0.6,1.1,0.1],[0.6,2.3,-0.1],[0.6,1.1,-0.1],[0.6,2.3,-0.1],[0.6,1.1,0.1],[0.6,1.1,-0.1],[0.6,1.1,0.1],[0.6,2.3,0.1],[0.6,2.3,-0.1],[0.6,2.3,0.1],[0.6,1.1,0.1],[0.6,2.3,-0.1]]}

View file

@ -0,0 +1 @@
{"aabb_max":[1.0,3.0,0.1],"aabb_min":[-1.0,0.0,-0.1],"dreiecke":96,"oid":"bau_wand_scharte","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_wand_scharte.glb","vertices":[[-0.5,0.0,0.1],[-1.0,1.3,0.1],[-0.5,1.3,0.1],[-1.0,1.3,0.1],[-0.5,0.0,0.1],[-0.5,1.3,0.1],[-1.0,1.3,-0.1],[-0.5,0.0,-0.1],[-0.5,1.3,-0.1],[-0.5,0.0,-0.1],[-1.0,1.3,-0.1],[-0.5,1.3,-0.1],[-1.0,1.3,0.1],[-0.5,0.0,0.1],[-1.0,0.0,0.1],[-0.5,0.0,0.1],[-1.0,1.3,0.1],[-1.0,0.0,0.1],[-0.5,0.0,-0.1],[-1.0,1.3,-0.1],[-1.0,0.0,-0.1],[-1.0,1.3,-0.1],[-0.5,0.0,-0.1],[-1.0,0.0,-0.1],[-0.5,1.3,0.1],[-1.0,1.7,0.1],[-0.5,1.7,0.1],[-1.0,1.7,0.1],[-0.5,1.3,0.1],[-0.5,1.7,0.1],[-1.0,1.7,-0.1],[-0.5,1.3,-0.1],[-0.5,1.7,-0.1],[-0.5,1.3,-0.1],[-1.0,1.7,-0.1],[-0.5,1.7,-0.1],[-1.0,1.7,0.1],[-0.5,1.3,0.1],[-1.0,1.3,0.1],[-0.5,1.3,0.1],[-1.0,1.7,0.1],[-1.0,1.3,0.1],[-0.5,1.3,-0.1],[-1.0,1.7,-0.1],[-1.0,1.3,-0.1],[-1.0,1.7,-0.1],[-0.5,1.3,-0.1],[-1.0,1.3,-0.1],[-0.5,1.7,0.1],[-1.0,3.0,0.1],[-0.5,3.0,0.1],[-1.0,3.0,0.1],[-0.5,1.7,0.1],[-0.5,3.0,0.1],[-1.0,3.0,-0.1],[-0.5,1.7,-0.1],[-0.5,3.0,-0.1],[-0.5,1.7,-0.1],[-1.0,3.0,-0.1],[-0.5,3.0,-0.1],[-1.0,3.0,0.1],[-0.5,1.7,0.1],[-1.0,1.7,0.1],[-0.5,1.7,0.1],[-1.0,3.0,0.1],[-1.0,1.7,0.1],[-0.5,1.7,-0.1],[-1.0,3.0,-0.1],[-1.0,1.7,-0.1],[-1.0,3.0,-0.1],[-0.5,1.7,-0.1],[-1.0,1.7,-0.1],[0.5,0.0,0.1],[-0.5,1.3,0.1],[0.5,1.3,0.1],[-0.5,1.3,0.1],[0.5,0.0,0.1],[0.5,1.3,0.1],[-0.5,1.3,-0.1],[0.5,0.0,-0.1],[0.5,1.3,-0.1],[0.5,0.0,-0.1],[-0.5,1.3,-0.1],[0.5,1.3,-0.1],[-0.5,1.3,0.1],[0.5,0.0,0.1],[-0.5,0.0,0.1],[0.5,0.0,0.1],[-0.5,1.3,0.1],[-0.5,0.0,0.1],[0.5,0.0,-0.1],[-0.5,1.3,-0.1],[-0.5,0.0,-0.1],[-0.5,1.3,-0.1],[0.5,0.0,-0.1],[-0.5,0.0,-0.1],[0.5,1.7,0.1],[-0.5,3.0,0.1],[0.5,3.0,0.1],[-0.5,3.0,0.1],[0.5,1.7,0.1],[0.5,3.0,0.1],[-0.5,3.0,-0.1],[0.5,1.7,-0.1],[0.5,3.0,-0.1],[0.5,1.7,-0.1],[-0.5,3.0,-0.1],[0.5,3.0,-0.1],[-0.5,3.0,0.1],[0.5,1.7,0.1],[-0.5,1.7,0.1],[0.5,1.7,0.1],[-0.5,3.0,0.1],[-0.5,1.7,0.1],[0.5,1.7,-0.1],[-0.5,3.0,-0.1],[-0.5,1.7,-0.1],[-0.5,3.0,-0.1],[0.5,1.7,-0.1],[-0.5,1.7,-0.1],[1.0,0.0,0.1],[0.5,1.3,0.1],[1.0,1.3,0.1],[0.5,1.3,0.1],[1.0,0.0,0.1],[1.0,1.3,0.1],[0.5,1.3,-0.1],[1.0,0.0,-0.1],[1.0,1.3,-0.1],[1.0,0.0,-0.1],[0.5,1.3,-0.1],[1.0,1.3,-0.1],[0.5,1.3,0.1],[1.0,0.0,0.1],[0.5,0.0,0.1],[1.0,0.0,0.1],[0.5,1.3,0.1],[0.5,0.0,0.1],[1.0,0.0,-0.1],[0.5,1.3,-0.1],[0.5,0.0,-0.1],[0.5,1.3,-0.1],[1.0,0.0,-0.1],[0.5,0.0,-0.1],[1.0,1.3,0.1],[0.5,1.7,0.1],[1.0,1.7,0.1],[0.5,1.7,0.1],[1.0,1.3,0.1],[1.0,1.7,0.1],[0.5,1.7,-0.1],[1.0,1.3,-0.1],[1.0,1.7,-0.1],[1.0,1.3,-0.1],[0.5,1.7,-0.1],[1.0,1.7,-0.1],[0.5,1.7,0.1],[1.0,1.3,0.1],[0.5,1.3,0.1],[1.0,1.3,0.1],[0.5,1.7,0.1],[0.5,1.3,0.1],[1.0,1.3,-0.1],[0.5,1.7,-0.1],[0.5,1.3,-0.1],[0.5,1.7,-0.1],[1.0,1.3,-0.1],[0.5,1.3,-0.1],[1.0,1.7,0.1],[0.5,3.0,0.1],[1.0,3.0,0.1],[0.5,3.0,0.1],[1.0,1.7,0.1],[1.0,3.0,0.1],[0.5,3.0,-0.1],[1.0,1.7,-0.1],[1.0,3.0,-0.1],[1.0,1.7,-0.1],[0.5,3.0,-0.1],[1.0,3.0,-0.1],[0.5,3.0,0.1],[1.0,1.7,0.1],[0.5,1.7,0.1],[1.0,1.7,0.1],[0.5,3.0,0.1],[0.5,1.7,0.1],[1.0,1.7,-0.1],[0.5,3.0,-0.1],[0.5,1.7,-0.1],[0.5,3.0,-0.1],[1.0,1.7,-0.1],[0.5,1.7,-0.1],[-1.0,0.0,-0.1],[-1.0,3.0,0.1],[-1.0,0.0,0.1],[-1.0,3.0,0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[-1.0,0.0,-0.1],[-1.0,3.0,-0.1],[-1.0,3.0,0.1],[-1.0,3.0,-0.1],[-1.0,0.0,-0.1],[-1.0,3.0,0.1],[1.0,0.0,0.1],[1.0,3.0,-0.1],[1.0,0.0,-0.1],[1.0,3.0,-0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[1.0,3.0,0.1],[1.0,3.0,-0.1],[1.0,3.0,0.1],[1.0,0.0,0.1],[1.0,3.0,-0.1],[-1.0,3.0,0.1],[1.0,3.0,-0.1],[1.0,3.0,0.1],[1.0,3.0,-0.1],[-1.0,3.0,0.1],[1.0,3.0,0.1],[-1.0,3.0,0.1],[-1.0,3.0,-0.1],[1.0,3.0,-0.1],[-1.0,3.0,-0.1],[-1.0,3.0,0.1],[1.0,3.0,-0.1],[-1.0,0.0,-0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[-1.0,0.0,-0.1],[1.0,0.0,-0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[1.0,0.0,0.1],[-1.0,0.0,0.1],[-1.0,0.0,-0.1],[1.0,0.0,0.1],[0.5,1.7,0.1],[-0.5,1.7,-0.1],[0.5,1.7,-0.1],[-0.5,1.7,-0.1],[0.5,1.7,0.1],[0.5,1.7,-0.1],[0.5,1.7,0.1],[-0.5,1.7,0.1],[-0.5,1.7,-0.1],[-0.5,1.7,0.1],[0.5,1.7,0.1],[-0.5,1.7,-0.1],[-0.5,1.7,0.1],[-0.5,1.3,-0.1],[-0.5,1.7,-0.1],[-0.5,1.3,-0.1],[-0.5,1.7,0.1],[-0.5,1.7,-0.1],[-0.5,1.7,0.1],[-0.5,1.3,0.1],[-0.5,1.3,-0.1],[-0.5,1.3,0.1],[-0.5,1.7,0.1],[-0.5,1.3,-0.1],[-0.5,1.3,0.1],[0.5,1.3,-0.1],[-0.5,1.3,-0.1],[0.5,1.3,-0.1],[-0.5,1.3,0.1],[-0.5,1.3,-0.1],[-0.5,1.3,0.1],[0.5,1.3,0.1],[0.5,1.3,-0.1],[0.5,1.3,0.1],[-0.5,1.3,0.1],[0.5,1.3,-0.1],[0.5,1.3,0.1],[0.5,1.7,-0.1],[0.5,1.3,-0.1],[0.5,1.7,-0.1],[0.5,1.3,0.1],[0.5,1.3,-0.1],[0.5,1.3,0.1],[0.5,1.7,0.1],[0.5,1.7,-0.1],[0.5,1.7,0.1],[0.5,1.3,0.1],[0.5,1.7,-0.1]]}

View file

@ -0,0 +1 @@
{"aabb_max":[1.0,3.0,0.1],"aabb_min":[-1.0,0.0,-0.1],"dreiecke":72,"oid":"bau_wand_tuer","quelle_glb":"res://assets/objekte/military_desert/bauteile/bau_wand_tuer.glb","vertices":[[-0.6,0.0,0.1],[-1.0,2.2,0.1],[-0.6,2.2,0.1],[-1.0,2.2,0.1],[-0.6,0.0,0.1],[-0.6,2.2,0.1],[-1.0,2.2,-0.1],[-0.6,0.0,-0.1],[-0.6,2.2,-0.1],[-0.6,0.0,-0.1],[-1.0,2.2,-0.1],[-0.6,2.2,-0.1],[-1.0,2.2,0.1],[-0.6,0.0,0.1],[-1.0,0.0,0.1],[-0.6,0.0,0.1],[-1.0,2.2,0.1],[-1.0,0.0,0.1],[-0.6,0.0,-0.1],[-1.0,2.2,-0.1],[-1.0,0.0,-0.1],[-1.0,2.2,-0.1],[-0.6,0.0,-0.1],[-1.0,0.0,-0.1],[-0.6,2.2,0.1],[-1.0,3.0,0.1],[-0.6,3.0,0.1],[-1.0,3.0,0.1],[-0.6,2.2,0.1],[-0.6,3.0,0.1],[-1.0,3.0,-0.1],[-0.6,2.2,-0.1],[-0.6,3.0,-0.1],[-0.6,2.2,-0.1],[-1.0,3.0,-0.1],[-0.6,3.0,-0.1],[-1.0,3.0,0.1],[-0.6,2.2,0.1],[-1.0,2.2,0.1],[-0.6,2.2,0.1],[-1.0,3.0,0.1],[-1.0,2.2,0.1],[-0.6,2.2,-0.1],[-1.0,3.0,-0.1],[-1.0,2.2,-0.1],[-1.0,3.0,-0.1],[-0.6,2.2,-0.1],[-1.0,2.2,-0.1],[0.6,2.2,0.1],[-0.6,3.0,0.1],[0.6,3.0,0.1],[-0.6,3.0,0.1],[0.6,2.2,0.1],[0.6,3.0,0.1],[-0.6,3.0,-0.1],[0.6,2.2,-0.1],[0.6,3.0,-0.1],[0.6,2.2,-0.1],[-0.6,3.0,-0.1],[0.6,3.0,-0.1],[-0.6,3.0,0.1],[0.6,2.2,0.1],[-0.6,2.2,0.1],[0.6,2.2,0.1],[-0.6,3.0,0.1],[-0.6,2.2,0.1],[0.6,2.2,-0.1],[-0.6,3.0,-0.1],[-0.6,2.2,-0.1],[-0.6,3.0,-0.1],[0.6,2.2,-0.1],[-0.6,2.2,-0.1],[1.0,0.0,0.1],[0.6,2.2,0.1],[1.0,2.2,0.1],[0.6,2.2,0.1],[1.0,0.0,0.1],[1.0,2.2,0.1],[0.6,2.2,-0.1],[1.0,0.0,-0.1],[1.0,2.2,-0.1],[1.0,0.0,-0.1],[0.6,2.2,-0.1],[1.0,2.2,-0.1],[0.6,2.2,0.1],[1.0,0.0,0.1],[0.6,0.0,0.1],[1.0,0.0,0.1],[0.6,2.2,0.1],[0.6,0.0,0.1],[1.0,0.0,-0.1],[0.6,2.2,-0.1],[0.6,0.0,-0.1],[0.6,2.2,-0.1],[1.0,0.0,-0.1],[0.6,0.0,-0.1],[1.0,2.2,0.1],[0.6,3.0,0.1],[1.0,3.0,0.1],[0.6,3.0,0.1],[1.0,2.2,0.1],[1.0,3.0,0.1],[0.6,3.0,-0.1],[1.0,2.2,-0.1],[1.0,3.0,-0.1],[1.0,2.2,-0.1],[0.6,3.0,-0.1],[1.0,3.0,-0.1],[0.6,3.0,0.1],[1.0,2.2,0.1],[0.6,2.2,0.1],[1.0,2.2,0.1],[0.6,3.0,0.1],[0.6,2.2,0.1],[1.0,2.2,-0.1],[0.6,3.0,-0.1],[0.6,2.2,-0.1],[0.6,3.0,-0.1],[1.0,2.2,-0.1],[0.6,2.2,-0.1],[-1.0,0.0,-0.1],[-1.0,3.0,0.1],[-1.0,0.0,0.1],[-1.0,3.0,0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[-1.0,0.0,-0.1],[-1.0,3.0,-0.1],[-1.0,3.0,0.1],[-1.0,3.0,-0.1],[-1.0,0.0,-0.1],[-1.0,3.0,0.1],[1.0,0.0,0.1],[1.0,3.0,-0.1],[1.0,0.0,-0.1],[1.0,3.0,-0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[1.0,3.0,0.1],[1.0,3.0,-0.1],[1.0,3.0,0.1],[1.0,0.0,0.1],[1.0,3.0,-0.1],[-1.0,3.0,0.1],[1.0,3.0,-0.1],[1.0,3.0,0.1],[1.0,3.0,-0.1],[-1.0,3.0,0.1],[1.0,3.0,0.1],[-1.0,3.0,0.1],[-1.0,3.0,-0.1],[1.0,3.0,-0.1],[-1.0,3.0,-0.1],[-1.0,3.0,0.1],[1.0,3.0,-0.1],[-1.0,0.0,-0.1],[1.0,0.0,0.1],[1.0,0.0,-0.1],[1.0,0.0,0.1],[-1.0,0.0,-0.1],[1.0,0.0,-0.1],[-1.0,0.0,-0.1],[-1.0,0.0,0.1],[1.0,0.0,0.1],[-1.0,0.0,0.1],[-1.0,0.0,-0.1],[1.0,0.0,0.1],[0.6,2.2,0.1],[-0.6,2.2,-0.1],[0.6,2.2,-0.1],[-0.6,2.2,-0.1],[0.6,2.2,0.1],[0.6,2.2,-0.1],[0.6,2.2,0.1],[-0.6,2.2,0.1],[-0.6,2.2,-0.1],[-0.6,2.2,0.1],[0.6,2.2,0.1],[-0.6,2.2,-0.1],[-0.6,2.2,0.1],[-0.6,0.0,-0.1],[-0.6,2.2,-0.1],[-0.6,0.0,-0.1],[-0.6,2.2,0.1],[-0.6,2.2,-0.1],[-0.6,2.2,0.1],[-0.6,0.0,0.1],[-0.6,0.0,-0.1],[-0.6,0.0,0.1],[-0.6,2.2,0.1],[-0.6,0.0,-0.1],[-0.6,0.0,0.1],[0.6,0.0,-0.1],[-0.6,0.0,-0.1],[0.6,0.0,-0.1],[-0.6,0.0,0.1],[-0.6,0.0,-0.1],[-0.6,0.0,0.1],[0.6,0.0,0.1],[0.6,0.0,-0.1],[0.6,0.0,0.1],[-0.6,0.0,0.1],[0.6,0.0,-0.1],[0.6,0.0,0.1],[0.6,2.2,-0.1],[0.6,0.0,-0.1],[0.6,2.2,-0.1],[0.6,0.0,0.1],[0.6,0.0,-0.1],[0.6,0.0,0.1],[0.6,2.2,0.1],[0.6,2.2,-0.1],[0.6,2.2,0.1],[0.6,0.0,0.1],[0.6,2.2,-0.1]]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show more