rewrite selection system

This commit is contained in:
wass08
2026-01-21 08:00:31 +09:00
parent bc8293b120
commit a338bea4e7
11 changed files with 118 additions and 30 deletions
+6 -5
View File
@@ -73,25 +73,26 @@ const useEditor = create<EditorState>()((set, get) => ({
switch (phase) {
case "site":
// In Site mode, we zoom out and deselect specific levels/buildings
viewer.setCurrentBuildingId(null);
viewer.setCurrentLevelId(null);
viewer.resetSelection();
viewer.setLevelMode("stacked");
break;
case "structure":
// In Structure mode, we often want to focus on a specific building/level
// Auto-select the first building if none is selected
if (!viewer.currentBuildingId) {
if (!viewer.selection.buildingId) {
const firstBuildingId = scene.rootNodeIds.find((id) => {
const node = scene.nodes[id];
return node?.type === "building" || null;
});
if (firstBuildingId) {
viewer.setCurrentBuildingId(firstBuildingId as BuildingNode["id"]);
viewer.setSelection({
buildingId: firstBuildingId as BuildingNode["id"],
});
const buildingNode = scene.nodes[firstBuildingId] as BuildingNode;
const firstLevelId = buildingNode.children[0];
if (firstLevelId) {
viewer.setCurrentLevelId(firstLevelId as LevelNode["id"]);
viewer.setSelection({ levelId: firstLevelId as LevelNode["id"] });
}
}
}