@turbox3d/design-engine
Version:
Large-scale design application engine library
70 lines (69 loc) • 2.75 kB
TypeScript
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 {};