3using Newtonsoft.Json.Serialization;
4using Newtonsoft.Json.Linq;
5using System.Reflection;
16 public override void WriteJson(JsonWriter writer,
object value, JsonSerializer serializer)
18 JObject o =
new JObject();
20 o.Add(
"$type", value.GetType().AssemblyQualifiedName);
22 if( value is Vector2 )
27 else if( value is Vector3 )
33 else if( value is Vector4 )
40 else if( value is Quaternion )
48 o.WriteTo(writer, serializer.Converters.ToArray());
51 public override object ReadJson(JsonReader reader, Type objectType,
object existingValue, JsonSerializer serializer)
53 JObject o = JObject.Load(reader);
55 if(objectType == typeof(Vector2))
57 return new Vector2( (
float) o.GetValue(
"x"),
58 (
float) o.GetValue(
"y"));
61 if(objectType == typeof(Vector3))
63 return new Vector3( (
float) o.GetValue(
"x"),
64 (
float) o.GetValue(
"y"),
65 (
float) o.GetValue(
"z"));
68 if(objectType == typeof(Vector4))
70 return new Vector4( (
float) o.GetValue(
"x"),
71 (
float) o.GetValue(
"y"),
72 (
float) o.GetValue(
"z"),
73 (
float) o.GetValue(
"w"));
76 if(objectType == typeof(Quaternion))
78 return new Quaternion( (
float) o.GetValue(
"x"),
79 (
float) o.GetValue(
"y"),
80 (
float) o.GetValue(
"z"),
81 (
float) o.GetValue(
"w"));
84 return new Vector3(0,0,0);
89 return typeof(
UnityEngine.Vector2).IsAssignableFrom(objectType) || typeof(
UnityEngine.Quaternion).IsAssignableFrom(objectType);
override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
override bool CanConvert(Type objectType)
override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)