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 }
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 } } } }