Esempio n. 1
0
    public VFVoxel ChunkProcExtractData(ILODNodeData ndata, int x, int y, int z)
    {
        VFVoxelChunkData cdata  = ndata as VFVoxelChunkData;
        byte             volume = cdata.DataVT[0];
        byte             type   = cdata.DataVT[1];

        if (volume != c_iSurfaceVol)
        {
            return(new VFVoxel(volume, type));
        }
        // Process water level
        int   posy      = y + (cdata.ChunkPosLod.y << VoxelTerrainConstants._shift);
        float fWaterLvl = cdata.LOD == 0 ? c_fWaterLvl : c_fWaterLvl / (1 << cdata.LOD);

        if (fWaterLvl >= posy + 0.5f)
        {
            return(new VFVoxel(255, c_iSeaWaterType));
        }
        if (fWaterLvl <= posy - 0.5f)
        {
            return(new VFVoxel(0, 0));
        }
        if (Mathf.Abs(fWaterLvl - posy) < 0.1f)
        {
            return(new VFVoxel(128, c_iSeaWaterType));
        }
        if (fWaterLvl > posy)
        {
            return(new VFVoxel((byte)(128 + (fWaterLvl - posy) * 128), c_iSeaWaterType));
        }
        else
        {
            return(new VFVoxel((byte)(255 - 128 / (fWaterLvl - posy + 1)), c_iSeaWaterType));
        }
    }
Esempio n. 2
0
    public void OnEndUpdateNodeData(ILODNodeData ndata)
    {
        VFVoxelChunkData cdata = ndata as VFVoxelChunkData;

        if (cdata.LOD == 0 && cdata.IsEmpty)
        {
            SceneChunkDependence.Instance.ValidListAdd(cdata.ChunkPosLod, EDependChunkType.ChunkTerEmp);
        }
    }
Esempio n. 3
0
    public void ChunkProcPreSetDataVT(ILODNodeData ndata, byte[] data, bool bFromPool)
    {
        VFVoxelChunkData cdata = ndata as VFVoxelChunkData;

        if ((!GameConfig.IsMultiMode) && data == VFVoxelChunkData.S_ChunkDataNull && SaveLoad.ChunkSaveList.Contains(cdata))
        {
            SaveLoad.SaveChunksInListToTmpFile();
        }
    }
Esempio n. 4
0
    public void OnDestroyNodeData(ILODNodeData ndata)
    {
        VFVoxelChunkData cdata = ndata as VFVoxelChunkData;

        if (cdata.LOD == 0)
        {
            SceneChunkDependence.Instance.ValidListRemove(cdata.ChunkPosLod, EDependChunkType.ChunkTerMask);
        }
    }
Esempio n. 5
0
    public void OnDestroyNodeData(ILODNodeData ndata)
    {
        Block45LODNodeData cdata = ndata as Block45LODNodeData;
        IntVector4         cpos  = cdata.ChunkPosLod;

        if (cpos != null && cpos.w == 0)
        {
            SceneChunkDependence.Instance.ValidListRemove(cpos, EDependChunkType.ChunkBlkMask);
        }
    }
Esempio n. 6
0
 public void OnBegUpdateNodeData(ILODNodeData ndata)
 {
     if (LODOctreeMan._maxLod == 0)
     {
         Block45LODNodeData cdata = ndata as Block45LODNodeData;
         if (cdata.LOD == 0 && cdata.IsNodePosChange())
         {
             SceneChunkDependence.Instance.ValidListRemove(cdata.ChunkPosLod, EDependChunkType.ChunkBlkMask);
         }
     }
 }
Esempio n. 7
0
    public void OnEndUpdateNodeData(ILODNodeData ndata)
    {
        Block45LODNodeData cdata = ndata as Block45LODNodeData;

        if (cdata.LOD == 0 && cdata.IsAllOctNodeReady())
        {
            EDependChunkType type = cdata.IsEmpty   ? EDependChunkType.ChunkBlkEmp
                                                                                                        : EDependChunkType.ChunkBlkCol;
            SceneChunkDependence.Instance.ValidListAdd(cdata.ChunkPosLod, type);
        }
    }
Esempio n. 8
0
 public void OnEndUpdateNodeData(ILODNodeData cdata)
 {
             #if POSTPOND_DESTROY
     for (int i = 0; i < idxDataMax; i++)
     {
         if (cdata == _data[i])
         {
             DestroyInactiveNodeData(i);
             return;
         }
     }
             #endif
 }
Esempio n. 9
0
    public void ChunkProcPreLoadData(ILODNodeData ndata)
    {
        VFVoxelChunkData chunk = ndata as VFVoxelChunkData;

        byte[] data = SaveLoad.TryGetChunkData(chunk.ChunkPosLod);
        if (data != null)
        {
            chunk.OnDataLoaded(data, true);
        }
        else
        {
            DataLoader.AddRequest(chunk);
        }
    }
Esempio n. 10
0
    public bool ChunkProcExtractData(ILODNodeData ndata)
    {
        VFVoxelChunkData cdata  = ndata as VFVoxelChunkData;
        byte             volume = cdata.DataVT[0];

        if (volume == c_iSurfaceVol)
        {
            return(false);
        }
        //Array.Copy(s_surfaceChunkData[cdata.LOD], data, VoxelTerrainConstants.VOXEL_ARRAY_LENGTH_VT);

        VFVoxelChunkData.ExpandHollowChunkData(cdata);
        return(true);
    }
Esempio n. 11
0
    public void ChunkProcPreLoadData(ILODNodeData nData)
    {
        if (_dataSource == null || _dataSource.RootNode == null)
        {
            return;
        }

        Block45LODNodeData b45NodeData = nData as Block45LODNodeData;
        int size = 1 << (LODOctreeMan.Lod0NodeShift + b45NodeData.ChunkPosLod.w);

        _tmpBoundPos.x = b45NodeData.ChunkPosLod.x << VoxelTerrainConstants._shift;
        _tmpBoundPos.y = b45NodeData.ChunkPosLod.y << VoxelTerrainConstants._shift;
        _tmpBoundPos.z = b45NodeData.ChunkPosLod.z << VoxelTerrainConstants._shift;
        _tmpLstBlock45Datas.Clear();
        lock (b45NodeData) {
            Block45OctNode.FindNodesCenterInside(_tmpBoundPos, size, b45NodeData.LOD, _dataSource.RootNode, ref _tmpLstBlock45Datas);
            b45NodeData.SetBlock45Datas(_tmpLstBlock45Datas);
        }
    }
Esempio n. 12
0
    public bool ChunkProcExtractData(ILODNodeData ndata)
    {
        VFVoxelChunkData cdata  = ndata as VFVoxelChunkData;
        byte             volume = cdata.DataVT[0];
        byte             type   = cdata.DataVT[1];

        byte[] data = VFVoxelChunkData.s_ChunkDataPool.Get();
        if (volume != 0)
        {
            for (int i = 0; i < VoxelTerrainConstants.VOXEL_ARRAY_LENGTH_VT;)
            {
                data[i++] = volume;
                data[i++] = type;
            }
        }
        else
        {
            Array.Clear(data, 0, VoxelTerrainConstants.VOXEL_ARRAY_LENGTH_VT);
        }
        cdata.SetDataVT(data, true);
        return(true);
    }
Esempio n. 13
0
    public void ChunkProcPreLoadData(ILODNodeData ndata)
    {
        VFVoxelChunkData chunk = ndata as VFVoxelChunkData;

#if RIVER_DATA_FILE_TST
        if (_riverChunkFileList.ContainsKey(chunk.ChunkPos))
        {
            Debug.Log("RiverChunk:" + chunk.ChunkPos);
            chunk.OnDataLoaded(File.ReadAllBytes(_riverChunkFileList[chunk.ChunkPos]), false);
            return;
        }
#endif
        byte[] data = SaveLoad.TryGetChunkData(chunk.ChunkPosLod);
        if (data != null)
        {
            chunk.OnDataLoaded(data, true);
        }
        else
        {
            _dataLoader.AddRequest(chunk);
        }
    }
Esempio n. 14
0
 public void OnBegUpdateNodeData(ILODNodeData ndata)
 {
 }
Esempio n. 15
0
 public bool ChunkProcExtractData(ILODNodeData ndata)
 {
     //TODO :
     return(true);
 }
Esempio n. 16
0
    public VFVoxel ChunkProcExtractData(ILODNodeData ndata, int x, int y, int z)
    {
        VFVoxelChunkData cdata = ndata as VFVoxelChunkData;

        return(new VFVoxel(cdata.DataVT[0], cdata.DataVT[1]));
    }
Esempio n. 17
0
 public void ChunkProcPreLoadData(ILODNodeData ndata)
 {
 }
Esempio n. 18
0
 public VFVoxel ChunkProcExtractData(ILODNodeData ndata, int x, int y, int z)
 {
     //TODO :
     return(new VFVoxel());
 }
Esempio n. 19
0
 public void OnEndUpdateNodeData(ILODNodeData ndata)
 {
 }
Esempio n. 20
0
 public void OnDestroyNodeData(ILODNodeData ndata)
 {
 }
Esempio n. 21
0
 public void ChunkProcPreSetDataVT(ILODNodeData ndata, byte[] data, bool bFromPool)
 {
 }