Example #1
0
        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;
            }
        }
Example #2
0
        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]);
                }
            }
        }
Example #3
0
        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();
                }
            }
        }