From 68574be1b3e74bb869f247bf508439a4e9035a31 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Wed, 13 May 2026 03:44:03 +0200 Subject: [PATCH] Integrate SplineRepeaterRenderer into ViewportHost lifecycle --- src/viewport-three/viewport-host.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/viewport-three/viewport-host.ts b/src/viewport-three/viewport-host.ts index bd747e64..f2ca4dd2 100644 --- a/src/viewport-three/viewport-host.ts +++ b/src/viewport-three/viewport-host.ts @@ -92,6 +92,7 @@ import { syncModelInstanceSelectionShell } from "../assets/model-instance-rendering"; import { FoliageInstancedRenderer } from "../foliage/foliage-instanced-renderer"; +import { SplineRepeaterRenderer } from "../spline-corridor/spline-repeater-renderer"; import type { LoadedModelAsset } from "../assets/gltf-model-import"; import type { LoadedImageAsset } from "../assets/image-assets"; import type { ProjectAssetRecord } from "../assets/project-assets"; @@ -919,6 +920,11 @@ export class ViewportHost { private readonly brushGroup = new Group(); private readonly terrainGroup = new Group(); private readonly roadSurfaceGroup = new Group(); + private readonly splineRepeaterRenderer = new SplineRepeaterRenderer({ + onRebuilt: () => { + this.applyShadowState(); + } + }); private readonly terrainBrushPreviewGroup = new Group(); private readonly terrainBrushPreviewLine = new Line( new BufferGeometry(), @@ -1175,6 +1181,7 @@ export class ViewportHost { this.scene.add(this.brushGroup); this.scene.add(this.terrainGroup); this.scene.add(this.roadSurfaceGroup); + this.scene.add(this.splineRepeaterRenderer.group); this.scene.add(this.foliageRenderer.group); this.syncFoliageVisibility(); this.terrainBrushPreviewGroup.visible = false; @@ -1496,6 +1503,7 @@ export class ViewportHost { ); } this.rebuildRoadSurfaces(document); + this.rebuildSplineRepeaters(document); this.rebuildFoliage(document); this.rebuildPaths(document, this.currentSelection); this.rebuildEntityMarkers(document, this.currentSelection); @@ -1960,6 +1968,7 @@ export class ViewportHost { this.clearBrushMeshes(); this.clearTerrains(); this.clearRoadSurfaces(); + this.splineRepeaterRenderer.dispose(); this.foliageRenderer.dispose(); this.clearPaths(); this.clearEntityMarkers();