From dd04f95c35cd9e7ca1170754406741fe25f2b3df Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Wed, 13 May 2026 13:22:53 +0200 Subject: [PATCH] Refactor junction material handling to use MaterialDef --- src/runtime-three/runtime-host.ts | 10 ++-------- src/runtime-three/runtime-scene-build.ts | 9 ++++++++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/runtime-three/runtime-host.ts b/src/runtime-three/runtime-host.ts index de8afaa0..d42737ea 100644 --- a/src/runtime-three/runtime-host.ts +++ b/src/runtime-three/runtime-host.ts @@ -4336,14 +4336,8 @@ export class RuntimeHost { } private createRuntimeJunctionMaterial( - runtimeScene: RuntimeSceneDefinition, - materialId: string | null + material: MaterialDef | null ): Material { - const material = - materialId === null - ? null - : (runtimeScene.materials?.[materialId] ?? null); - return this.createRuntimeRoadGeneratedMaterial(material, 0x6f624d); } @@ -4427,7 +4421,7 @@ export class RuntimeHost { const mesh = new Mesh( geometry, - this.createRuntimeJunctionMaterial(runtimeScene, junction.materialId) + this.createRuntimeJunctionMaterial(junction.material) ); mesh.castShadow = false; mesh.receiveShadow = true; diff --git a/src/runtime-three/runtime-scene-build.ts b/src/runtime-three/runtime-scene-build.ts index d0c37274..13dca0c3 100644 --- a/src/runtime-three/runtime-scene-build.ts +++ b/src/runtime-three/runtime-scene-build.ts @@ -2057,7 +2057,14 @@ export function buildRuntimeSceneFromDocument( .map((path) => buildRuntimePath(path, enabledTerrains, document)); const splineCorridorJunctions = getSplineCorridorJunctions( document.splineCorridorJunctions - ).filter((junction) => junction.enabled); + ) + .filter((junction) => junction.enabled) + .map((junction): RuntimeSplineCorridorJunction => ({ + ...junction, + connections: junction.connections.map((connection) => ({ ...connection })), + center: cloneVec3(junction.center), + material: resolveRuntimeMaterial(document, junction.materialId) + })); const splineCorridorClipIntervalsByPath = resolveSplineCorridorJunctionClipIntervals({ paths: getScenePaths(document.paths),