internal void ReadFrom(MyOctreeStorage.ChunkHeader header, Stream stream) { if (this.m_octree == null) { this.m_octree = new MySparseOctree(0, (header.ChunkType == MyOctreeStorage.ChunkTypeEnum.ContentLeafOctree) ? MyOctreeNode.ContentFilter : MyOctreeNode.MaterialFilter, 0); } this.m_octree.ReadFrom(header, stream); }
internal void ReadFrom(MyOctreeStorage.ChunkHeader header, Stream stream) { if (m_octree == null) { Debug.Assert(header.ChunkType == MyOctreeStorage.ChunkTypeEnum.ContentLeafOctree || header.ChunkType == MyOctreeStorage.ChunkTypeEnum.MaterialLeafOctree); m_octree = new MySparseOctree(0, header.ChunkType == MyOctreeStorage.ChunkTypeEnum.ContentLeafOctree ? MyOctreeNode.ContentFilter : MyOctreeNode.MaterialFilter); } m_octree.ReadFrom(header, stream); }
internal unsafe void ReadFrom(MyOctreeStorage.ChunkHeader header, Stream stream) { this.m_treeHeight = stream.ReadInt32(); this.m_treeWidth = 1 << (this.m_treeHeight & 0x1f); this.m_defaultContent = stream.ReadByteNoAlloc(); int *numPtr1 = (int *)ref header.Size; numPtr1[0] -= 5; int num = header.Size / 13; this.m_nodes.Clear(); for (int i = 0; i < num; i++) { MyOctreeNode node; uint key = stream.ReadUInt32(); node.ChildMask = stream.ReadByteNoAlloc(); stream.ReadNoAlloc(&node.Data.FixedElementField, 0, 8); this.m_nodes.Add(key, node); } }
internal void ReadFrom(MyOctreeStorage.ChunkHeader header, Stream stream) { m_treeHeight = stream.ReadInt32(); m_treeWidth = 1 << m_treeHeight; m_defaultContent = stream.ReadByteNoAlloc(); header.Size -= sizeof(int) + sizeof(TLeafData); int nodesCount = header.Size / (sizeof(TNodeKey) + MyOctreeNode.SERIALIZED_SIZE); m_nodes.Clear(); TNodeKey key; MyOctreeNode node; for (int i = 0; i < nodesCount; ++i) { key = stream.ReadUInt32(); node.ChildMask = stream.ReadByteNoAlloc(); unsafe { stream.ReadNoAlloc(node.Data, 0, MyOctreeNode.CHILD_COUNT); } m_nodes.Add(key, node); } }
public void ReadFrom(ref MyOctreeStorage.ChunkHeader header, System.IO.Stream stream, ref bool isOldFormat) { m_data.Version = stream.ReadInt64(); m_data.Seed = stream.ReadInt64(); m_data.Radius = stream.ReadDouble(); string generator = stream.ReadString(); if (m_data.Version != STORAGE_VERSION) { isOldFormat = true; } var def = MyDefinitionManager.Static.GetDefinition <MyPlanetGeneratorDefinition>(MyStringHash.GetOrCompute(generator)); if (def == null) { throw new Exception(String.Format("Cannot load planet generator definition for subtype '{0}'.", generator)); } Generator = def; Init(); }