public MH2OHeader(BinaryReader reader) { OffsetInstances = reader.ReadUInt32(); LayerCount = reader.ReadUInt32(); OffsetAttributes = reader.ReadUInt32(); Instances = new MH2OInstance[LayerCount]; if (LayerCount > 0) { long positionAfterHeader = reader.BaseStream.Position; reader.BaseStream.Position = OffsetInstances; for (int i = 0; i < LayerCount; i++) { Instances[i] = new MH2OInstance(reader); } if (OffsetAttributes > 0) { reader.BaseStream.Position = OffsetAttributes; Attributes = new MH2OAttribute(reader); } reader.BaseStream.Position = positionAfterHeader; } }
public void Write(BinaryWriter writer, MH2OInstance instance) { if (instance.LiquidVertexFormat != 2) { for (byte z = instance.OffsetY; z < instance.Height + instance.OffsetY; z++) { for (byte x = instance.OffsetX; x < instance.Width + instance.OffsetX; x++) { writer.Write(HeightMap[z, x]); } } } for (byte z = instance.OffsetY; z < instance.Height + instance.OffsetY; z++) { for (byte x = instance.OffsetX; x < instance.Width + instance.OffsetX; x++) { writer.Write(DepthMap[z, x]); } } }
public MH2OInstanceVertexData(BinaryReader reader, MH2OInstance instance) { if (instance.LiquidVertexFormat != 2) { for (byte z = instance.OffsetY; z < instance.Height + instance.OffsetY; z++) { for (byte x = instance.OffsetX; x < instance.Width + instance.OffsetX; x++) { HeightMap[z, x] = reader.ReadSingle(); } } } for (byte z = instance.OffsetY; z < instance.Height + instance.OffsetY; z++) { for (byte x = instance.OffsetX; x < instance.Width + instance.OffsetX; x++) { DepthMap[z, x] = reader.ReadByte(); } } }