diff --git a/src/runtime-three/runtime-host.ts b/src/runtime-three/runtime-host.ts index d7243637..cae5cbbc 100644 --- a/src/runtime-three/runtime-host.ts +++ b/src/runtime-three/runtime-host.ts @@ -4398,6 +4398,13 @@ export class RuntimeHost { this.applyShadowState(); } + private rebuildSplineRepeaters(runtimeScene: RuntimeSceneDefinition) { + this.splineRepeaterRenderer.sync({ + paths: runtimeScene.paths, + terrains: runtimeScene.foliage.terrains + }); + } + private createFogMaterialSet( brush: RuntimeBoxBrushInstance, volumeRenderPaths: { diff --git a/src/runtime-three/runtime-scene-build.ts b/src/runtime-three/runtime-scene-build.ts index 9b8e592b..80ade9c5 100644 --- a/src/runtime-three/runtime-scene-build.ts +++ b/src/runtime-three/runtime-scene-build.ts @@ -62,6 +62,7 @@ import { resolveScenePath, type ScenePath, type ScenePathCurveMode, + type ScenePathRepeater, type ScenePathRoadEdgeSettings, type ScenePathRoadSettings, type ScenePathPoint @@ -527,6 +528,7 @@ export interface RuntimePath { right: RuntimePathRoadEdgeSettings; }; }; + repeaters: ScenePathRepeater[]; points: RuntimePathPoint[]; segments: RuntimePathSegment[]; totalLength: number; @@ -1048,6 +1050,7 @@ function buildRuntimePath( } } }, + repeaters: path.repeaters.map((repeater) => ({ ...repeater })), points: resolvedPath.points.map(buildRuntimePathPoint), segments: resolvedPath.segments.map((segment) => ({ index: segment.index,