public void Load() { using (var ocReader = new OCDataReader(GetOCDataFilePath())) { tree = new BoundsOctree <Cell>(); LoadBlock(ocReader, 0); } RuntimeGetRenderableObjs(); }
public override void Load(byte[] ocData, int blockIndex = 0) { using (var ocReader = new OCDataReader(ocData)) { tree = new BoundsOctree <Cell>(); LoadBlock(ocReader, blockIndex); } RuntimeGetRenderableObjs(); }
public void TestLoad() { Open(OpenSceneMode.Single); using (var ocReader = new OCDataReader(GetOCDataFilePath())) { tree = new BoundsOctree <Cell>(); LoadBlock(ocReader, 0); } RuntimeGetRenderableObjs(); }
public void Load(OCDataReader reader) { _aabb.center = reader.ReadVector3(); _aabb.size = new Vector3(owner.CellSize, owner.CellSize, owner.CellSize); if (owner.owner.Owner == null) { Byte[] datas = reader.ReadBytes(owner.owner.MaxGameObjectIDCount / 8); BitArray flag = new BitArray(datas); visFlagDic.Add(new Index(0, 0), flag); } else { //Byte[] mainDatas = reader.ReadBytes(0); //BitArray mainFlag = new BitArray(mainDatas); //visFlagDic.Add(Index.InValidIndex, mainFlag); Index currentIndex = owner.owner.TileIndex; for (int i = -1; i < 2; i++) { for (int j = -1; j < 2; j++) { Index newIndex = currentIndex + new Index(i, j); if (owner.owner.Owner.IsValidIndex(newIndex)) { //var multiScene = owner.owner.Owner as MultiScene; //var scene = multiScene.GetTile(newIndex) as SingleScene; //if (scene != null) { var maxGameObjectIdCount = owner.owner.GetNeighborSceneMaxObjectId(newIndex); if (maxGameObjectIdCount > 0) { Byte[] datas = reader.ReadBytes(maxGameObjectIdCount / 8); BitArray flag = new BitArray(datas); visFlagDic.Add(new Index(i, j), flag); } } } } } } int childCount = reader.ReadInt(); for (int i = 0; i < childCount; i++) { Cell cell = new Cell(owner); cell._aabb.center = reader.ReadVector3(); cell._aabb.size = Vector3.one; AddChild(cell); } }
public void Load(OCDataReader reader) { cellSize = reader.ReadFloat(); aabb = reader.ReadBounds(); int len = reader.ReadInt(); for (int i = 0; i < len; i++) { Cell cell = new Cell(this); cell.Load(reader); AddCell(cell); } }
private void MergeOCData(byte[, ][] ocDatas) { var filePath = GetOCDataFilePath(); Load(); try { Debug.LogFormat("Merge OC Data for MultiScene Name Pattern {0}", NamePattern); using (var writer = new OCDataWriter(filePath, _tileDimension, _maxIDs)) { for (int x = 0; x < _tileDimension; ++x) { for (int y = 0; y < _tileDimension; ++y) { if (!Config.IsBatchMode) { Progress("合并OC数据", String.Format("处理OC数据{0}/{1}", x * _tileDimension + y, _tileDimension * _tileDimension), ((float)x * _tileDimension + y) / _tileDimension * _tileDimension); } var data = ocDatas[x, y]; var ocDataBlock = OCDataBlock.Empty; if (data != null) { var reader = new OCDataReader(data); ocDataBlock = reader.GetDataBlock(0); } writer.FillOCDataBlock(x * _tileDimension + y, data, ocDataBlock.Offset, ocDataBlock.Length); } } } } catch (Exception e) { Debug.LogException(e); throw; } finally { if (!Config.IsBatchMode) { EditorUtility.ClearProgressBar(); } } }
private void LoadNeighborMaxGameObjId(OCDataReader ocReader) { var tileDimension = ocReader.ReadInt(); if (tileDimension > 0) { _neighborMaxObjIdTable = new int[tileDimension, tileDimension]; for (int x = 0; x < tileDimension; ++x) { for (int y = 0; y < tileDimension; ++y) { _neighborMaxObjIdTable[x, y] = ocReader.ReadInt(); } } } }
private void LoadBlock(OCDataReader ocReader, int blockIndex) { if (ocReader.TrySetBlock(blockIndex)) { LoadNeighborMaxGameObjId(ocReader); _maxGameObjectIDCount = ocReader.ReadInt(); int len = ocReader.ReadInt(); for (int i = 0; i < len; i++) { VisVolume volume = new VisVolume(this); volume.Load(ocReader); volumelList.Add(volume); } } }