コード例 #1
0
 public WaypointEngine(GridConnectionProvider gridConnectionProvider, WaypointConnectionProvider waypointConnectionProvider, IEnumerable <Waypoint> waypoints, float waypointRange)
 {
     this.gridConnectionProvider     = gridConnectionProvider;
     this.waypointConnectionProvider = waypointConnectionProvider;
     this.waypoints = waypoints;
     WaypointRange  = waypointRange;
 }
コード例 #2
0
            public void Simulate()
            {
                if (!first)
                {
                    return;
                }
                //first = false;
                grid = TW.Data.GetSingleton <NavigableGrid2DData>().Grid;
                if (grid == null)
                {
                    return;
                }



                var gridConnectionProvider = new GridConnectionProvider()
                {
                    Grid = grid
                };

                p.ConnectionProvider = gridConnectionProvider;


                var start = gridConnectionProvider.GetVertex(Data.Start / grid.NodeSize);
                var goal  = gridConnectionProvider.GetVertex(Data.End / grid.NodeSize);


                TW.Graphics.LineManager3D.AddCenteredBox(new Vector3(start.Position.X + 0.5f, 0, start.Position.Y + 0.5f) * grid.NodeSize, grid.NodeSize * 0.5f, new Color4(0, 1, 0));
                TW.Graphics.LineManager3D.AddCenteredBox(new Vector3(goal.Position.X + 0.5f, 0, goal.Position.Y + 0.5f) * grid.NodeSize, grid.NodeSize * 0.5f, new Color4(1, 0, 0));


                var      path = p.FindPath(start, goal);
                Vertex2D prev = null;

                //viz.Render();

                if (path == null)
                {
                    return;
                }
                foreach (var node in path)
                {
                    if (prev != null)
                    {
                        TW.Graphics.LineManager3D.AddLine(
                            new Vector3(prev.Position.X + 0.5f, 0, prev.Position.Y + 0.5f) * grid.NodeSize,
                            new Vector3(node.Position.X + 0.5f, 0, node.Position.Y + 0.5f) * grid.NodeSize,
                            new Color4(1, 0, 0));
                    }
                    prev = node;
                }
            }
コード例 #3
0
 public GoblinExplorationSimulator()
 {
     WaypointDistance = 5;
     provider         = new GridConnectionProvider();
 }