Refactor junction material handling to use MaterialDef

This commit is contained in:
2026-05-13 13:22:53 +02:00
parent 96aee46ab4
commit dd04f95c35
2 changed files with 10 additions and 9 deletions

View File

@@ -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;

View File

@@ -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),