public PathRequest <TPath> RequestPath(float x1, float y1, float x2, float y2, PathfindaxCollisionCategory collisionLayer = PathfindaxCollisionCategory.None, byte agentSize = 1) { var startNode = DefinitionNodeNetwork.GetNodeIndex(x1, y1); var endNode = DefinitionNodeNetwork.GetNodeIndex(x2, y2); return(RequestPath(startNode, endNode, collisionLayer, agentSize)); }
public IDefinitionNodeNetwork GenerateGrid2D() { const int width = 1000; const int height = 1000; var random = new Random(); var dictionary = new Dictionary <DelaunayNode, int>(); var nodeNetwork = new DefinitionNodeNetwork(new Vector2(1, 1)); for (var i = 0; i < 100; i++) { var nodeIndex = nodeNetwork.AddNode(new Vector2(random.Next(0, width), random.Next(0, height))); ref var node = ref nodeNetwork.NodeArray[nodeIndex]; var defaultNode = new DelaunayNode(new Vector2(node.Position.X, node.Position.Y)); dictionary.Add(defaultNode, nodeIndex); }
public void GetNode() { var nodeNetwork = new DefinitionNodeNetwork(new Vector2(1, 1)); var positions = new List <Vector2> { new Vector2(0, 0), new Vector2(1, 2), new Vector2(8, 13) }; foreach (var position in positions) { nodeNetwork.AddNode(position); } foreach (var position in positions) { var node = nodeNetwork.GetNode(position.X, position.Y); Assert.Equal(position, node.Position); } }
public IDefinitionNodeNetwork GenerateGrid2D() { const int width = 1000; const int height = 1000; var random = new Random(); var dictionary = new Dictionary <DelaunayNode, DefinitionNode>(); var nodeNetwork = new DefinitionNodeNetwork(new Vector2(1, 1)); for (var i = 0; i < 100; i++) { var node = new DefinitionNode(i, new Vector2(random.Next(0, width), random.Next(0, height))); var defaultNode = new DelaunayNode(new Vector2(node.Position.X, node.Position.Y)); dictionary.Add(defaultNode, node); nodeNetwork.DefinitionNodes.Add(node); } var graph = new Graph <DelaunayNode>(); graph.Nodes.AddRange(dictionary.Keys); graph.Triangulate(); foreach (var graphLink in graph.Links.GroupBy(x => x.From)) { var from = dictionary[graphLink.Key]; var connections = new List <DefinitionNode>(); foreach (var link in graphLink) { var to = dictionary[link.To]; connections.Add(to); } for (var i = 0; i < connections.Count; i++) { var to = connections[i]; from.Connections.Add(new NodeConnection(to.Index)); to.Connections.Add(new NodeConnection(from.Index)); } } return(nodeNetwork); }