CTT/Server/Hotfix/Demo/UnitPathComponentSystem.cs

79 lines
2.9 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
//using System.Collections.Generic;
//using System.Threading;
//using PF;
//using UnityEngine;
//namespace ET
//{
// public static class UnitPathComponentHelper
// {
// public static async ETTask MoveAsync(this UnitPathComponent self, List<Vector3> path)
// {
// if (path.Count == 0)
// {
// return;
// }
// //第一个点是unit的当前位置所以不用发送
// for (int i = 1; i < path.Count; ++i)
// {
// //每移动3个点发送下3个点给客户端
// if (i % 3 == 1)
// {
// self.BroadcastPath(path, i, 3);
// }
// Vector3 v3 = path[i];
// await self.Parent.GetComponent<MoveComponent>().MoveToAsync(v3, self.CancellationTokenSource.Token);
// }
// }
// public static async ETVoid MoveTo(this UnitPathComponent self, Vector3 target)
// {
// if ((self.Target - target).magnitude < 0.1f)
// {
// return;
// }
// self.Target = target;
// Unit unit = self.GetParent<Unit>();
// PathfindingComponent pathfindingComponent = self.Domain.GetComponent<PathfindingComponent>();
// self.ABPath = EntityFactory.Create<ABPathWrap, Vector3, Vector3>(self.Domain, unit.Position, new Vector3(target.x, target.y, target.z));
// pathfindingComponent.Search(self.ABPath);
// Log.Debug($"find result: {self.ABPath.Result.ListToString()}");
// self.CancellationTokenSource?.Cancel();
// self.CancellationTokenSource = EntityFactory.Create<ETCancellationTokenSource>(self.Domain);
// await self.MoveAsync(self.ABPath.Result);
// self.CancellationTokenSource.Dispose();
// self.CancellationTokenSource = null;
// }
// //从index找接下来3个点广播
// public static void BroadcastPath(this UnitPathComponent self, List<Vector3> path, int index, int offset)
// {
// Unit unit = self.GetParent<Unit>();
// Vector3 unitPos = unit.Position;
// M2C_PathfindingResult m2CPathfindingResult = new M2C_PathfindingResult();
// m2CPathfindingResult.X = unitPos.x;
// m2CPathfindingResult.Y = unitPos.y;
// m2CPathfindingResult.Z = unitPos.z;
// m2CPathfindingResult.Id = unit.Id;
// for (int i = 0; i < offset; ++i)
// {
// if (index + i >= self.ABPath.Result.Count)
// {
// break;
// }
// Vector3 v = self.ABPath.Result[index + i];
// //m2CPathfindingResult.Xs.Add(v.x);
// //m2CPathfindingResult.Ys.Add(v.y);
// //m2CPathfindingResult.Zs.Add(v.z);
// }
// MessageHelper.Broadcast(unit, m2CPathfindingResult);
// }
// }
//}