Vector3Converter.cs 926 B

123456789101112131415161718192021222324252627
  1. using System;
  2. using Newtonsoft.Json;
  3. using UnityEngine;
  4. using UnityEngine.Scripting;
  5. namespace Siccity.GLTFUtility.Converters {
  6. /// <summary> Converts from float array to Vector3 during deserialization, and back </summary>
  7. [Preserve] public class Vector3Converter : JsonConverter {
  8. public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) {
  9. Vector3 pos = (Vector3) value;
  10. writer.WriteStartArray();
  11. writer.WriteValue(pos.x);
  12. writer.WriteValue(pos.y);
  13. writer.WriteValue(pos.z);
  14. writer.WriteEndArray();
  15. }
  16. public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) {
  17. float[] floatArray = serializer.Deserialize<float[]>(reader);
  18. return new Vector3(floatArray[0], floatArray[1], floatArray[2]);
  19. }
  20. public override bool CanConvert(Type objectType) {
  21. return objectType == typeof(Vector3);
  22. }
  23. }
  24. }