From 104306b4a07d9d55f9072eb9a6486ae409bda75b Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Wed, 13 May 2026 03:39:32 +0200 Subject: [PATCH] Implement equality checks for scene path repeaters --- src/document/paths.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/document/paths.ts b/src/document/paths.ts index 299f050e..d83dda6b 100644 --- a/src/document/paths.ts +++ b/src/document/paths.ts @@ -1186,6 +1186,31 @@ export function cloneScenePath(path: ScenePath): ScenePath { return createScenePath(path); } +function areScenePathRepeatersEqual( + left: ScenePathRepeater, + right: ScenePathRepeater +): boolean { + return ( + left.id === right.id && + left.name === right.name && + left.enabled === right.enabled && + left.assetId === right.assetId && + left.placement === right.placement && + left.offset === right.offset && + left.spacing === right.spacing && + left.startInset === right.startInset && + left.endInset === right.endInset && + left.scale === right.scale && + left.randomScale === right.randomScale && + left.randomYawDegrees === right.randomYawDegrees && + left.yawOffsetDegrees === right.yawOffsetDegrees && + left.terrainConform === right.terrainConform && + left.heightOffset === right.heightOffset && + left.alignToSpline === right.alignToSpline && + left.seed === right.seed + ); +} + export function areScenePathsEqual(left: ScenePath, right: ScenePath): boolean { return ( left.id === right.id && @@ -1215,6 +1240,10 @@ export function areScenePathsEqual(left: ScenePath, right: ScenePath): boolean { left.road.edges.right.width === right.road.edges.right.width && left.road.edges.right.height === right.road.edges.right.height && left.road.edges.right.materialId === right.road.edges.right.materialId && + left.repeaters.length === right.repeaters.length && + left.repeaters.every((repeater, index) => + areScenePathRepeatersEqual(repeater, right.repeaters[index]!) + ) && left.points.length === right.points.length && left.points.every( (point, index) =>