You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
973 B
29 lines
973 B
using System;
|
|
using System.Numerics;
|
|
using Newtonsoft.Json;
|
|
namespace TNode.JsonSerialize{
|
|
|
|
public class Vector3Converter:JsonConverter<Vector3>{
|
|
public override void WriteJson(JsonWriter writer, Vector3 value, JsonSerializer serializer){
|
|
writer.WriteStartArray();
|
|
writer.WriteValue(value.X);
|
|
writer.WriteValue(value.Y);
|
|
writer.WriteValue(value.Z);
|
|
writer.WriteEndArray();
|
|
}
|
|
|
|
public override Vector3 ReadJson(JsonReader reader, Type objectType, Vector3 existingValue, bool hasExistingValue, JsonSerializer serializer){
|
|
if (reader.TokenType == JsonToken.Null){
|
|
return default(Vector3);
|
|
}
|
|
else{
|
|
var array = serializer.Deserialize<float[]>(reader);
|
|
|
|
if (array != null) return new Vector3(array[0], array[1], array[2]);
|
|
}
|
|
|
|
return default(Vector3);
|
|
|
|
}
|
|
}
|
|
} |