diff --git a/src/modules/cl2/Cl23dObject.ts b/src/modules/cl2/Cl23dObject.ts index 94d83f0..234c8a8 100644 --- a/src/modules/cl2/Cl23dObject.ts +++ b/src/modules/cl2/Cl23dObject.ts @@ -338,7 +338,7 @@ export default class Cl23dObject extends THREE.Object3D { private _cl2Entity: Cl2Entity = null; private taskList: Task[] = []; - private executingTask: Task[] = []; + private currentTask: any = null; private travelAnimation: core.Tween = null private rotationAnimation: core.Tween = null; @@ -524,19 +524,26 @@ export default class Cl23dObject extends THREE.Object3D { executeTask() { - const currentTask = this.executingTask[this.executingTask.length - 1] + if (this.currentAnimation) { + return + } while (this.taskList.length > 0) { - const task = this.taskList.shift() - if (task.OperationType === 0) { - this.addTravel(task.X, task.Y, task.Speed / 1000) - } - if ((task.Speed > 0) != (currentTask.Speed > 1) || task.Direction != currentTask.Direction) { - // 转向 - // this.addArmRotate(task.Direction) + const task = this.taskList[0] + + if (task.OperationType == 0 && ((task.Speed > 0) != (this.currentTask.Speed > 1) || task.Direction != this.currentTask.Direction)) { + if (!this.currentAnimation || this.currentAnimation == this.rotationAnimation) { + // 转向 + this.addRotation(task.Direction) + this.currentAnimation = task + } + } else if (task.OperationType === 0) { + if (!this.currentAnimation || this.currentAnimation == this.travelAnimation) { + this.taskList.shift() + this.addTravel(task.X, task.Y, task.Speed / 1000) + this.currentAnimation = task + } } } - - }