Browse Source

InstancePointManager / LineSegmentManager 重构

master
修宁 6 months ago
parent
commit
4731a28ddf
  1. 2
      src/core/Constract.ts
  2. 10
      src/core/manager/InstancePointManager.ts
  3. 12
      src/core/manager/LabelManager.ts

2
src/core/Constract.ts

@ -33,6 +33,6 @@ const Constract = Object.freeze({
HEIGHT_WAY_LABEL: 0.03,
HEIGHT_WAY_LINE: 0.02,
MAX_MEASURE_INSTANCES: 1000,
MAX_MEASURE_INSTANCES: 20000,
})
export default Constract

10
src/core/manager/InstancePointManager.ts

@ -146,18 +146,12 @@ export default class InstancePointManager {
viewport: Viewport,
geometry: THREE.BufferGeometry,
material: THREE.Material,
maxInstances: number = 1000
maxInstances: number = 20000
): InstancePointManager {
return new InstancePointManager(name, viewport, geometry, material, maxInstances)
}
private constructor(
name: string,
viewport: Viewport,
geometry: THREE.BufferGeometry,
material: THREE.Material,
maxInstances: number = 1000
) {
private constructor(name: string, viewport: Viewport, geometry: THREE.BufferGeometry, material: THREE.Material, maxInstances: number) {
this.viewport = viewport
this.geometry = geometry
this.material = material

12
src/core/manager/LabelManager.ts

@ -36,9 +36,13 @@ export interface LabelOption {
export default class LabelManager implements IControls {
viewport: Viewport
private labelMap: Map<string, Text | CSS2DObject> = new Map()
private labelGroup: THREE.Group
init(viewport: Viewport): void {
this.viewport = viewport
this.labelGroup = new THREE.Group()
this.labelGroup.visible = false
this.viewport.scene.add(this.labelGroup)
}
createOrUpdateLabelByDistance(lineRef: Object3DLike, startPos: THREE.Vector3, endPos: THREE.Vector3, option: LabelOption): Text | CSS2DObject {
@ -64,7 +68,7 @@ export default class LabelManager implements IControls {
const labelObj = this.createLabelObject(option)
parentObj.userData.labelObjectId = labelObj.uuid
this.viewport.scene.add(labelObj)
this.labelGroup.add(labelObj)
if (labelObj instanceof CSS2DObject) {
labelObj.element.innerHTML = option.text
@ -99,7 +103,7 @@ export default class LabelManager implements IControls {
if (parentObj?.userData?.labelObjectId) {
const labelObj = this.labelMap.get(parentObj.userData.labelObjectId)
this.labelMap.delete(labelObj.uuid)
this.viewport.scene.remove(labelObj)
this.labelGroup.remove(labelObj)
labelObj.dispose()
parentObj.userData.labelObjectId = undefined
}
@ -108,7 +112,7 @@ export default class LabelManager implements IControls {
removeById(id: string): void {
const labelObj = this.labelMap.get(id)
if (labelObj) {
this.viewport.scene.remove(labelObj)
this.labelGroup.remove(labelObj)
this.labelMap.delete(id)
labelObj.dispose()
}
@ -160,6 +164,8 @@ export default class LabelManager implements IControls {
dispose(): void {
// 清理资源
this.viewport.scene.remove(this.labelGroup)
this.labelGroup.clear()
this.viewport = undefined
}

Loading…
Cancel
Save