using System.Collections.Generic; using UnityEngine; namespace ET { public static class MoveHelper { // 可以多次调用,多次调用的话会取消上一次的协程 public static async ETTask FindPathMoveToAsync(this Unit unit, Vector3 target, ETCancellationToken cancellationToken = null) { // float speed = unit.GetComponent().GetAsFloat(NumericType.Speed); // if (speed < 0.01) // { // unit.SendStop(-1); // return; // } // // using var list = ListComponent.Create(); // // unit.GetComponent().Find(unit.Position, target, list); // // List path = list; // if (path.Count < 2) // { // unit.SendStop(0); // return; // } // // // 广播寻路路径 // M2C_PathfindingResult m2CPathfindingResult = new M2C_PathfindingResult(); // m2CPathfindingResult.Id = unit.Id; // for (int i = 0; i < list.Count; ++i) // { // Vector3 vector3 = list[i]; // m2CPathfindingResult.Xs.Add(vector3.x); // m2CPathfindingResult.Ys.Add(vector3.y); // m2CPathfindingResult.Zs.Add(vector3.z); // } // MessageHelper.Broadcast(unit, m2CPathfindingResult); // // bool ret = await unit.GetComponent().MoveToAsync(path, speed); // if (ret) // 如果返回false,说明被其它移动取消了,这时候不需要通知客户端stop // { // unit.SendStop(0); // } await ETTask.CompletedTask; } public static void Stop(this Unit unit, int error) { // unit.GetComponent().Stop(); // unit.SendStop(error); } public static void SendStop(this Unit unit, int error) { // MessageHelper.Broadcast(unit, new M2C_Stop() // { // Error = error, // Id = unit.Id, // X = unit.Position.x, // Y = unit.Position.y, // Z = unit.Position.z, // // A = unit.Rotation.x, // B = unit.Rotation.y, // C = unit.Rotation.z, // W = unit.Rotation.w, // }); } } }