Beispiel #1
0
        /// <inheritdoc/>
        public void LoadBinaryData(byte[] inData)
        {
            using (var ms = new MemoryStream(inData))
            {
                using (var br = new BinaryReader(ms))
                {
                    XVertexCount = br.ReadUInt32();
                    YVertexCount = br.ReadUInt32();

                    WidthTileFlags  = br.ReadUInt32();
                    HeightTileFlags = br.ReadUInt32();

                    Location      = br.ReadVector3();
                    MaterialIndex = br.ReadUInt16();

                    var vertexCount = XVertexCount * YVertexCount;
                    for (var i = 0; i < vertexCount; ++i)
                    {
                        LiquidVertices.Add(new LiquidVertex(br.ReadBytes(LiquidVertex.GetSize())));
                    }

                    var tileFlagCount = WidthTileFlags * HeightTileFlags;
                    for (var i = 0; i < tileFlagCount; ++i)
                    {
                        LiquidTileFlags.Add((LiquidFlags)br.ReadByte());
                    }
                }
            }
        }
Beispiel #2
0
        /// <inheritdoc/>
        public void LoadBinaryData(byte[] inData)
        {
            using var ms       = new MemoryStream(inData);
            using var br       = new BinaryReader(ms);
            MinimumLiquidLevel = br.ReadSingle();
            MaxiumLiquidLevel  = br.ReadSingle();

            // Future note: New information suggests there may be more than one liquid layer here, based on
            // the chunk flags (i.e, one layer for river, one layer for ocean, etc)
            for (var y = 0; y < 9; ++y)
            {
                for (var x = 0; x < 9; ++x)
                {
                    LiquidVertices.Add(new LiquidVertex(br.ReadBytes(LiquidVertex.GetSize())));
                }
            }

            for (var y = 0; y < 8; ++y)
            {
                for (var x = 0; x < 8; ++x)
                {
                    LiquidTileFlags.Add((LiquidFlags)br.ReadByte());
                }
            }
        }