Example #1
0
        private static void WriteParam(object o, Bitstream msg)
        {
            var t = o.GetType();
            var dsitem = new DataSerializationProperty(null, t);

            msg.Write(t.FullName);
            switch (dsitem.Type)
            {
                case DataTypes.BOOL:
                    msg.Write((bool)o);
                    break;
                case DataTypes.UBYTE:
                    msg.Write((byte)o);
                    break;
                case DataTypes.UINT:
                    msg.WriteVariableUInt32((uint)o);
                    break;
                case DataTypes.BYTE:
                    msg.Write((sbyte)o);
                    break;
                case DataTypes.INT:
                    msg.WriteVariableInt32((int)o);
                    break;
                case DataTypes.ULONG:
                    msg.Write((ulong)o);
                    break;
                case DataTypes.LONG:
                    msg.Write((long)o);
                    break;
                case DataTypes.FLOAT:
                    msg.Write((float)o);
                    break;
                case DataTypes.DOUBLE:
                    msg.Write((double)o);
                    break;
                case DataTypes.STRING:
                    msg.Write((string)o);
                    break;
                case DataTypes.VECTOR2:
                    msg.Write((Vector2)o);
                    break;
                default:
                    throw new ArgumentException("Invalid RPC paramter type.");
            }
        }
Example #2
0
        private static bool UseBaseline(DataSerializationProperty prop, NetworkObject owner, NetworkObject baseline)
        {
            if (baseline == null) return false;
            switch (prop.Type)
            {
                case DataTypes.BOOL:
                    {
                        bool a = prop.Get<bool>(owner);
                        bool b = prop.Get<bool>(baseline);
                        return a == b;
                    }
                case DataTypes.BYTE:
                    {
                        sbyte a = prop.Get<sbyte>(owner);
                        sbyte b = prop.Get<sbyte>(baseline);
                        return a == b;
                    }
                case DataTypes.DOUBLE:
                    {
                        double a = prop.Get<double>(owner);
                        double b = prop.Get<double>(baseline);
                        return a == b;
                    }
                case DataTypes.FLOAT:
                    {
                        float a = prop.Get<float>(owner);
                        float b = prop.Get<float>(baseline);
                        return a == b;
                    }
                case DataTypes.INT:
                    {
                        int a = prop.Get<int>(owner);
                        int b = prop.Get<int>(baseline);
                        return a == b;
                    }
                case DataTypes.LONG:
                    {
                        long a = prop.Get<long>(owner);
                        long b = prop.Get<long>(baseline);
                        return a == b;
                    }
                case DataTypes.SHORT:
                    {
                        short a = prop.Get<short>(owner);
                        short b = prop.Get<short>(baseline);
                        return a == b;
                    }
                case DataTypes.UBYTE:
                    {
                        byte a = prop.Get<byte>(owner);
                        byte b = prop.Get<byte>(baseline);
                        return a == b;
                    }
                case DataTypes.UINT:
                    {
                        uint a = prop.Get<uint>(owner);
                        uint b = prop.Get<uint>(baseline);
                        return a == b;
                    }
                case DataTypes.ULONG:
                    {
                        ulong a = prop.Get<ulong>(owner);
                        ulong b = prop.Get<ulong>(baseline);
                        return a == b;
                    }
                case DataTypes.USHORT:
                    {
                        ushort a = prop.Get<ushort>(owner);
                        ushort b = prop.Get<ushort>(baseline);
                        return a == b;
                    }
                case DataTypes.VECTOR2:
                    {
                        Vector2 a = prop.Get<Vector2>(owner);
                        Vector2 b = prop.Get<Vector2>(baseline);
                        return a == b;
                    }
            }

            return false;
        }
Example #3
0
 private static void ApplyBaseline(DataSerializationProperty prop, NetworkObject owner, NetworkObject clone)
 {
     switch (prop.Type)
     {
         case DataTypes.BOOL:
             {
                 bool b = prop.Get<bool>(clone);
                 prop.Set(owner, b); break;
             }
         case DataTypes.BYTE:
             {
                 sbyte b = prop.Get<sbyte>(clone);
                 prop.Set(owner, b); break;
             }
         case DataTypes.DOUBLE:
             {
                 double b = prop.Get<double>(clone);
                 prop.Set(owner, b); break;
             }
         case DataTypes.FLOAT:
             {
                 float b = prop.Get<float>(clone);
                  prop.Set(owner, b); break;
             }
         case DataTypes.INT:
             {
                 int b = prop.Get<int>(clone);
                  prop.Set(owner, b); break;
             }
         case DataTypes.LONG:
             {
                 long b = prop.Get<long>(clone);
                  prop.Set(owner, b); break;
             }
         case DataTypes.SHORT:
             {
                 short b = prop.Get<short>(clone);
                  prop.Set(owner, b); break;
             }
         case DataTypes.UBYTE:
             {
                 byte b = prop.Get<byte>(clone);
                  prop.Set(owner, b); break;
             }
         case DataTypes.UINT:
             {
                 uint b = prop.Get<uint>(clone);
                  prop.Set(owner, b); break;
             }
         case DataTypes.ULONG:
             {
                 ulong b = prop.Get<ulong>(clone);
                  prop.Set(owner, b); break;
             }
         case DataTypes.USHORT:
             {
                 ushort b = prop.Get<ushort>(clone);
                  prop.Set(owner, b); break;
             }
         case DataTypes.VECTOR2:
             {
                 Vector2 b = prop.Get<Vector2>(clone);
                  prop.Set(owner, b); break;
             }
     }
 }
Example #4
0
        private object ReadParam(Bitstream msg)
        {
            var fullTypeName = msg.ReadString();
            var type = LookupType(fullTypeName);
            var dsitem = new DataSerializationProperty(null, type);
            object o;
            switch (dsitem.Type)
            {
                case DataTypes.BOOL:
                    o = msg.ReadBool();
                    break;
                case DataTypes.UBYTE:
                    o = msg.ReadByte();
                    break;
                case DataTypes.UINT:
                    o = msg.ReadVariableUInt32();
                    break;
                case DataTypes.BYTE:
                    o = msg.ReadSByte();
                    break;
                case DataTypes.INT:
                    o = msg.ReadVariableInt32();
                    break;
                case DataTypes.ULONG:
                    o = msg.ReadUInt64();
                    break;
                case DataTypes.LONG:
                    o = msg.ReadInt64();
                    break;
                case DataTypes.FLOAT:
                    o = msg.ReadFloat();
                    break;
                case DataTypes.DOUBLE:
                    o = msg.ReadDouble();
                    break;
                case DataTypes.STRING:
                    o = msg.ReadString();
                    break;
                case DataTypes.VECTOR2:
                    o = msg.ReadVector2();
                    break;
                default:
                    throw new ArgumentException("Invalid RPC paramter type.");
            }

            return o;
        }