From 8576193b147afa9ae402a8d6934d3a51cb35f028 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 27 Apr 2026 00:29:00 +0200 Subject: [PATCH] Implement collection logic for transform preview target IDs --- src/viewport-three/viewport-host.ts | 50 +++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/viewport-three/viewport-host.ts b/src/viewport-three/viewport-host.ts index 123602dd..b6231f01 100644 --- a/src/viewport-three/viewport-host.ts +++ b/src/viewport-three/viewport-host.ts @@ -522,6 +522,56 @@ function collectAffectedSelectionIds( return affectedIds; } +function createTransformPreviewTargetIds(): TransformPreviewTargetIds { + return { + brushIds: new Set(), + pathIds: new Set(), + entityIds: new Set(), + modelInstanceIds: new Set() + }; +} + +function collectTransformPreviewTargetIds( + transformSession: ActiveTransformSession +): TransformPreviewTargetIds { + const targetIds = createTransformPreviewTargetIds(); + + switch (transformSession.target.kind) { + case "brush": + case "brushFace": + case "brushEdge": + case "brushVertex": + targetIds.brushIds.add(transformSession.target.brushId); + break; + case "brushes": + for (const item of transformSession.target.items) { + targetIds.brushIds.add(item.brushId); + } + break; + case "pathPoint": + targetIds.pathIds.add(transformSession.target.pathId); + break; + case "entity": + targetIds.entityIds.add(transformSession.target.entityId); + break; + case "entities": + for (const item of transformSession.target.items) { + targetIds.entityIds.add(item.entityId); + } + break; + case "modelInstance": + targetIds.modelInstanceIds.add(transformSession.target.modelInstanceId); + break; + case "modelInstances": + for (const item of transformSession.target.items) { + targetIds.modelInstanceIds.add(item.modelInstanceId); + } + break; + } + + return targetIds; +} + interface CachedMaterialTexture { signature: string; textureSet: StarterMaterialTextureSet;