Пример #1
0
    // Functions that Unity uses in its execution engine.
    void Awake()
    {
        Stopwatch sw = new Stopwatch();

        sw.Start();

        // ...

        if (!Initialized)
        {
            LoggingUpgrade.RegisterLogFile();
            BuildMeshTree(GetComponent <MeshFilter>().mesh, 1);
            _fragmentConnectivityGraph = new BCRBGraph(MeshTreeRoot);
        }

        sw.Stop();

        Debug.Log(sw.Elapsed.TotalSeconds);
    }
Пример #2
0
    List <MeshTreeNode> GetMinimalMeshTrees(BCRBGraph graph)
    {
        List <MeshTreeNode>       minimalMeshTrees = new List <MeshTreeNode>();
        LinkedList <MeshTreeNode> visitNodes       = new LinkedList <MeshTreeNode>();

        InitMeshTreeNodes(MeshTreeRoot);
        foreach (MeshTreeNode fragment in graph.Fragments)
        {
            fragment.IsMinmal = true;
        }

        VisitAndGenerateMinimalMeshTrees(MeshTreeRoot);
        visitNodes.AddLast(MeshTreeRoot);
        while (visitNodes.Count != 0)
        {
            MeshTreeNode visitNode = visitNodes.First.Value;
            visitNodes.RemoveFirst();
            if (visitNode.IsMinmal)
            {
                minimalMeshTrees.Add(visitNode);
            }
            else
            {
                if (visitNode.Left != null)
                {
                    visitNodes.AddLast(visitNode.Left);
                }
                if (visitNode.Right != null)
                {
                    visitNodes.AddLast(visitNode.Right);
                }
            }
        }

        return(minimalMeshTrees);
    }