using Newtonsoft.Json.UnityConverters.Helpers; using UnityEngine; namespace Newtonsoft.Json.UnityConverters.Graphics { /// /// Custom Newtonsoft.Json converter for the Unity Color type . /// public class ResolutionConverter : PartialConverter { protected override void ReadValue(ref Resolution value, string name, JsonReader reader, JsonSerializer serializer) { switch (name) { case nameof(value.width): value.width = reader.ReadAsInt32() ?? 0; break; case nameof(value.height): value.height = reader.ReadAsInt32() ?? 0; break; #pragma warning disable CS0618 // Type or member is obsolete case nameof(value.refreshRate): value.refreshRate = reader.ReadAsInt32() ?? 0; break; #pragma warning restore CS0618 // Type or member is obsolete #if UNITY_2022_2_OR_NEWER case nameof(value.refreshRateRatio): value.refreshRateRatio = reader.ReadViaSerializer(serializer); break; #endif } } protected override void WriteJsonProperties(JsonWriter writer, Resolution value, JsonSerializer serializer) { writer.WritePropertyName(nameof(value.width)); writer.WriteValue(value.width); writer.WritePropertyName(nameof(value.height)); writer.WriteValue(value.height); #pragma warning disable CS0618 // Type or member is obsolete writer.WritePropertyName(nameof(value.refreshRate)); #if UNITY_2022_2_OR_NEWER if (double.IsNaN(value.refreshRateRatio.value)) { writer.WriteValue(0); } else { writer.WriteValue(value.refreshRate); } #else writer.WriteValue(value.refreshRate); #endif #pragma warning restore CS0618 // Type or member is obsolete #if UNITY_2022_2_OR_NEWER writer.WritePropertyName(nameof(value.refreshRateRatio)); serializer.Serialize(writer, value.refreshRateRatio); #endif } } }