6.4 KiB
6.4 KiB
| outline | ||
|---|---|---|
|
SelectionManager
- 源文件:
packages/sdk/src/manager/SelectionManager.ts - 文档位置:
packages/docs/api/manager/SelectionManager.md
类:SelectionManager
- 作用:选择管理器 用于管理场景中物体的选择状态
- 继承/实现:
extends Emittery<SelectionManagerEventMap>
构造函数
new SelectionManager(viewer: Viewer)
-
作用:构造函数
-
入参:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
viewer |
Viewer |
是 | - Viewer 实例 |
- 出参:
SelectionManager - 返回说明:返回当前类实例。
属性
| 属性名 | 可见性 | 类型 | 作用 |
|---|---|---|---|
selectedObject |
public |
Object3D | null |
当前被选中的场景对象。 |
scene |
public |
Scene |
用于保存 scene 对应的数据。 |
eventManager |
public |
EventManager |
用于统一管理 eventManager 相关能力。 |
viewer |
public |
Viewer |
用于保存 viewer 对应的数据。 |
selectionBox |
public |
Box3Helper |
用于显示选中包围盒的辅助对象。 |
box |
public |
Box3 |
复用的包围盒计算对象。 |
camera |
public |
Camera |
用于保存 camera 对应的数据。 |
sceneHelpers |
public |
Scene |
用于保存 sceneHelpers 对应的数据。 |
transformControls |
public |
TransformControls |
用于保存 transformControls 对应的数据。 |
objectPositionOnDown |
public |
Vector3 |
用于保存 objectPositionOnDown 对应的数据。 |
objectRotationOnDown |
public |
Euler |
用于保存 objectRotationOnDown 对应的数据。 |
objectScaleOnDown |
public |
Vector3 |
用于保存 objectScaleOnDown 对应的数据。 |
访问器
get isControl(): boolean
-
作用:获取 is Control。
-
入参:无
-
出参:
boolean -
返回说明:返回布尔结果。
set isControl(value: boolean)
-
作用:设置 is Control。
-
入参:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
value |
boolean |
是 | 要写入的新值。 |
- 出参:
void - 返回说明:无返回值。
方法
init(): void
-
作用:初始化选择管理器
-
入参:无
-
出参:
void -
返回说明:无返回值。
initSelectionBox(): void
-
作用:执行 init Selection Box 初始化逻辑。
-
入参:无
-
出参:
void -
返回说明:无返回值。
initTransformControls(): void
-
作用:执行 init Transform Controls 初始化逻辑。
-
入参:无
-
出参:
void -
返回说明:无返回值。
startControl(): void
-
作用:执行 start Control 相关逻辑。
-
入参:无
-
出参:
void -
返回说明:无返回值。
endControl(): void
-
作用:执行 end Control 相关逻辑。
-
入参:无
-
出参:
void -
返回说明:无返回值。
setSelectedObject(object: Object3D | null | undefined): void
-
作用:设置选择的物体
-
入参:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
object |
Object3D | null | undefined |
是 | - 要选择的物体 |
- 出参:
void - 返回说明:无返回值。
clearSelection(): void
-
作用:取消选择
-
入参:无
-
出参:
void -
返回说明:无返回值。
selectObjectByUuid(uuid: string): void
-
作用:通过 UUID 设置选择的模型
-
入参:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
uuid |
string |
是 | - 模型的 UUID |
- 出参:
void - 返回说明:无返回值。
getSelectedObject(): Object3D<Object3DEventMap> | null
-
作用:获取当前选中的物体
-
入参:无
-
出参:
Object3D<Object3DEventMap> \| null -
返回说明:当前选中的物体,如果没有选中则返回 null
setTransformMode(mode: 'translate' | 'rotate' | 'scale'): void
-
作用:设置控制模式
-
入参:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
mode |
'translate' | 'rotate' | 'scale' |
是 | 控制模式:'translate', 'rotate', 'scale' |
- 出参:
void - 返回说明:无返回值。
getControlledObject(): Object3D<Object3DEventMap> | null
-
作用:获取当前被控制的模型
-
入参:无
-
出参:
Object3D<Object3DEventMap> \| null -
返回说明:返回
Object3D<Object3DEventMap> | null。
connect(domElement: HTMLElement): void
-
作用:连接到渲染器的 DOM 元素
-
入参:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
domElement |
HTMLElement |
是 | 渲染器的 DOM 元素 |
- 出参:
void - 返回说明:无返回值。
setSpace(space: 'world' | 'local'): void
-
作用:设置变换空间
-
入参:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
space |
'world' | 'local' |
是 | 空间:'world' 或 'local' |
- 出参:
void - 返回说明:无返回值。
setTranslationSnap(snap: number): void
-
作用:设置平移捕捉
-
入参:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
snap |
number |
是 | 捕捉距离 |
- 出参:
void - 返回说明:无返回值。
dispose(): void
-
作用:销毁选择管理器
-
入参:无
-
出参:
void -
返回说明:无返回值。
构造示例
- 当前 Demo 中没有直接展示
SelectionManager的构造调用。
函数示例
SelectionManager.setSelectedObject
- 来源:
packages/demo/src/hooks/useDebug.ts
// 派发树更新
bus.triggerSceneTreeUpdate()
// 选择对象
viewer!.selection!.setSelectedObject(box);
},
exportSceneJSON: () => {
viewer.downloadSceneJSON();
}
};
SelectionManager.selectObjectByUuid
- 来源:
packages/demo/src/components/SceneTree.vue
if (bus.viewer && bus.viewer.selection) {
bus.viewer.selection.selectObjectByUuid(option.uuid);
}
},
}
}
SelectionManager.setTransformMode
- 来源:
packages/demo/src/hooks/useDebug.ts
// 控制模式
controlFolder.add(controlParams, 'controlMode', ['translate', 'rotate', 'scale']).name('控制模式')
.onChange((value) => {
viewer.selection.setTransformMode(value as 'translate' | 'rotate' | 'scale');
});