EnumConverter.cs 806 B

12345678910111213141516171819202122
  1. using System;
  2. using Newtonsoft.Json;
  3. using UnityEngine.Scripting;
  4. namespace Siccity.GLTFUtility.Converters {
  5. /// <summary> Converts from string to enum during deserialization, and back </summary>
  6. [Preserve] public class EnumConverter : JsonConverter {
  7. public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) {
  8. writer.WriteValue(value.ToString());
  9. }
  10. public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) {
  11. string value = serializer.Deserialize<string>(reader);
  12. if (Enum.IsDefined(objectType, value)) return Enum.Parse(objectType, value);
  13. else return existingValue;
  14. }
  15. public override bool CanConvert(Type objectType) {
  16. return typeof(Enum).IsAssignableFrom(objectType);
  17. }
  18. }
  19. }