Tanoda
pb_ColorConverter.cs
Go to the documentation of this file.
1using UnityEngine;
2using Newtonsoft.Json;
3using Newtonsoft.Json.Serialization;
4using Newtonsoft.Json.Linq;
5using System.Reflection;
6using System;
7using System.Linq;
8
10{
11 public class pb_ColorConverter : JsonConverter
12 {
13 public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
14 {
15 JObject o = new JObject();
16
17 o.Add("$type", value.GetType().AssemblyQualifiedName);
18
19 if(value is Color)
20 {
21 o.Add("r", ((UnityEngine.Color)value).r);
22 o.Add("g", ((UnityEngine.Color)value).g);
23 o.Add("b", ((UnityEngine.Color)value).b);
24 o.Add("a", ((UnityEngine.Color)value).a);
25 }
26 else
27 {
28 o.Add("r", ((UnityEngine.Color32)value).r);
29 o.Add("g", ((UnityEngine.Color32)value).g);
30 o.Add("b", ((UnityEngine.Color32)value).b);
31 o.Add("a", ((UnityEngine.Color32)value).a);
32 }
33
34 o.WriteTo(writer, serializer.Converters.ToArray());
35 }
36
37 public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
38 {
39 JObject o = JObject.Load(reader);
40
41 if(typeof(UnityEngine.Color32).IsAssignableFrom(objectType))
42 {
43 return new Color32( (byte) o.GetValue("r"),
44 (byte) o.GetValue("g"),
45 (byte) o.GetValue("b"),
46 (byte) o.GetValue("a"));
47 }
48 else
49 {
50 return new Color( (float) o.GetValue("r"),
51 (float) o.GetValue("g"),
52 (float) o.GetValue("b"),
53 (float) o.GetValue("a"));
54 }
55 }
56
57 public override bool CanConvert(Type objectType)
58 {
59 return typeof(UnityEngine.Color).IsAssignableFrom(objectType);
60 }
61 }
62}
UnityEngine.Color Color
Definition: TestScript.cs:32
override bool CanConvert(Type objectType)
override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)