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.");
}
}