Esempio n. 1
0
        public async void StartMove(M2C_PathfindingResult message)
        {
            // 取消之前的移动协程
            this.CancellationTokenSource?.Cancel();
            this.CancellationTokenSource = new CancellationTokenSource();

            this.Path.Clear();
            for (int i = 0; i < message.Xs.Count; ++i)
            {
                this.Path.Add(new Vector3(message.Xs[i], message.Ys[i], message.Zs[i]));
            }
            ServerPos = new Vector3(message.X, message.Y, message.Z);

            await StartMove(this.CancellationTokenSource.Token);

            this.CancellationTokenSource.Dispose();
            this.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);
        }