Files
webeditor3d/src/core/selection.ts

31 lines
784 B
TypeScript
Raw Normal View History

export type EditorSelection =
| { kind: "none" }
| { kind: "brushes"; ids: string[] }
| { kind: "entities"; ids: string[] }
| { kind: "modelInstances"; ids: string[] };
export function cloneEditorSelection(selection: EditorSelection): EditorSelection {
if (selection.kind === "none") {
return {
kind: "none"
};
}
return {
kind: selection.kind,
ids: [...selection.ids]
};
}
export function getSingleSelectedBrushId(selection: EditorSelection): string | null {
if (selection.kind !== "brushes" || selection.ids.length !== 1) {
return null;
}
return selection.ids[0];
}
export function isBrushSelected(selection: EditorSelection, brushId: string): boolean {
return selection.kind === "brushes" && selection.ids.includes(brushId);
}