From fea716d693ca97325864a7f023b5f4f24b1eaaf0 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Wed, 13 May 2026 01:14:35 +0200 Subject: [PATCH] Implement road surface render object state update logic --- src/viewport-three/viewport-host.ts | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/viewport-three/viewport-host.ts b/src/viewport-three/viewport-host.ts index 33dc620b..a8f12bd1 100644 --- a/src/viewport-three/viewport-host.ts +++ b/src/viewport-three/viewport-host.ts @@ -7368,6 +7368,37 @@ export class ViewportHost { this.applyShadowState(); } + private updateRoadSurfaceRenderObjectState(path: ScenePath) { + const existingRenderObjects = this.roadSurfaceRenderObjects.get(path.id); + + if (existingRenderObjects !== undefined) { + this.roadSurfaceGroup.remove(existingRenderObjects.mesh); + existingRenderObjects.mesh.geometry.dispose(); + existingRenderObjects.mesh.material.dispose(); + this.roadSurfaceRenderObjects.delete(path.id); + } + + if (this.currentDocument === null) { + return; + } + + const terrains = getTerrains(this.currentDocument.terrains).filter( + (terrain) => terrain.enabled + ); + const nextRenderObjects = this.createRoadSurfaceRenderObjects( + path, + terrains + ); + + if (nextRenderObjects === null) { + return; + } + + this.roadSurfaceGroup.add(nextRenderObjects.mesh); + this.roadSurfaceRenderObjects.set(path.id, nextRenderObjects); + this.applyShadowState(); + } + private rebuildTerrains( document: SceneDocument, _selection: EditorSelection,