public override void ReadArray(T inf, NetDataReader r)
 {
     SetterArr(inf, r.GetUShortArray());
 }
예제 #2
0
        public static object GetValue(this NetDataReader reader, Type type)
        {
            #region Generic Values

            if (type.IsPrimitive)
            {
                if (type == typeof(bool))
                {
                    return(reader.GetBool());
                }

                if (type == typeof(byte))
                {
                    return(reader.GetByte());
                }

                if (type == typeof(ushort))
                {
                    return(reader.GetUShort());
                }

                if (type == typeof(int))
                {
                    return(reader.GetInt());
                }

                if (type == typeof(float))
                {
                    return(reader.GetFloat());
                }

                if (type == typeof(short))
                {
                    return(reader.GetShort());
                }

                if (type == typeof(string))
                {
                    return(reader.GetString());
                }

                if (type == typeof(uint))
                {
                    return(reader.GetUInt());
                }

                if (type == typeof(long))
                {
                    return(reader.GetLong());
                }

                if (type == typeof(char))
                {
                    return(reader.GetChar());
                }

                if (type == typeof(double))
                {
                    return(reader.GetDouble());
                }

                if (type == typeof(sbyte))
                {
                    return(reader.GetSByte());
                }


                if (type == typeof(ulong))
                {
                    return(reader.GetULong());
                }

                throw new ArgumentException("NetDataReader cannot read type " + type.Name);
            }
            else if (type.IsArray)
            {
                if (type == typeof(bool[]))
                {
                    return(reader.GetBoolArray());
                }

                if (type == typeof(byte[]))
                {
                    return(reader.GetBytesWithLength());
                }

                if (type == typeof(double[]))
                {
                    return(reader.GetDoubleArray());
                }

                if (type == typeof(float[]))
                {
                    return(reader.GetFloatArray());
                }

                if (type == typeof(int[]))
                {
                    return(reader.GetIntArray());
                }

                if (type == typeof(long[]))
                {
                    return(reader.GetLongArray());
                }

                if (type == typeof(short[]))
                {
                    return(reader.GetShortArray());
                }

                if (type == typeof(uint[]))
                {
                    return(reader.GetUIntArray());
                }

                if (type == typeof(ulong[]))
                {
                    return(reader.GetULongArray());
                }

                if (type == typeof(ushort[]))
                {
                    return(reader.GetUShortArray());
                }

                throw new ArgumentException("NetDataReader cannot read type " + type.Name);
            }
            else if (typeof(INetSerializable).IsAssignableFrom(type))
            {
                object instance = Activator.CreateInstance(type);
                ((INetSerializable)instance).Deserialize(reader);
                return(instance);
            }
            else
            {
                #region Unity Values
#if UNITY_2019
                if (type == typeof(Color))
                {
                    return(reader.GetColor());
                }

                if (type == typeof(Quaternion))
                {
                    return(reader.GetQuaternion());
                }

                if (type == typeof(Vector2))
                {
                    return(reader.GetVector2());
                }

                if (type == typeof(Vector2Int))
                {
                    return(reader.GetVector2Int());
                }

                if (type == typeof(Vector3))
                {
                    return(reader.GetVector3());
                }

                if (type == typeof(Vector3Int))
                {
                    return(reader.GetVector3Int());
                }

                if (type == typeof(Vector4))
                {
                    return(reader.GetVector4());
                }
#endif
                #endregion

                if (type == typeof(string))
                {
                    return(reader.GetString());
                }

                throw new ArgumentException("NetDataReader cannot read type " + type.Name);
            }
            #endregion
        }