コード例 #1
0
    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;
    }
コード例 #2
0
 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();
     }
 }
コード例 #3
0
    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();
    }