Example #1
0
    private static void GetAllNodesByVert(ref List <PathfindingUtility.TMNodeInfo> nodeInfos, TriangleMeshNode startNode, int vertIndex)
    {
        if (nodeInfos == null)
        {
            nodeInfos = new List <PathfindingUtility.TMNodeInfo>();
        }
        for (int i = 0; i < nodeInfos.get_Count(); i++)
        {
            if (nodeInfos.get_Item(i).node == startNode)
            {
                return;
            }
        }
        int num;

        if (startNode.v0 == vertIndex)
        {
            num = 0;
        }
        else if (startNode.v1 == vertIndex)
        {
            num = 1;
        }
        else
        {
            if (startNode.v2 != vertIndex)
            {
                return;
            }
            num = 2;
        }
        PathfindingUtility.TMNodeInfo tMNodeInfo = default(PathfindingUtility.TMNodeInfo);
        tMNodeInfo.vi   = num;
        tMNodeInfo.node = startNode;
        tMNodeInfo.v0   = startNode.GetVertex(num % 3);
        tMNodeInfo.v1   = startNode.GetVertex((num + 1) % 3);
        tMNodeInfo.v2   = startNode.GetVertex((num + 2) % 3);
        nodeInfos.Add(tMNodeInfo);
        if (startNode.connections != null)
        {
            for (int j = 0; j < startNode.connections.Length; j++)
            {
                TriangleMeshNode triangleMeshNode = startNode.connections[j] as TriangleMeshNode;
                if (triangleMeshNode != null && triangleMeshNode.get_GraphIndex() == startNode.get_GraphIndex())
                {
                    PathfindingUtility.GetAllNodesByVert(ref nodeInfos, triangleMeshNode, vertIndex);
                }
            }
        }
    }