Browse Source

cl2 接入amr指令

master
yuliang 6 months ago
parent
commit
fb4e1b021f
  1. 15
      src/core/manager/EntityManager.ts
  2. 7
      src/core/script/ModelManager.ts
  3. 6
      src/modules/cl2/Cl23dObject.ts
  4. 2
      src/modules/cl2/Cl2Entity.ts
  5. 7
      src/types/ScriptSupport.d.ts

15
src/core/manager/EntityManager.ts

@ -504,6 +504,21 @@ export default class EntityManager {
return this.___entityMap.get(linkStartPointId)
}
findItemByLogicXY(logicX: number, logicY: number): ItemJson | undefined {
if (logicX < 0 || logicY < 0) {
return
}
let item: ItemJson | undefined = undefined
this.___entityMap.forEach((value) => {
if (value.logicX === logicX && value.logicY === logicY) {
item = value
return
}
})
return item
}
getObjectByCanvasMouse(event: MouseEvent): Object3DLike[] {
const _domElement = this.viewport.renderer.domElement
const rect = _domElement.getBoundingClientRect()

7
src/core/script/ModelManager.ts

@ -81,6 +81,13 @@ export default class ModelManager implements IControls, Model {
matrix.decompose(position, new THREE.Quaternion(), new THREE.Vector3())
return position
}
getPositionByLogicXY(logicX: number, logicY: number): THREE.Vector3 {
const item = this.viewport.entityManager.findItemByLogicXY(logicX, logicY)
const matrix = getMatrixFromTf(item.tf)
const position = new THREE.Vector3()
matrix.decompose(position, new THREE.Quaternion(), new THREE.Vector3())
return position
}
dispose() {
this.viewport = null as any

6
src/modules/cl2/Cl23dObject.ts

@ -516,8 +516,12 @@ export default class Cl23dObject extends THREE.Object3D {
if (data.id === 10010) {
const cl2: Cl2Entity = Model.getCl2("10") as Cl2Entity
cl2.addRobotTask(data)
cl2.taskStartRun()
this.fn(cl2)
}
}
fn = _.debounce((cl2: Cl2Entity) => {
cl2.taskStartRun()
}, 2000)
}

2
src/modules/cl2/Cl2Entity.ts

@ -47,7 +47,7 @@ export default class Cl2Entity extends BaseEntity {
() => this.cl2Object.addRotation(moveDirection * Math.PI/2)
))
this.taskQueue.add(this.createTask('TRAVEL',
() => this.cl2Object.addTravel(Model.getPositionByEntityId(link.id) ,Math.abs(link.Speed/1000))
() => this.cl2Object.addTravel(Model.getPositionByLogicXY(link.X, link.Y) ,Math.abs(link.Speed/1000))
))
startX = link.X
startY = link.Y

7
src/types/ScriptSupport.d.ts

@ -1,3 +1,5 @@
import * as THREE from "three";
/**
* API
*/
@ -14,6 +16,11 @@ declare interface Model {
getPositionByEntityId(entityId: string): Vector3IF
/**
*
*/
getPositionByLogicXY(logicX: number, logicY: number): THREE.Vector3
/**
* ID获取 CL2
*/
getCl2(id: string): Cl2If

Loading…
Cancel
Save