public static List <ILineObstacle> GetBlockLines(Block block, int layer) { var obstacles = new List <ILineObstacle>(); block.GetCollision(obstacles, false); if (obstacles.Count == 0) { obstacles.Add(LineObstacle.DefaultLeft((int)block.Position.X, (int)block.Position.Y, layer)); obstacles.Add(LineObstacle.DefaultTop((int)block.Position.X, (int)block.Position.Y, layer)); obstacles.Add(LineObstacle.DefaultRight((int)block.Position.X, (int)block.Position.Y, layer)); obstacles.Add(LineObstacle.DefaultBottom((int)block.Position.X, (int)block.Position.Y, layer)); } return(obstacles); }
private static void AddLine(Vector2 key, LineObstacle line, IDictionary <Vector2, List <LineObstacle> > points) { List <LineObstacle> segments; if (points.TryGetValue(key, out segments)) { if (!segments.Contains(line)) { segments.Add(line); } } else { segments = new List <LineObstacle> { line }; points.Add(key, segments); } }