Advertisement
apieceoffruit

Vector3Converter

Jun 7th, 2023 (edited)
966
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.99 KB | None | 0 0
  1.   public class Vector3Converter : JsonConverter
  2.     {
  3.         public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
  4.         {
  5.             var vector = (Vector3)value;
  6.             writer.WriteStartArray();
  7.             writer.WriteValue(vector.x);
  8.             writer.WriteValue(vector.y);
  9.             writer.WriteValue(vector.z);
  10.             writer.WriteEndArray();
  11.         }
  12.  
  13.         public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
  14.         {
  15.             var val= new Vector3(reader.ReadAsFloat(), reader.ReadAsFloat(), reader.ReadAsFloat());
  16.             while(reader.TokenType != JsonToken.EndArray)
  17.                 reader.Read();
  18.             return val;
  19.         }
  20.  
  21.         public override bool CanConvert(Type objectType) => objectType == typeof(Vector3);
  22.     }
  23.  
  24.     public class QuaternionConverter : JsonConverter
  25.     {
  26.         public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
  27.         {
  28.             var vector = (Quaternion)value;
  29.             writer.WriteStartArray();
  30.             writer.WriteValue(vector.x);
  31.             writer.WriteValue(vector.y);
  32.             writer.WriteValue(vector.z);
  33.             writer.WriteValue(vector.w);
  34.             writer.WriteEndArray();
  35.         }
  36.  
  37.         public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
  38.         {
  39.             var val= new Quaternion(reader.ReadAsFloat(), reader.ReadAsFloat(), reader.ReadAsFloat(),reader.ReadAsFloat());
  40.             while(reader.TokenType != JsonToken.EndArray)
  41.                 reader.Read();
  42.             return val;
  43.         }
  44.  
  45.         public override bool CanConvert(Type objectType) => objectType == typeof(Quaternion);
  46.     }
  47.  
  48.    
  49.     public static class JsonExtensions
  50.     {
  51.         public static float ReadAsFloat(this JsonReader reader) => (float)(reader.ReadAsDecimal()).GetValueOrDefault();
  52.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement