|
|
|
@ -19,9 +19,9 @@ import {worldModel} from '@/core/manager/WorldModel' |
|
|
|
import Viewport from '@/core/engine/Viewport' |
|
|
|
import { Euler } from 'three/src/math/Euler' |
|
|
|
import gsap from 'gsap' |
|
|
|
import {MeshWrap} from "@/core/manager/InstanceMeshManager"; |
|
|
|
import {getRenderer} from "@/core/manager/ModuleManager"; |
|
|
|
import {MathUtils} from "three"; |
|
|
|
import { MeshWrap } from '@/core/manager/InstanceMeshManager' |
|
|
|
import { getRenderer } from '@/core/manager/ModuleManager' |
|
|
|
import { MathUtils } from 'three' |
|
|
|
|
|
|
|
|
|
|
|
type CStepTaskType = 'MOVE' | 'MOVE_BACKWARD' | 'ROTATION' | 'LOAD' | 'UNLOAD' | 'CHARGE' |
|
|
|
@ -88,7 +88,7 @@ export default class PtrObject extends THREE.Object3D { |
|
|
|
private __TaskStatus: CEventId = 0 |
|
|
|
private __PickMode: CPickMode = 0 |
|
|
|
|
|
|
|
private agvStatusVo: AgvStatusVo; |
|
|
|
private agvStatusVo: AgvStatusVo |
|
|
|
|
|
|
|
// 是否模拟设备
|
|
|
|
private isMonitoring: boolean = false |
|
|
|
@ -172,9 +172,9 @@ export default class PtrObject extends THREE.Object3D { |
|
|
|
super() |
|
|
|
this.viewport = viewport |
|
|
|
this.item = item |
|
|
|
this.vehicleId = parseInt(item.id) |
|
|
|
this.vehicleId = parseInt(item.dt.vehicleId) |
|
|
|
|
|
|
|
this.viewport.addFrameTimerCallback(this.item.id, this.onFrameTimer.bind(this)) |
|
|
|
this.viewport.addFrameTimerCallback('' + this.vehicleId, this.onFrameTimer.bind(this)) |
|
|
|
window.agv3 = this |
|
|
|
} |
|
|
|
|
|
|
|
@ -223,9 +223,8 @@ export default class PtrObject extends THREE.Object3D { |
|
|
|
bootForShow() { |
|
|
|
this.isMonitoring = false |
|
|
|
this.boot() |
|
|
|
this.subscribeMessage('/wcs_server/' + this.item.id) |
|
|
|
this.subscribeMessage('/wcs_server/' + this.vehicleId) |
|
|
|
this.subscribeMessage('/agv_robot/status') |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
bootForMonitor() { |
|
|
|
@ -542,10 +541,10 @@ export default class PtrObject extends THREE.Object3D { |
|
|
|
|
|
|
|
this.position.set(p.x, 0, p.z) |
|
|
|
|
|
|
|
const transform = new Ammo.btTransform(); |
|
|
|
this.boxBody.getMotionState().getWorldTransform(transform); |
|
|
|
transform.setOrigin(new Ammo.btVector3(p.x, 0, p.z)); // 设置新位置
|
|
|
|
this.boxBody.getMotionState().setWorldTransform(transform); |
|
|
|
const transform = new Ammo.btTransform() |
|
|
|
this.boxBody.getMotionState().getWorldTransform(transform) |
|
|
|
transform.setOrigin(new Ammo.btVector3(p.x, 0, p.z)) // 设置新位置
|
|
|
|
this.boxBody.getMotionState().setWorldTransform(transform) |
|
|
|
this.viewport.ammoModel.destroy(transform) |
|
|
|
this.rotation.set(0, r, 0) |
|
|
|
} |
|
|
|
@ -877,6 +876,7 @@ export default class PtrObject extends THREE.Object3D { |
|
|
|
keepSpeed: any |
|
|
|
force: any |
|
|
|
stopD: number = 0.01 |
|
|
|
|
|
|
|
// 走
|
|
|
|
addTravel(logicX: number, logicY: number, direction: number, speed: number = 1): Promise<void> { |
|
|
|
|
|
|
|
@ -912,13 +912,13 @@ export default class PtrObject extends THREE.Object3D { |
|
|
|
this.keepSpeed.setValue(0, 0, speed) |
|
|
|
} |
|
|
|
|
|
|
|
if (this.viewport.registerPhysicsUpdateCallBack.has(this.item.id)) { |
|
|
|
if (this.viewport.registerPhysicsUpdateCallBack.has('' + this.vehicleId)) { |
|
|
|
return null |
|
|
|
} |
|
|
|
|
|
|
|
this.travelAnimation = 'asd' |
|
|
|
|
|
|
|
this.viewport.registerPhysicsUpdateCallBack.set(this.item.id, () => { |
|
|
|
this.viewport.registerPhysicsUpdateCallBack.set('' + this.vehicleId, () => { |
|
|
|
|
|
|
|
this.viewport.physicsWorld.stepSimulation(1 / 60, 10) |
|
|
|
|
|
|
|
@ -943,7 +943,8 @@ export default class PtrObject extends THREE.Object3D { |
|
|
|
const stopVel = new this.viewport.ammoModel.btVector3(0, 0, 0) |
|
|
|
this.boxBody.setLinearVelocity(stopVel) |
|
|
|
this.viewport.ammoModel.destroy(stopVel) |
|
|
|
this.viewport.registerPhysicsUpdateCallBack.delete(this.item.id) |
|
|
|
|
|
|
|
this.viewport.registerPhysicsUpdateCallBack.delete('' + this.vehicleId) |
|
|
|
this.viewport.ammoModel.destroy(this.force) |
|
|
|
this.viewport.ammoModel.destroy(this.keepSpeed) |
|
|
|
this.position.set(this.__toPos.x, this.__toPos.y, this.__toPos.z) |
|
|
|
@ -977,17 +978,17 @@ export default class PtrObject extends THREE.Object3D { |
|
|
|
if (cSpeed >= Math.abs(speed) || distance <= stopDistance) { |
|
|
|
currentPhase = 'uniform' |
|
|
|
} |
|
|
|
this.boxBody.setDamping(0, 0); |
|
|
|
this.boxBody.setDamping(0, 0) |
|
|
|
break |
|
|
|
case 'uniform': |
|
|
|
currentPhase = 'uniform' |
|
|
|
this.boxBody.setLinearVelocity(keepSpeed) |
|
|
|
this.boxBody.setDamping(0, 0); |
|
|
|
this.boxBody.setDamping(0, 0) |
|
|
|
break |
|
|
|
case 'decelerate': |
|
|
|
// 检测停止
|
|
|
|
if (cSpeed > 0) { |
|
|
|
this.boxBody.setDamping(sa, 0); |
|
|
|
this.boxBody.setDamping(sa, 0) |
|
|
|
} |
|
|
|
|
|
|
|
this.boxBody.activate() |
|
|
|
@ -1124,7 +1125,7 @@ export default class PtrObject extends THREE.Object3D { |
|
|
|
throw new Error(`无法拾取物品 ${id},它不是一个有效的 MeshWrap`) |
|
|
|
} |
|
|
|
item.dt.storeAt = { |
|
|
|
item: this.id + "" |
|
|
|
item: this.id + '' |
|
|
|
} |
|
|
|
const mesh = wrap.manager.wrapToObject3D(wrap) |
|
|
|
this.viewport.entityManager.replaceObject(id, mesh) |
|
|
|
|