public WaypointEngine(GridConnectionProvider gridConnectionProvider, WaypointConnectionProvider waypointConnectionProvider, IEnumerable <Waypoint> waypoints, float waypointRange) { this.gridConnectionProvider = gridConnectionProvider; this.waypointConnectionProvider = waypointConnectionProvider; this.waypoints = waypoints; WaypointRange = waypointRange; }
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; } }
public GoblinExplorationSimulator() { WaypointDistance = 5; provider = new GridConnectionProvider(); }