void IMyStorageDataProvider.ReadFrom(ref MyOctreeStorage.ChunkHeader header, Stream stream, ref bool isOldFormat) { m_state.Version = stream.ReadUInt32(); if (m_state.Version != CURRENT_VERSION) { // Making sure this gets saved in new format and serialized cache holding old format is discarded. isOldFormat = true; } m_state.Generator = stream.ReadInt32(); m_state.Seed = stream.ReadInt32(); m_state.Size = stream.ReadFloat(); if (m_state.Version == VERSION_WITHOUT_PLANETS) { m_state.UnusedCompat = 0; } else { m_state.UnusedCompat = stream.ReadUInt32(); if (m_state.UnusedCompat == 1) { Debug.Fail("This storage is from a prototype version of planets and is no longer supported."); throw new InvalidBranchException(); } } MyCompositeShapes.AsteroidGenerators[m_state.Generator](m_state.Seed, m_state.Size, out m_data); m_state.Version = CURRENT_VERSION; }
void IMyStorageDataProvider.ReadFrom(ref MyOctreeStorage.ChunkHeader header, Stream stream, ref bool isOldFormat) { m_state.Version = stream.ReadUInt32(); if (m_state.Version != CURRENT_VERSION) { // Making sure this gets saved in new format and serialized cache holding old format is discarded. isOldFormat = true; m_state.Version = CURRENT_VERSION; } m_state.Generator = stream.ReadInt32(); m_state.Seed = stream.ReadInt32(); m_state.Size = stream.ReadFloat(); MyCompositeShapes.AsteroidGenerators[m_state.Generator](m_state.Seed, m_state.Size, out m_data); }
void IMyStorageDataProvider.ReadFrom(ref MyOctreeStorage.ChunkHeader header, Stream stream, ref bool isOldFormat) { m_state.Version = stream.ReadUInt32(); if (m_state.Version != CURRENT_VERSION) { // Making sure this gets saved in new format and serialized cache holding old format is discarded. isOldFormat = true; } m_state.Generator = stream.ReadInt32(); m_state.Seed = stream.ReadInt32(); m_state.Size = stream.ReadFloat(); if (m_state.Version == VERSION_WITHOUT_PLANETS) { m_state.IsPlanet = 0; } else { m_state.IsPlanet = stream.ReadUInt32(); } if (m_state.IsPlanet != 0) { m_materialAttributes.ReadFrom(stream); m_shapeAttributes.ReadFrom(stream); m_hillAttributes.ReadFrom(stream); m_canyonAttributes.ReadFrom(stream); MyCompositeShapes.PlanetGenerators[m_state.Generator](ref m_shapeAttributes, ref m_hillAttributes, ref m_canyonAttributes, ref m_materialAttributes, out m_data); } else { MyCompositeShapes.AsteroidGenerators[m_state.Generator](m_state.Seed, m_state.Size, out m_data); } m_state.Version = CURRENT_VERSION; }
void IMyStorageDataProvider.ReadFrom(ref MyOctreeStorage.ChunkHeader header, Stream stream, ref bool isOldFormat) { m_state.Version = stream.ReadUInt32(); if (m_state.Version != CURRENT_VERSION) { // Making sure this gets saved in new format and serialized cache holding old format is discarded. isOldFormat = true; } m_state.Generator = stream.ReadInt32(); m_state.Seed = stream.ReadInt32(); m_state.Size = stream.ReadFloat(); if (m_state.Version == VERSION_WITHOUT_PLANETS) { m_state.IsPlanet = 0; } else { m_state.IsPlanet = stream.ReadUInt32(); } if (m_state.IsPlanet != 0) { int numMaterials = stream.ReadInt32(); m_materialLayers = new MyMaterialLayer[numMaterials]; for (int i = 0; i < numMaterials; ++i) { m_materialLayers[i] = new MyMaterialLayer(); m_materialLayers[i].StartHeight = stream.ReadFloat(); m_materialLayers[i].EndHeight = stream.ReadFloat(); m_materialLayers[i].MaterialName = stream.ReadString(); m_materialLayers[i].StartAngle = stream.ReadFloat(); m_materialLayers[i].EndAngle = stream.ReadFloat(); m_materialLayers[i].HeightStartDeviation = stream.ReadFloat(); m_materialLayers[i].AngleStartDeviation = stream.ReadFloat(); m_materialLayers[i].HeightEndDeviation = stream.ReadFloat(); m_materialLayers[i].AngleEndDeviation = stream.ReadFloat(); } m_shapeAttributes.Seed = stream.ReadInt32(); m_shapeAttributes.Radius = stream.ReadFloat(); m_shapeAttributes.NoiseFrequency = stream.ReadFloat(); m_shapeAttributes.DeviationScale = stream.ReadFloat(); m_shapeAttributes.NormalNoiseFrequency = stream.ReadFloat(); m_shapeAttributes.LayerDeviationNoiseFreqeuncy = stream.ReadFloat(); m_shapeAttributes.LayerDeviationSeed = stream.ReadInt32(); m_hillAttributes.BlendTreshold = stream.ReadFloat(); m_hillAttributes.Treshold = stream.ReadFloat(); m_hillAttributes.SizeRatio = stream.ReadFloat(); m_hillAttributes.NumNoises = stream.ReadInt32(); m_hillAttributes.Frequency = stream.ReadFloat(); m_canyonAttributes.BlendTreshold = stream.ReadFloat(); m_canyonAttributes.Treshold = stream.ReadFloat(); m_canyonAttributes.SizeRatio = stream.ReadFloat(); m_canyonAttributes.NumNoises = stream.ReadInt32(); m_canyonAttributes.Frequency = stream.ReadFloat(); MyCompositeShapes.PlanetGenerators[m_state.Generator](ref m_shapeAttributes, ref m_hillAttributes, ref m_canyonAttributes, m_materialLayers, out m_data); } else { MyCompositeShapes.AsteroidGenerators[m_state.Generator](m_state.Seed, m_state.Size, out m_data); } m_state.Version = CURRENT_VERSION; }