Ejemplo n.º 1
0
    // A "Voos Name" may be a 32-char GUID or just some string, like
    // __DEFAULT_BEHAVIOR__
    public static string ReadVoosName(this NET.NetworkReader reader)
    {
        byte header = reader.ReadByte();

        if (header == VN_EMPTY)
        {
            return("");
        }

        if (header == VN_GUID)
        {
            // Guid
            byte[] bytes = new byte[16];
            for (int i = 0; i < 16; i++)
            {
                bytes[i] = reader.ReadByte();
            }
            return((new System.Guid(bytes)).ToString("N"));
        }
        else
        {
            Debug.Assert(header == VN_UTF16);
            return(reader.ReadUtf16());
        }
    }
Ejemplo n.º 2
0
    Cell ReadCell(UnityEngine.Networking.NetworkReader reader)
    {
        int  x = reader.ReadByte() - cellArrayOffsetX;
        int  y = reader.ReadByte() - cellArrayOffsetY;
        int  z = reader.ReadByte() - cellArrayOffsetZ;
        Cell c = new Cell(x, y, z);

        return(c);
    }
Ejemplo n.º 3
0
        public override void OnDeserialize(NetworkReader reader, bool initialState)
        {
            var dirty = reader.ReadPackedUInt32();

            if (dirty == 0)
            {
                return;
            }

            m_Slot         = reader.ReadByte();
            m_ReadyToBegin = reader.ReadBoolean();
        }
Ejemplo n.º 4
0
 internal bool HandleFragment(NetworkReader reader)
 {
     if (reader.ReadByte() == 0)
     {
         if (!readingFragment)
         {
             fragmentBuffer.SeekZero();
             readingFragment = true;
         }
         byte[] array = reader.ReadBytesAndSize();
         fragmentBuffer.WriteBytes(array, (ushort)array.Length);
         return(false);
     }
     readingFragment = false;
     return(true);
 }
Ejemplo n.º 5
0
    void LoadLegacy(UnityEngine.Networking.NetworkReader reader)
    {
        int count = reader.ReadInt32();

        Util.Log($"loading {count} legacy cells");
        for (int i = 0; i < count; i++)
        {
            Cell            c    = new Cell(reader.ReadInt32(), reader.ReadInt32(), reader.ReadInt32());
            LegacyBlockInfo info = new LegacyBlockInfo();
            info.SetData(reader.ReadByte());

            CellValue block = new CellValue(info.GetBlockType(), info.GetBlockDirection(), BlockStyle.Stone);
            SetCell(block, c);
            Side westEdge = new Side(c.x, c.y, c.z, CellSide.West);
            SetSide(westEdge, info.WestWall(), BlockStyle.Stone);
            Side southEdge = new Side(c.x, c.y, c.z, CellSide.South);
            SetSide(southEdge, info.SouthWall(), BlockStyle.Stone);
        }
    }
Ejemplo n.º 6
0
        internal bool HandleFragment(NetworkReader reader)
        {
            int state = reader.ReadByte();

            if (state == 0)
            {
                if (readingFragment == false)
                {
                    fragmentBuffer.SeekZero();
                    readingFragment = true;
                }

                byte[] data = reader.ReadBytesAndSize();
                fragmentBuffer.WriteBytes(data, (ushort)data.Length);
                return(false);
            }
            else
            {
                readingFragment = false;
                return(true);
            }
        }
Ejemplo n.º 7
0
        public void HandleMsg(NetworkReader reader)
        {
            byte num   = reader.ReadByte();
            int  index = (int)reader.ReadPackedUInt32();
            T    obj   = this.DeserializeItem(reader);

            switch (num)
            {
            case 0:
                this.m_Objects.Add(obj);
                break;

            case 1:
                this.m_Objects.Clear();
                break;

            case 2:
                this.m_Objects.Insert(index, obj);
                break;

            case 3:
                this.m_Objects.Remove(obj);
                break;

            case 4:
                this.m_Objects.RemoveAt(index);
                break;

            case 5:
            case 6:
                this.m_Objects[index] = obj;
                break;
            }
            if (this.m_Callback == null)
            {
                return;
            }
            this.m_Callback((SyncList <T> .Operation)num, index);
        }
Ejemplo n.º 8
0
        internal bool HandleFragment(NetworkReader reader)
        {
            bool result;

            if (reader.ReadByte() == 0)
            {
                if (!this.readingFragment)
                {
                    this.fragmentBuffer.SeekZero();
                    this.readingFragment = true;
                }
                byte[] array = reader.ReadBytesAndSize();
                this.fragmentBuffer.WriteBytes(array, (ushort)array.Length);
                result = false;
            }
            else
            {
                this.readingFragment = false;
                result = true;
            }
            return(result);
        }
Ejemplo n.º 9
0
        public void HandleMsg(NetworkReader reader)
        {
            byte op        = reader.ReadByte();
            int  itemIndex = (int)reader.ReadPackedUInt32();
            T    item      = DeserializeItem(reader);

            switch ((Operation)op)
            {
            case Operation.OP_ADD:
                m_Objects.Add(item);
                break;

            case Operation.OP_CLEAR:
                m_Objects.Clear();
                break;

            case Operation.OP_INSERT:
                m_Objects.Insert(itemIndex, item);
                break;

            case Operation.OP_REMOVE:
                m_Objects.Remove(item);
                break;

            case Operation.OP_REMOVEAT:
                m_Objects.RemoveAt(itemIndex);
                break;

            case Operation.OP_SET:
            case Operation.OP_DIRTY:
                m_Objects[itemIndex] = item;
                break;
            }
            if (m_Callback != null)
            {
                m_Callback.Invoke((Operation)op, itemIndex);
            }
        }
Ejemplo n.º 10
0
        public void HandleMsg(NetworkReader reader)
        {
            byte b   = reader.ReadByte();
            int  num = (int)reader.ReadPackedUInt32();
            T    val = DeserializeItem(reader);

            switch (b)
            {
            case 0:
                m_Objects.Add(val);
                break;

            case 1:
                m_Objects.Clear();
                break;

            case 2:
                m_Objects.Insert(num, val);
                break;

            case 3:
                m_Objects.Remove(val);
                break;

            case 4:
                m_Objects.RemoveAt(num);
                break;

            case 5:
            case 6:
                m_Objects[num] = val;
                break;
            }
            if (m_Callback != null)
            {
                m_Callback((Operation)b, num);
            }
        }
Ejemplo n.º 11
0
        public void HandleMsg(NetworkReader reader)
        {
            byte num   = reader.ReadByte();
            int  index = (int)reader.ReadPackedUInt32();
            T    item  = this.DeserializeItem(reader);

            switch (((Operation <T>)num))
            {
            case Operation <T> .OP_ADD:
                this.m_Objects.Add(item);
                break;

            case Operation <T> .OP_CLEAR:
                this.m_Objects.Clear();
                break;

            case Operation <T> .OP_INSERT:
                this.m_Objects.Insert(index, item);
                break;

            case Operation <T> .OP_REMOVE:
                this.m_Objects.Remove(item);
                break;

            case Operation <T> .OP_REMOVEAT:
                this.m_Objects.RemoveAt(index);
                break;

            case Operation <T> .OP_SET:
            case Operation <T> .OP_DIRTY:
                this.m_Objects[index] = item;
                break;
            }
            if (this.m_Callback != null)
            {
                this.m_Callback((Operation <T>)num, index);
            }
        }
Ejemplo n.º 12
0
        public void HandleMsg(NetworkReader reader)
        {
            byte op  = reader.ReadByte();
            int  num = (int)reader.ReadPackedUInt32();
            T    t   = this.DeserializeItem(reader);

            switch (op)
            {
            case 0:
                this.m_Objects.Add(t);
                break;

            case 1:
                this.m_Objects.Clear();
                break;

            case 2:
                this.m_Objects.Insert(num, t);
                break;

            case 3:
                this.m_Objects.Remove(t);
                break;

            case 4:
                this.m_Objects.RemoveAt(num);
                break;

            case 5:
            case 6:
                this.m_Objects[num] = t;
                break;
            }
            if (this.m_Callback != null)
            {
                this.m_Callback((SyncList <T> .Operation)op, num);
            }
        }
 public override void Deserialize(UnityEngine.Networking.NetworkReader reader)
 {
     slotId      = reader.ReadByte();
     loadedState = reader.ReadBoolean();
 }
Ejemplo n.º 14
0
    public void Deserialize(byte[] cellBytes)
    {
        Clear();

        // Util.Log($"loading terrain data of {cellBytes.Length} bytes");
        var reader = new UnityEngine.Networking.NetworkReader(cellBytes);
        // Again - kinda awkward to have the deserialize code here.
        int version = reader.ReadInt32();

        if (version == 0)
        {
            Util.LogWarning($"Ignoring terrain version 0");
        }
        else if (version == 1)
        {
            LoadLegacy(reader);
        }
        else if (version == TerrainDatabase.CurrentVersion)
        {
            int blockCount = reader.ReadInt32();
            // Util.Log($"reading {blockCount} blocks");
            for (int i = 0; i < blockCount; i++)
            {
                TerrainDatabase.BlockInfo info = new TerrainDatabase.BlockInfo();
                info.b0 = reader.ReadByte();
                info.b1 = reader.ReadByte();
                Cell c = ReadCell(reader);
                Debug.Assert(info.GetShape() != BlockShape.Empty);
                SetCell(info.ToBlock(), c);
            }

            System.Action <CellSide> LoadSideMap = (CellSide cellSide) =>
            {
                int count = reader.ReadInt32();
                // Util.Log($"Reading {count} {cellSide} walls");
                for (int i = 0; i < count; i++)
                {
                    TerrainDatabase.SideInfo info = new TerrainDatabase.SideInfo();
                    info.b0 = reader.ReadByte();
                    Cell c    = ReadCell(reader);
                    Side side = new Side
                    {
                        side = cellSide,
                        x    = c.x,
                        y    = c.y,
                        z    = c.z
                    };
                    SetSide(side, true, info.GetStyle());
                }
            };

            LoadSideMap.Invoke(CellSide.South);
            LoadSideMap.Invoke(CellSide.West);

            Debug.Assert(reader.ReadByte() == 42, "End-of-buffer sanity check failed!");
        }
        else
        {
            throw new System.Exception($"Given terrain of unknown version: {version}.");
        }
    }
Ejemplo n.º 15
0
 public static bool ReadVoosBoolean(this UnityEngine.Networking.NetworkReader reader)
 {
     return(reader.ReadByte() == 1);
 }