Beispiel #1
0
        public static void Serialize(this NetworkWriter writer, UpdateTileMessage.NetMessage message)
        {
            writer.WriteUInt(message.MatrixSyncNetID);
            foreach (var delayedData in message.Changes)
            {
                writer.WriteBool(true);
                writer.WriteVector3Int(delayedData.Position);
                writer.WriteInt((int)delayedData.TileType);
                writer.WriteInt((int)delayedData.layerType);
                writer.WriteString(delayedData.TileName);

                if (delayedData.Colour != Color.white)
                {
                    writer.WriteByte((byte)EnumOperation.Colour);
                    writer.WriteColor(delayedData.Colour);
                }

                if (delayedData.TransformMatrix != Matrix4x4.identity)
                {
                    writer.WriteByte((byte)EnumOperation.Matrix4x4);
                    writer.WriteMatrix4x4(delayedData.TransformMatrix);
                }
                writer.WriteByte((byte)EnumOperation.NoMoreData);
            }
            writer.WriteBool(false);
        }
Beispiel #2
0
        public static UpdateTileMessage.NetMessage Deserialize(this NetworkReader reader)
        {
            var message = new UpdateTileMessage.NetMessage();

            message.Changes         = new List <UpdateTileMessage.DelayedData>();
            message.MatrixSyncNetID = reader.ReadUInt();
            while (true)
            {
                var Continue = reader.ReadBool();
                if (Continue == false)
                {
                    break;
                }

                var WorkingOn = new UpdateTileMessage.DelayedData
                {
                    Position        = reader.ReadVector3Int(),
                    TileType        = (TileType)reader.ReadInt(),
                    layerType       = (LayerType)reader.ReadInt(),
                    TileName        = reader.ReadString(),
                    MatrixSyncNetID = message.MatrixSyncNetID,
                    TransformMatrix = Matrix4x4.identity,
                    Colour          = Color.white
                };



                while (true)
                {
                    byte Operation = reader.ReadByte();

                    if (Operation == (byte)EnumOperation.NoMoreData)
                    {
                        break;
                    }

                    if (Operation == (byte)EnumOperation.Colour)
                    {
                        WorkingOn.Colour = reader.ReadColor();
                    }

                    if (Operation == (byte)EnumOperation.Matrix4x4)
                    {
                        WorkingOn.TransformMatrix = reader.ReadMatrix4x4();
                    }
                }
                message.Changes.Add(WorkingOn);
            }

            return(message);
        }