Пример #1
0
    private void InitializeTree(DirectoryInfo dir)
    {
        Stopwatch stopwatch = Stopwatch.StartNew();

        this.directory = dir;
        meshManager = new MeshManager(numberOfMeshes, numberOfMeshLoadingJobs);
        JSONNode modelJSON = ReadJSON(this.directory, "pc_model.json");
        JSONArray trees = modelJSON["nodes"].AsArray;
        InitColorPalette(modelJSON["classes"].AsArray);

        topNodes = new PCTree[trees.Count];

        int i = 0;
        foreach (JSONNode tree in trees)
        {
            Vector3 min = tree["min"].AsVector3();
            Vector3 max = tree["max"].AsVector3();

            PCTree t = new PCTree();
            t.bounds = new Bounds((max + min) / 2, (max - min));
            t.treeFile = tree["file"].ToString().Trim('"');
            topNodes[i++] = t;
        }

        stopwatch.Stop();
        UnityEngine.Debug.Log("PC Model Loaded in ms: " + stopwatch.ElapsedMilliseconds);

        if (moveCameraToCenter)
        {
            Camera.main.transform.position = topNodes[0].bounds.center;
        }

        System.GC.Collect(); //Garbage Collection
    }
Пример #2
0
    private void CheckTopNodes()
    {
        for(int i = 0; i < topNodes.Length; i++)
        {
            PCTree t = topNodes[i];
            bool visible = t.InSight;

            if (t.Loaded)
            {
                if (!visible)
                {
                    t.Unload();
                }
            }
            else{
                if (visible) { 
                    t.Load(this, this.directory);
                    return; //Just load one per frame
                }
            }
        }
    }