|
@@ -1,6 +1,8 @@
|
|
|
using Assets.StreetLight.Interfaces;
|
|
|
using Assets.StreetLight.Poco;
|
|
|
+using Assets.StreetLight.Serialization;
|
|
|
using Newtonsoft.Json;
|
|
|
+using Newtonsoft.Json.Serialization;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.IO;
|
|
@@ -33,93 +35,55 @@ namespace Assets.StreetLight.Adapters
|
|
|
|
|
|
private void ZedManager_OnObjectDetection(DetectionFrame objFrame)
|
|
|
{
|
|
|
- JsonSerializerSettings sets = new JsonSerializerSettings
|
|
|
- {
|
|
|
- ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
|
|
- Converters = new List<JsonConverter>() { new Vector2Converter(), new Vector3Converter(), new QuaternionConverter(), new ColorConverter() }
|
|
|
- };
|
|
|
-
|
|
|
- var ser = JsonSerializer.Create(sets);
|
|
|
-
|
|
|
- using (var file = File.CreateText(@"C:\Users\nick.steyer\SmartStreetLight\log2.txt"))
|
|
|
- {
|
|
|
- ser.Serialize(file, objFrame);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public class Vector2Converter : JsonConverter
|
|
|
- {
|
|
|
- public override bool CanConvert(Type objectType)
|
|
|
- {
|
|
|
- return objectType == typeof(Vector2);
|
|
|
- }
|
|
|
-
|
|
|
- public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
|
|
- {
|
|
|
- return new Vector2();
|
|
|
- }
|
|
|
-
|
|
|
- public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
|
|
- {
|
|
|
- var vector = (Vector2)value;
|
|
|
- writer.WriteValue($"({vector.x}|{vector.y})");
|
|
|
- }
|
|
|
- }
|
|
|
+ var errors = new List<string>();
|
|
|
|
|
|
- public class Vector3Converter : JsonConverter
|
|
|
- {
|
|
|
- public override bool CanConvert(Type objectType)
|
|
|
+ JsonSerializerSettings settings = new()
|
|
|
{
|
|
|
- return objectType == typeof(Vector3);
|
|
|
- }
|
|
|
-
|
|
|
- public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
|
|
- {
|
|
|
- return new Vector3();
|
|
|
- }
|
|
|
-
|
|
|
- public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
|
|
- {
|
|
|
- var vector = (Vector3)value;
|
|
|
- writer.WriteValue($"({vector.x}|{vector.y}|{vector.z})");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public class QuaternionConverter : JsonConverter
|
|
|
- {
|
|
|
- public override bool CanConvert(Type objectType)
|
|
|
- {
|
|
|
- return objectType == typeof(Quaternion);
|
|
|
- }
|
|
|
+ Converters = new List<JsonConverter>() {
|
|
|
+ new Vector2Converter(),
|
|
|
+ new Vector3Converter(),
|
|
|
+ new QuaternionConverter(),
|
|
|
+ new ColorConverter(),
|
|
|
+ new Matrix4x4Converter()
|
|
|
+ },
|
|
|
+ Error = (s, a) =>
|
|
|
+ {
|
|
|
+ if (a.CurrentObject != null)
|
|
|
+ {
|
|
|
+ errors.Add(a.ErrorContext.Error.Message);
|
|
|
+ }
|
|
|
+ a.ErrorContext.Handled = true;
|
|
|
+ },
|
|
|
+ //TraceWriter = new TraceWriter()
|
|
|
+ };
|
|
|
|
|
|
- public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
|
|
- {
|
|
|
- return new Quaternion();
|
|
|
- }
|
|
|
+ var serializer = JsonSerializer.Create(settings);
|
|
|
|
|
|
- public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
|
|
+ using (var file = File.CreateText(@$"C:\Users\nick.steyer\SmartStreetLight\{DateTime.Now:HH-mm-ss-fff}.json"))
|
|
|
{
|
|
|
- var vector = (Quaternion)value;
|
|
|
- writer.WriteValue($"({vector.x}|{vector.y}|{vector.z}|{vector.w})");
|
|
|
+ try
|
|
|
+ {
|
|
|
+ serializer.Serialize(file, objFrame);
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Debug.Log(ex.Message);
|
|
|
+ Debug.Log(ex.StackTrace);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public class ColorConverter : JsonConverter
|
|
|
+ class TraceWriter : ITraceWriter
|
|
|
{
|
|
|
- public override bool CanConvert(Type objectType)
|
|
|
- {
|
|
|
- return objectType == typeof(Color);
|
|
|
- }
|
|
|
-
|
|
|
- public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
|
|
- {
|
|
|
- return new Color();
|
|
|
- }
|
|
|
+ public System.Diagnostics.TraceLevel LevelFilter => System.Diagnostics.TraceLevel.Verbose;
|
|
|
|
|
|
- public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
|
|
+ public void Trace(System.Diagnostics.TraceLevel level, string message, Exception ex)
|
|
|
{
|
|
|
- var color = (Color)value;
|
|
|
- writer.WriteValue($"({color.a}|{color.r}|{color.g}|{color.b})");
|
|
|
+ if (ex != null)
|
|
|
+ {
|
|
|
+ Debug.Log(ex.Message);
|
|
|
+ }
|
|
|
+ Debug.Log(message);
|
|
|
}
|
|
|
}
|
|
|
}
|