UNPKG

@turbox3d/design-engine

Version:

Large-scale design application engine library

70 lines (69 loc) 2.75 kB
import { Command } from '@turbox3d/command-manager'; import { ViewEntity, SceneEvent } from '@turbox3d/event-manager'; import EntityObject from '../entity-object'; import HintCommand from '../hint-command/index'; export declare enum ESelectMode { /** 选择整体 */ OVERALL = "overall", /** 选择部件 */ PART = "part", /** 默认模式(无视层级,选中哪个部件就是哪个) */ DEFAULT = "default" } declare enum EClickAction { CLICK = "click", DOUBLE_CLICK = "double-click" } interface ISelectCommandParams { /** 选择模式 */ selectMode?: ESelectMode; /** 可选中的 entity 类型 */ selectEntityTypes?: symbol[]; /** hint command 实例,select 与 hint 同时启用时需要传入 */ hint?: HintCommand; /** 选中的回调 */ onSelectHandler?: (models: EntityObject[]) => void; /** 取消选中的回调 */ onUnselectHandler?: (models: EntityObject[]) => void; } export declare class SelectionCommand extends Command { static ESelectMode: typeof ESelectMode; private selection; private targetRootEntity?; private hint?; private modeMap; /** 获取被选中的 entities */ getSelectedEntities(): EntityObject[]; /** 切换选择模式 */ switchSelectMode(selectMode: ESelectMode): void; /** 获取当前选择模式 */ getSelectMode(): ESelectMode; /** * 设置事件的多选状态,每次事件行为都会根据此状态判断是否为多选行为 * * 注意:每次选择事件之前都需要设置,因为事件完成后状态会被清除,这只在需要自定义多选按键/状态的情况下才会用到(默认情况下按 shift 会设置) */ setMultiSelect(isMultiple: boolean): void; /** 选中指定模型 */ select(models: EntityObject[], clearExisted?: boolean): void; /** 取消选中指定模型 */ unselect(models: EntityObject[]): void; /** 清除已选中模型 */ clearAllSelected(): void; /** 设置选中层级深度 */ setLayerDepth(depth: number): void; /** 获取选中层级深度 */ getLayerDepth(): number; /** 设置可选中的 entity 类型 */ setSelectEntityTypes(types?: symbol[]): void; /** 获取可选中的 entity 类型 */ getSelectEntityTypes(): symbol[] | undefined; onSelectHandler: (models: EntityObject[]) => void; onUnselectHandler: (models: EntityObject[]) => void; active(params?: ISelectCommandParams): void; protected onClick(viewEntity: ViewEntity, event: SceneEvent): void; protected onDBClick(viewEntity: ViewEntity): void; /** 选中实体通用逻辑 */ selectHandler(viewEntity: ViewEntity, action: EClickAction): void; } export {};