class RGD_SteeringWheelPatch
[HarmonyPatch(typeof(RGD_SteeringWheel), MethodType.Constructor, new Type[]{ typeof(RGDType), typeof(SteeringWheel) })]
class RGD_SteeringWheelConstructor1 // Constructor for saving
private static void Prefix(RGD_SteeringWheel __instance, ref SteeringWheel steeringWheel)
__instance.AddData(steeringWheel.GetAdditionalData());
[HarmonyPatch(typeof(RGD_SteeringWheel), MethodType.Constructor, new Type[] { typeof(SerializationInfo), typeof(StreamingContext) })]
class RGD_SteeringWheelConstructor2 // Constructor for loading
private static void Prefix(RGD_SteeringWheel __instance, ref SerializationInfo info)
__instance.AddData(JsonUtility.FromJson<SteeringWheelAdditionalData>(info.GetString("AdditionalData"))); // Loads from Json that we will create in GetObjectData
[HarmonyPatch(typeof(RGD_SteeringWheel), "GetObjectData")]
class GetObjectData // Interfering with the serialization flow and adding our custom data to the save
private static void Postfix(RGD_SteeringWheel __instance, ref SerializationInfo info)
SteeringWheelAdditionalData value;
if (SteeringWheelExtension.RGD_data.TryGetValue(__instance, out value))
info.AddValue("AdditionalData", JsonUtility.ToJson(value)); // We need to use json because worlds loads before mod compiles