using Microsoft.VisualStudio.Extensibility; using Microsoft.VisualStudio.Extensibility.DebuggerVisualizers; using Microsoft.VisualStudio.RpcContracts.RemoteUI; using System.Collections.Generic; using System.Numerics; using System.Threading; using System.Threading.Tasks; using Vector3VisualizerSource; namespace Vector3Visualizer; [VisualStudioContribution] internal sealed class Vector3DebuggerVisualizerProvider : DebuggerVisualizerProvider { [System.Diagnostics.CodeAnalysis.SuppressMessage("ConstantExpressionEvaluator", "CEE0027:String not localized", Justification = "")] public override DebuggerVisualizerProviderConfiguration DebuggerVisualizerProviderConfiguration => new( [ new VisualizerTargetType("Vector3 Visualizer", "System.Numerics.Vector3, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e"), new VisualizerTargetType("Vector3[] Visualizer", typeof(Vector3[])), new VisualizerTargetType("List Visualizer", typeof(List<>)), new VisualizerTargetType("Quaternion Visualizer", typeof(Quaternion)) ]) { VisualizerObjectSourceType = new VisualizerObjectSourceType(typeof(Vector3ObjectSource)), Style = VisualizerStyle.ToolWindow, }; public override async Task CreateVisualizerAsync(VisualizerTarget visualizerTarget, CancellationToken cancellationToken) { Vector3Model? model = await visualizerTarget.ObjectSource.RequestDataAsync(jsonSerializer: null, CancellationToken.None); return await Task.FromResult(new Vector3VisualizerUserControl(model)); //return await Task.FromResult(new MyRemoteUserControl(model)); } }