public List <Collision> ProcessSlice(SlitherFrame slitherFrame, double angleStart, double angleEnd, int distanceStep) { var collision = new List <Collision>(); var selfRadius = GetSnakeRadius(slitherFrame.Snake); foreach (var snake in slitherFrame.Snakes) { if (snake.DeadAmt == 0) { var snakeRadius = GetSnakeRadius(snake); var radius = selfRadius + snakeRadius; var distance = _collisionService.GetDistance(snake.Xx, snake.Yy, radius, angleStart, angleEnd, distanceStep); if (distance != null) { collision.Add(new SnakeHead { Distance = distance.Value, RelativeAngle = snake.Ang, Size = snake.Pts.Count }); } var points = snake.Pts.Where(p => p.Dying == false); for (int index = 0; index < points.Count(); index++) { distance = _collisionService.GetDistance(snake.Pts[index].Xx, snake.Pts[index].Yy, radius, angleStart, angleEnd, distanceStep); if (distance != null) { collision.Add(new SnakeBody { Distance = distance.Value, Size = snakeRadius, StartIndex = index, EndIndex = points.Count() - index }); } } } } collision.Add(new Boundry { Distance = GetBoundryDistance(slitherFrame.WorldCenter, selfRadius, angleStart, angleEnd, distanceStep) }); return(collision.OrderBy(c => c.Distance).ToList()); }
public List<Collision> ProcessSlice(SlitherFrame slitherFrame, double angleStart, double angleEnd, int distanceStep) { var collision = new List<Collision>(); var points = slitherFrame.Snake.Pts.Where(p => p.Dying == false); for (int index = 0; index < points.Count(); index++) { var distance = _collisionService.GetDistance(slitherFrame.Snake.Pts[index].Xx, slitherFrame.Snake.Pts[index].Yy, 0, angleStart, angleEnd, distanceStep); if (distance != null) { collision.Add(new SnakeBody { Distance = distance.Value, Size = slitherFrame.Snake.Sc * 14.5, StartIndex = index, EndIndex = points.Count() - index }); } } return collision.OrderBy(c => c.Distance).ToList(); }
public List <FoodCollision> ProcessSlice(SlitherFrame slitherFrame, double angleStart, double angleEnd, int distanceStep) { var foods = new List <FoodCollision>(); foreach (var food in slitherFrame.Foods) { if (food != null) { var distance = _collisionService.GetDistance(food.Xx, food.Yy, 1, angleStart, angleEnd, distanceStep); if (distance != null) { foods.Add(new FoodCollision { Distance = distance.Value, Size = 1 }); } } } return(foods.OrderBy(c => c.Distance).ToList()); }