diff --git a/Vector3Visualizer/DebugVisualizer/DebugVisualizer.csproj b/Vector3Visualizer/DebugVisualizer/DebugVisualizer.csproj
new file mode 100644
index 0000000..be29180
--- /dev/null
+++ b/Vector3Visualizer/DebugVisualizer/DebugVisualizer.csproj
@@ -0,0 +1,14 @@
+
+
+
+ Exe
+ net10.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/Vector3Visualizer/DebugVisualizer/Program.cs b/Vector3Visualizer/DebugVisualizer/Program.cs
new file mode 100644
index 0000000..1dd89cf
--- /dev/null
+++ b/Vector3Visualizer/DebugVisualizer/Program.cs
@@ -0,0 +1,2 @@
+var pipeServer = new NamedPipes.Receiver();
+pipeServer.Start();
diff --git a/Vector3Visualizer/NamedPipes/NamedPipes.csproj b/Vector3Visualizer/NamedPipes/NamedPipes.csproj
new file mode 100644
index 0000000..dbdcea4
--- /dev/null
+++ b/Vector3Visualizer/NamedPipes/NamedPipes.csproj
@@ -0,0 +1,7 @@
+
+
+
+ netstandard2.0
+
+
+
diff --git a/Vector3Visualizer/NamedPipes/ReadFileToStream.cs b/Vector3Visualizer/NamedPipes/ReadFileToStream.cs
new file mode 100644
index 0000000..d43f9a0
--- /dev/null
+++ b/Vector3Visualizer/NamedPipes/ReadFileToStream.cs
@@ -0,0 +1,23 @@
+using System.IO;
+
+namespace NamedPipes
+{
+ // Contains the method executed in the context of the impersonated user
+ public class ReadFileToStream
+ {
+ private readonly string fn;
+ private readonly StreamString ss;
+
+ public ReadFileToStream(StreamString str, string filename)
+ {
+ fn = filename;
+ ss = str;
+ }
+
+ public void Start()
+ {
+ string contents = File.ReadAllText(fn);
+ ss.WriteString(contents);
+ }
+ }
+}
diff --git a/Vector3Visualizer/NamedPipes/Receiver.cs b/Vector3Visualizer/NamedPipes/Receiver.cs
new file mode 100644
index 0000000..6b16d99
--- /dev/null
+++ b/Vector3Visualizer/NamedPipes/Receiver.cs
@@ -0,0 +1,65 @@
+using System;
+using System.IO;
+using System.IO.Pipes;
+using System.Text;
+using System.Threading;
+
+namespace NamedPipes
+{
+
+ public class Receiver
+ {
+ public readonly static string PipeName = "testpipe";
+ public Receiver()
+ {
+ }
+ ~Receiver()
+ {
+ }
+ public void Start()
+ {
+ while (true)
+ {
+ var pipeServer = new NamedPipeServerStream(PipeName, PipeDirection.InOut);
+ int threadId = Thread.CurrentThread.ManagedThreadId;
+
+ // Wait for a client to connect
+ pipeServer.WaitForConnection();
+ Console.WriteLine($"Client connected on thread[{threadId}].");
+ try
+ {
+ // Read the request from the client. Once the client has
+ // written to the pipe its security token will be available.
+
+ StreamString stream = new StreamString(pipeServer);
+
+ // Verify our identity to the connected client using a
+ // string that the client anticipates.
+
+ stream.WriteString("I am the one true server!");
+ string message = stream.ReadString();
+ Console.WriteLine($"Received: {message}");
+
+
+ // Read in the contents of the file while impersonating the client.
+ //ReadFileToStream fileReader = new ReadFileToStream(ss, filename);
+
+ // Display the name of the user we are impersonating.
+ //Console.WriteLine($"Reading file: {filename} on thread[{threadId}] as user: {pipeServer.GetImpersonationUserName()}.");
+ //pipeServer.RunAsClient(fileReader.Start);
+ }
+ // Catch the IOException that is raised if the pipe is broken
+ // or disconnected.
+ catch (IOException e)
+ {
+ Console.WriteLine($"ERROR: {e.Message}");
+ }
+ finally
+ {
+ pipeServer.Dispose();
+ }
+ }
+
+ }
+ }
+}
diff --git a/Vector3Visualizer/NamedPipes/Sender.cs b/Vector3Visualizer/NamedPipes/Sender.cs
new file mode 100644
index 0000000..aa13840
--- /dev/null
+++ b/Vector3Visualizer/NamedPipes/Sender.cs
@@ -0,0 +1,40 @@
+using System;
+using System.IO.Pipes;
+using System.Security.Principal;
+using System.Threading;
+
+
+namespace NamedPipes
+{
+ public class Sender
+ {
+ public Sender() { }
+ public void SendMessage(string message)
+ {
+ var pipeClient = new NamedPipeClientStream(".", Receiver.PipeName, PipeDirection.InOut, PipeOptions.None, TokenImpersonationLevel.Impersonation);
+ Console.WriteLine("Connecting to server...\n");
+ pipeClient.Connect(5000);
+ Console.WriteLine("Connected.\n");
+
+ var ss = new StreamString(pipeClient);
+ // Validate the server's signature string.
+ if (ss.ReadString() == "I am the one true server!")
+ {
+ // The client security token is sent with the first write.
+ // Send the name of the file whose contents are returned
+ // by the server.
+ ss.WriteString(message);
+
+ // Print the file to the screen.
+ Console.Write(ss.ReadString());
+ }
+ else
+ {
+ Console.WriteLine("Server could not be verified.");
+ }
+ pipeClient.Dispose();
+ // Give the client process some time to display results before exiting.
+ Thread.Sleep(100);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Vector3Visualizer/NamedPipes/StreamString.cs b/Vector3Visualizer/NamedPipes/StreamString.cs
new file mode 100644
index 0000000..6a5cea2
--- /dev/null
+++ b/Vector3Visualizer/NamedPipes/StreamString.cs
@@ -0,0 +1,47 @@
+using System;
+using System.IO;
+using System.Text;
+
+
+namespace NamedPipes
+{
+ // Defines the data protocol for reading and writing strings on our stream.
+ public class StreamString
+ {
+ private readonly Stream ioStream;
+ private readonly UnicodeEncoding streamEncoding;
+
+ public StreamString(Stream ioStream)
+ {
+ this.ioStream = ioStream;
+ streamEncoding = new UnicodeEncoding();
+ }
+
+ public string ReadString()
+ {
+ int len;
+ len = ioStream.ReadByte() * 256;
+ len += ioStream.ReadByte();
+ var inBuffer = new byte[len];
+ ioStream.Read(inBuffer, 0, len);
+
+ return streamEncoding.GetString(inBuffer);
+ }
+
+ public int WriteString(string outString)
+ {
+ byte[] outBuffer = streamEncoding.GetBytes(outString);
+ int len = outBuffer.Length;
+ if (len > UInt16.MaxValue)
+ {
+ len = (int)UInt16.MaxValue;
+ }
+ ioStream.WriteByte((byte)(len / 256));
+ ioStream.WriteByte((byte)(len & 255));
+ ioStream.Write(outBuffer, 0, len);
+ ioStream.Flush();
+
+ return outBuffer.Length + 2;
+ }
+ }
+}
diff --git a/Vector3Visualizer/Vecor3Visualizer.slnx b/Vector3Visualizer/Vecor3Visualizer.slnx
index 740585f..795fcd9 100644
--- a/Vector3Visualizer/Vecor3Visualizer.slnx
+++ b/Vector3Visualizer/Vecor3Visualizer.slnx
@@ -1,4 +1,8 @@
+
+
+
+
diff --git a/Vector3Visualizer/Vector3Visualizer/Vector3DebuggerVisualizerProvider.cs b/Vector3Visualizer/Vector3Visualizer/Vector3DebuggerVisualizerProvider.cs
index d5f008d..e4d11fe 100644
--- a/Vector3Visualizer/Vector3Visualizer/Vector3DebuggerVisualizerProvider.cs
+++ b/Vector3Visualizer/Vector3Visualizer/Vector3DebuggerVisualizerProvider.cs
@@ -2,7 +2,6 @@
using Microsoft.VisualStudio.Extensibility.DebuggerVisualizers;
using Microsoft.VisualStudio.RpcContracts.RemoteUI;
using System.Collections.Generic;
-using System.Linq;
using System.Numerics;
using System.Threading;
using System.Threading.Tasks;
diff --git a/Vector3Visualizer/Vector3Visualizer/Vector3Visualizer.csproj b/Vector3Visualizer/Vector3Visualizer/Vector3Visualizer.csproj
index 47f5a35..f1e1206 100644
--- a/Vector3Visualizer/Vector3Visualizer/Vector3Visualizer.csproj
+++ b/Vector3Visualizer/Vector3Visualizer/Vector3Visualizer.csproj
@@ -15,6 +15,7 @@
+
diff --git a/Vector3Visualizer/Vector3VisualizerSource/Vector3ObjectSource.cs b/Vector3Visualizer/Vector3VisualizerSource/Vector3ObjectSource.cs
index d5b1a9f..75e9210 100644
--- a/Vector3Visualizer/Vector3VisualizerSource/Vector3ObjectSource.cs
+++ b/Vector3Visualizer/Vector3VisualizerSource/Vector3ObjectSource.cs
@@ -1,4 +1,5 @@
using Microsoft.VisualStudio.DebuggerVisualizers;
+using NamedPipes;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
@@ -9,6 +10,12 @@ namespace Vector3VisualizerSource;
public class Vector3ObjectSource : VisualizerObjectSource
{
+ public static void Send(Vector3Model vector3Model)
+ {
+ var pipeClient = new Sender();
+
+ pipeClient.SendMessage($"Hello from {nameof(Vector3ObjectSource)}");
+ }
public Vector3ObjectSource():base()
{
Debug.WriteLine("new Vector3ObjectSource");
@@ -29,6 +36,7 @@ public class Vector3ObjectSource : VisualizerObjectSource
{
vector3Model.Quaternion = quaternion.ToString();
}
+ Send(vector3Model);
SerializeAsJson(outgoingData, vector3Model);
}
}
\ No newline at end of file
diff --git a/Vector3Visualizer/Vector3VisualizerSource/Vector3VisualizerSource.csproj b/Vector3Visualizer/Vector3VisualizerSource/Vector3VisualizerSource.csproj
index d6acc0f..3a9efd4 100644
--- a/Vector3Visualizer/Vector3VisualizerSource/Vector3VisualizerSource.csproj
+++ b/Vector3Visualizer/Vector3VisualizerSource/Vector3VisualizerSource.csproj
@@ -11,4 +11,8 @@
+
+
+
+