Exemple #1
0
        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));
        }
Exemple #2
0
        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);
            }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
        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);
        }