Works for IEnumerable

This commit is contained in:
Matthias Heil
2026-04-02 15:20:12 +02:00
parent 0276f0a34c
commit 38c916b86b
5 changed files with 41 additions and 33 deletions
@@ -1,5 +1,8 @@
using Microsoft.VisualStudio.DebuggerVisualizers;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
@@ -14,21 +17,39 @@ public class NrxVisualizerObjectSource : VisualizerObjectSource
}
public override void GetData(object target, Stream outgoingData)
{
Debug.WriteLine("GetData: objectType is: " + target.GetType().FullName);
Vector3Model vector3Model = new();
switch (target)
var fullname = target.GetType().FullName;
Trace.WriteLine("GetData: objectType is: " + fullname);
VisualizerModel visualizerModel = new();
switch (fullname)
{
case Vector3 vector3:
vector3Model.Vector3 = vector3;
case "System.Numerics.Vector3":
visualizerModel.Content = target.ToString();
break;
case IEnumerable<Vector3> vector3List:
vector3Model.Vector3 = vector3List.Last();
case "System.Numerics.Quaternion":
visualizerModel.Content = target.ToString();
break;
case Quaternion quaternion:
vector3Model.Quaternion = quaternion;
case "Num.Roto.Visualization.Math.Geometry.Frame":
var tupleType = typeof(ValueTuple<Vector3,Quaternion,float>);
var tuple = (ValueTuple<Vector3, Quaternion, float>)TypeDescriptor.GetConverter(target).ConvertTo(target, tupleType);
visualizerModel.Content = tuple.ToString();
//visualizerModel.Content = (string)TypeDescriptor.GetConverter(target).ConvertTo(target, typeof(string));
break;
}
SerializeAsJson(outgoingData, vector3Model);
if(target is IEnumerable<object> enumerable)
{
Trace.WriteLine($"enumerable is not null = {enumerable is not null}");
if (enumerable is not null)
{
List<string> stringList = [];
foreach (var item in enumerable)
{
stringList.Add(TypeDescriptor.GetConverter(item).ConvertToString(item));
}
visualizerModel.Content = string.Join(Environment.NewLine, stringList);
}
}
Trace.WriteLine($"visualizerModel.Content = {visualizerModel.Content}");
SerializeAsJson(outgoingData, visualizerModel);
}
public override object CreateReplacementObject(object target, Stream incomingData)
{
@@ -3,11 +3,9 @@ using System.Runtime.Serialization;
namespace NrxVisualizerObjectSource;
[DataContract]
public class Vector3Model
public class VisualizerModel
{
[DataMember]
public Vector3? Vector3 { get; set; }
[DataMember]
public Quaternion? Quaternion { get; set;}
public string? Content { get; set; }
}