Ejemplo n.º 1
0
        protected byte[] CompressMap()
        {
            int uncompressedSize = DynaBuffer.GetBytesUsed();

            MemoryStream ms = new MemoryStream();

            Ionic.Zlib.ZlibStream ws = new Ionic.Zlib.ZlibStream(ms, Ionic.Zlib.CompressionMode.Compress, Ionic.Zlib.CompressionLevel.BestCompression, true);

            ws.Write(DynaBuffer.GetRawBuffer(), 0, uncompressedSize);
            ws.Flush();

            ws.Close();

            int len = (int)ms.Length;

            byte[] compressedData = ms.GetBuffer();
            // ms.Length();
            Array.Resize(ref compressedData, (int)ms.Length);

            DynamicOutputBuffer header = DynamicOutputBuffer.GetTempBuffer(64);

            header.WriteUInt16(Constants.WorldCodeHeaderSize);
            header.WriteUInt16(Constants.WorldCodeHeader);
            header.WriteUInt16(1);

            header.WriteUInt32(uncompressedSize);
            header.WriteUInt32(compressedData.Length);

            header.WriteBytes(compressedData);
            header.WriteUInt16(Constants.WorldCodeEndSize);
            header.WriteUInt16(Constants.WorldCodeEnd);

            return(header.GetFinalBuffer());
        }
Ejemplo n.º 2
0
        public override byte[] Pack()
        {
            DynamicOutputBuffer buffer = DynamicOutputBuffer.Get(Code);

            buffer.WriteUInt32(Offset);

            if (Data.Length > 0)
            {
                buffer.WriteBytes(Data);
            }
            return(buffer.GetMessageBuffer());
        }
Ejemplo n.º 3
0
        public override byte[] Pack()
        {
            DynamicOutputBuffer buffer = DynamicOutputBuffer.Get(Code);

            buffer.WriteFloat(WorldSize);
            buffer.WriteUInt16((int)GameType);
            buffer.WriteUInt16((int)GameOptions);
            buffer.WriteUInt16(MaxPlayers);
            buffer.WriteUInt16(MaxShots);
            buffer.WriteUInt16(MaxFlags);

            buffer.WriteFloat(LinearAcceleration);
            buffer.WriteFloat(AngularAcceleration);

            buffer.WriteUInt16((int)(ShakeTimeout / 0.1f));
            buffer.WriteUInt16(ShakeWins);

            buffer.WriteUInt32(UsedToBeSyncTime);

            return(buffer.GetMessageBuffer());
        }
Ejemplo n.º 4
0
        public byte[] Pack()
        {
            WriteDynamicColors();
            WriteTextureMatricies();
            WriteMaterials();
            WritePhysicsDrivers();
            WriteTransforms();
            WriteObstacles();
            WriteLinks();

            DynaBuffer.WriteFloat(-1); // water level
            DynaBuffer.WriteUInt32(0); // world weapons
            DynaBuffer.WriteUInt32(0); // zones

            return(CompressMap());
        }