Ejemplo n.º 1
0
        private void GrowPathNode(PathNode2D node)
        {
            Vector2 position = node.GetPlanarPosition();
            float   radius   = node.GetRadius() + 0.01f;

            foreach (Vector2 direction in directions)
            {
                Vector2 edge_position = position + direction * radius;
                float   new_radius    = Pathfinding2D.GetInstance().GetPotentialFixedEdgeClearingRadius(edge_position, direction, true);

                Seed(edge_position + direction * new_radius, new_radius);
            }
        }
Ejemplo n.º 2
0
        static public PathNavigator2D GetPathNavigatorToWander(this Pathfinding2D item, Vector2 origin, float target_distance)
        {
            PathNode2D origin_node = item.GetConnectionNear(origin);

            if (origin_node != null)
            {
                return(new PathNavigator2D(
                           origin_node.GetWanderingRandomPath(target_distance)
                           ));
            }

            return(null);
        }
Ejemplo n.º 3
0
        static public PathNavigator2D GetPathNavigatorToWander(this Pathfinding2D item, Vector2 origin, float target_distance, float max_angle_delta)
        {
            PathNode2D origin_node = item.GetConnectionNear(origin);

            if (origin_node != null)
            {
                return(new PathNavigator2D(
                           origin_node.GetWanderingAngleLimitedDegreesPath(target_distance, max_angle_delta)
                           ));
            }

            return(null);
        }
Ejemplo n.º 4
0
        static public PathNavigator2D GetPathNavigatorToDestination(this Pathfinding2D item, Vector2 origin, Vector2 destination)
        {
            if (item.IsConnection(origin, destination))
            {
                return(new PathNavigator2D(destination));
            }
            else
            {
                PathNode2D origin_node      = item.GetConnectionNear(origin);
                PathNode2D destination_node = item.GetConnectionNear(destination);

                if (origin_node != null && destination_node != null)
                {
                    return(new PathNavigator2D(
                               origin_node.GetOptimalPathTo(destination_node),
                               destination
                               ));
                }
            }

            return(null);
        }
Ejemplo n.º 5
0
 static public bool IsConnection(this PathNode2D item, Component component)
 {
     return(item.IsConnection(component.GetPlanarPosition()));
 }