|
|
|
@ -6,6 +6,7 @@ import { Line2 } from 'three/examples/jsm/lines/Line2.js' |
|
|
|
import { LineGeometry } from 'three/examples/jsm/lines/LineGeometry.js' |
|
|
|
import { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js' |
|
|
|
import { getItemTypeByName } from '@/model/itemType/ItemTypeDefine.ts' |
|
|
|
import EventBus from '@/runtime/EventBus' |
|
|
|
|
|
|
|
let pdFn, pmFn, puFn |
|
|
|
|
|
|
|
@ -62,7 +63,16 @@ export default class SelectInspect implements ITool { |
|
|
|
puFn = this.onMouseUp.bind(this) |
|
|
|
this.canvas.addEventListener('pointerup', puFn) |
|
|
|
|
|
|
|
this.viewport.watchList.push(watch(() => this.viewport.state.selectedObject, (selectedObject) => { |
|
|
|
this.viewport.watchList.push(watch(() => this.viewport.state.selectedObject, this.updateSelectionBox.bind(this))) |
|
|
|
EventBus.$on('objectChanged', (data) => { |
|
|
|
this.updateSelectionBox(this.viewport.state.selectedObject) |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 更新选中对象的包围盒线框 |
|
|
|
*/ |
|
|
|
updateSelectionBox(selectedObject: THREE.Object3D) { |
|
|
|
this.disposeSelectionBox() |
|
|
|
this.viewport.state.selectedObjectMeta = null // 清除之前的元数据
|
|
|
|
|
|
|
|
@ -73,7 +83,6 @@ export default class SelectInspect implements ITool { |
|
|
|
this.viewport.state.selectedObjectMeta = itemTypeDefine.getMeta(selectedObject) |
|
|
|
|
|
|
|
const expandAmount = 0.2 // 扩展包围盒的大小
|
|
|
|
|
|
|
|
// 避免某些蒙皮网格的帧延迟效应(e.g. Michelle.glb)
|
|
|
|
selectedObject.updateWorldMatrix(false, true) |
|
|
|
|
|
|
|
@ -105,9 +114,6 @@ export default class SelectInspect implements ITool { |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
})) |
|
|
|
} |
|
|
|
|
|
|
|
destory() { |
|
|
|
|