private void ReadRPC(NetworkWriter writer, out int connectionID, out int instanceID, out byte rpcType, out int rpcIndex, out int argumentCount, out object[] arguments) { connectionID = writer.ReadInt16(); instanceID = writer.ReadInt16(); rpcType = writer.ReadByte(); rpcIndex = writer.ReadInt16(); argumentCount = writer.ReadInt16(); List <object> args = new List <object>(); for (int i = 0; i < argumentCount; i++) { RPCParameter param = (RPCParameter)writer.ReadByte(); switch (param) { case RPCParameter.Short: args.Add(writer.ReadInt16()); break; case RPCParameter.Long: args.Add(writer.ReadInt64()); break; case RPCParameter.Float: args.Add(writer.ReadSingle()); break; case RPCParameter.Int: args.Add(writer.ReadInt32()); break; case RPCParameter.Vector3: args.Add(writer.ReadVector3()); break; case RPCParameter.Vector2: args.Add(writer.ReadVector2()); break; case RPCParameter.Quaternion: Vector3 xyz = writer.ReadVector3(); float w = writer.ReadSingle(); args.Add(new Quaternion(xyz.x, xyz.y, xyz.z, w)); break; case RPCParameter.Connection: NetworkConnection connection = new NetworkConnection(writer.ReadInt16()); args.Add(connection); break; case RPCParameter.String: args.Add(writer.ReadString()); break; } } arguments = args.ToArray(); }
public RPC( string rpcVariable, ushort rpcParameter, RPCPoint[] rpcPoints ) { Variable = rpcVariable; Parameter = (RPCParameter) rpcParameter; Points = rpcPoints; }