CTT/Server/Hotfix/Demo/UnitPathComponentSystem.cs

79 lines
2.9 KiB
C#
Executable File
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//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);
// }
// }
//}