public void init() { for (int i = 0; i < 35; i++) { written[i] = 0; } #if !DEBUG_LDUSingleThread workerThread = new Thread(new ThreadStart(threadProc)); workerThread.Start(); #endif // chunkDataMutex = new Mutex(false); self = this; }
public void ProcPostLodInit() { if (RandomMap) { _dataLoader = new VFDataRTGen(RandomMapConfig.RandSeed); _voxels = new VFLODDataSource(LodMan.LodTreeNodes, IdxInLODNodeData); //_lodDataUpdate = null; } else { _dataLoader = new VFDataReader(string.IsNullOrEmpty(VFVoxelTerrain.MapDataPath_Zip) ? string.Empty : (VFVoxelTerrain.MapDataPath_Zip + "/map")); _voxels = new VFLODDataSource(LodMan.LodTreeNodes, IdxInLODNodeData); _lodDataUpdate = new LODDataUpdate(); } }
void OnDestroy() { if (_lodDataUpdate != null) { _lodDataUpdate.Stop(); _lodDataUpdate = null; } if (_transGoCreator != null) { _transGoCreator.IsTransvoxelEnabled = false; _transGoCreator = null; } if (SurfExtractor != null) { SurfExtractor.Reset(); } if (_dataLoader != null) { _dataLoader.Close(); } // If something is left over... (in the editor) if (gameObject.transform.childCount > 0) { // Clean up chunks for (int i = gameObject.transform.childCount - 1; i >= 0; --i) { var child = gameObject.transform.GetChild(i).gameObject; DestroyImmediate(child); } } Resources.UnloadUnusedAssets(); TerrainVoxelComplete = false; TerrainColliderComplete = false; bChunkColliderRebuilding = true; self = null; VFVoxelSave.Clean(); }