using System; using System.IO; using System.Reflection; using NitroxClient.Helpers; using NitroxClient.MonoBehaviours; using NitroxModel.Helper; namespace NitroxPatcher.Patches.Persistent { public partial class ProtobufSerializer_Serialize_Patch : NitroxPatch, IPersistentPatch { private static readonly MethodInfo TARGET_METHOD = Reflect.Method((ProtobufSerializer t) => t.Serialize(default(Stream), default(object), default(Type))); /// /// This patch is in a hot path so it needs this optimization. /// private static readonly NitroxProtobufSerializer serializer = Resolve(true); public static bool Prefix(Stream stream, object source, Type type) { if (Multiplayer.Active && serializer.NitroxTypes.ContainsKey(type)) { serializer.Serialize(stream, source); return false; } return true; } } }