diff --git a/src/main.js b/src/main.js index 2e73918..dad4b1e 100644 --- a/src/main.js +++ b/src/main.js @@ -8,6 +8,7 @@ import { createMaterials } from "./world/materials.js"; import { createSky } from "./world/sky.js"; import { createSunShadows } from "./world/shadows.js"; import { PropLayer } from "./world/props.js"; +import { PlaceLayer } from "./world/places.js"; import { chunkForWorld, threeToWorld } from "./world/coords.js"; import { createCharacterModule } from "./characters/index.js"; import { activeVehicleOrNull, playerIsGrounded, playerPosition } from "./player.js"; @@ -236,6 +237,9 @@ await props.load(); // endlose Fall-Auffang-Schleife laufen, sobald der Chunk dauerhaft ausbleibt. Nach 15s gibt // es nur noch eine einmalige Warnung, kein Verhaltenswechsel. const streamer = new ChunkStreamer({ scene, player, materials, props, pinned: VEHICLE_PINNED_CHUNKS }); +// Fest platzierte Modelle aus three-d-stage (src/world/places.js). Eigene Radien, damit ein Ort nur in +// der Szene ist, solange die Chunks unter ihm geladen sind. +const places = new PlaceLayer({ scene, player }); player.setSkipCapsuleCollision(true); let settled = false; let warnedSlowSpawn = false; @@ -250,6 +254,7 @@ function tick(delta) { // Sitzplatz-Offset, nicht die Weltposition (Begründung in src/player.js). Ohne diese // Umstellung hört das Streaming beim Fahren auf nachzuladen. streamer.update(playerPosition(player)); + places.update(playerPosition(player)); if (!settled) { // Ein Sprung vor dem ersten Boden — Karte und Panel sind schon vor props.load() bedienbar — // ersetzt den Spawn als Startpunkt, statt beim Einrasten stillschweigend verloren zu gehen.