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