private static void OnNewPath(NewPathEventArgs args) { var sender = args.Source as IHero; if (sender == null || !sender.IsValid) { return; } var id = args.SourceId; if (!Storage.ContainsKey(id)) { Storage.Add(id, new List <CachedPath>()); } var list = Storage[id]; list.Add(new CachedPath(args.Path.ToList <Vector3>().ToVector2())); if (list.Count > 50) { list.RemoveRange(0, 40); } }
private static void OnNewPath(NewPathEventArgs args) { if (!args.IsDash) { Storage.Remove(args.SourceId); return; } if (args.Source is IHero hero) { var startPos = hero.Position; var endPos = args.Path.Last(); var startTime = Game.Time; var endTime = startTime + startPos.Distance(endPos) / args.Speed; var dash = new DashEventArgs(args.SourceId, args.Path, args.Speed, startPos, endPos, startTime, endTime); Storage[args.SourceId] = dash; OnDash?.SafeInvoke(dash); } }