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)); } }
public void OnEndUpdateNodeData(ILODNodeData ndata) { VFVoxelChunkData cdata = ndata as VFVoxelChunkData; if (cdata.LOD == 0 && cdata.IsEmpty) { SceneChunkDependence.Instance.ValidListAdd(cdata.ChunkPosLod, EDependChunkType.ChunkTerEmp); } }
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(); } }
public void OnDestroyNodeData(ILODNodeData ndata) { VFVoxelChunkData cdata = ndata as VFVoxelChunkData; if (cdata.LOD == 0) { SceneChunkDependence.Instance.ValidListRemove(cdata.ChunkPosLod, EDependChunkType.ChunkTerMask); } }
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); } }
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); } } }
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); } }
public void OnEndUpdateNodeData(ILODNodeData cdata) { #if POSTPOND_DESTROY for (int i = 0; i < idxDataMax; i++) { if (cdata == _data[i]) { DestroyInactiveNodeData(i); return; } } #endif }
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); } }
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); }
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); } }
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); }
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); } }
public void OnBegUpdateNodeData(ILODNodeData ndata) { }
public bool ChunkProcExtractData(ILODNodeData ndata) { //TODO : return(true); }
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])); }
public void ChunkProcPreLoadData(ILODNodeData ndata) { }
public VFVoxel ChunkProcExtractData(ILODNodeData ndata, int x, int y, int z) { //TODO : return(new VFVoxel()); }
public void OnEndUpdateNodeData(ILODNodeData ndata) { }
public void OnDestroyNodeData(ILODNodeData ndata) { }
public void ChunkProcPreSetDataVT(ILODNodeData ndata, byte[] data, bool bFromPool) { }