private void DrawSight(Graphics gfx, IHavePosition center, IEnumerable <IHavePosition> close, Color color) { foreach (var c in close) { gfx.DrawLine(new Pen(color), new Point(OffsetX + (int)center.Position.X, OffsetY + (int)center.Position.Y), new Point(OffsetX + (int)c.Position.X, OffsetY + (int)c.Position.Y)); } }
public static IEnumerable <IHavePosition> FindClosestAgents(IHavePosition center, int numberOfAgentsToFind, IEnumerable <IHavePosition> agents) { var closestObjects = agents .Where(x => x != center) .Select(x => new { Agent = x, SquareDistance = center.Position.SquaredDistance(x.Position) }) .ToList(); closestObjects.Sort((a, b) => { return(a.SquareDistance > b.SquareDistance ? 1 : -1); }); List <IHavePosition> closestAgents = new List <IHavePosition>(); var timesToCopyFirstAgent = numberOfAgentsToFind - closestObjects.Count(); for (int i = 0; i < timesToCopyFirstAgent; i++) { closestAgents.Add(closestObjects.First().Agent); } closestAgents.AddRange(closestObjects.Take(numberOfAgentsToFind).Select(x => x.Agent)); return(closestAgents); }
public virtual double GetDirection(IHavePosition fromOther) { throw new NotImplementedException("BaseCharacter -> GetDirection is not implemented yet."); }