From e4b257a89ac6e13e279143c00077cdc5d5b98215 Mon Sep 17 00:00:00 2001
From: Magnus Norddahl <dpjudas@users.noreply.github.com>
Date: Thu, 8 Aug 2019 04:21:57 +0200
Subject: [PATCH] - remove SlimDX.DirectInput namespace

---
 Source/Core/Actions/MouseInput.cs | 135 ++++++++----------------------
 Source/Core/SlimDX.cs             |  45 ----------
 2 files changed, 34 insertions(+), 146 deletions(-)

diff --git a/Source/Core/Actions/MouseInput.cs b/Source/Core/Actions/MouseInput.cs
index 947b06fcd..9cc5ffa29 100755
--- a/Source/Core/Actions/MouseInput.cs
+++ b/Source/Core/Actions/MouseInput.cs
@@ -18,8 +18,6 @@
 
 using System;
 using System.Windows.Forms;
-using SlimDX;
-using SlimDX.DirectInput;
 using CodeImp.DoomBuilder.Geometry;
 
 #endregion
@@ -31,18 +29,8 @@ namespace CodeImp.DoomBuilder.Actions
 		#region ================== Variables
 
 		// Mouse input
-		private DirectInput dinput;
-		private Mouse mouse;
+		private RawMouse mouse;
 		
-		// Disposing
-		private bool isdisposed;
-
-		#endregion
-
-		#region ================== Properties
-
-		public bool IsDisposed { get { return isdisposed; } }
-
 		#endregion
 
 		#region ================== Constructor / Disposer
@@ -50,30 +38,8 @@ namespace CodeImp.DoomBuilder.Actions
 		// Constructor
 		public MouseInput(Control source)
 		{
-			// Initialize
-			dinput = new DirectInput();
-			
 			// Start mouse input
-			mouse = new Mouse(dinput);
-			if(mouse == null) throw new Exception("No mouse device found.");
-			
-			// Set mouse input settings
-			mouse.Properties.AxisMode = DeviceAxisMode.Relative;
-			
-			// Set cooperative level
-			mouse.SetCooperativeLevel(source,
-				CooperativeLevel.Nonexclusive | CooperativeLevel.Foreground);
-			
-			// Aquire device
-			try { mouse.Acquire(); }
-#if DEBUG
-			catch(Exception e)
-			{
-				Console.WriteLine("MouseInput initialization failed: " + e.Message);
-			}
-#else
-			catch(Exception) { }
-#endif
+			mouse = new RawMouse(source);
 
 			// We have no destructor
 			GC.SuppressFinalize(this);
@@ -82,20 +48,10 @@ namespace CodeImp.DoomBuilder.Actions
 		// Disposer
 		public void Dispose()
 		{
-			// Not already disposed?
-			if(!isdisposed)
+			if(mouse != null)
 			{
-				// Dispose
-				mouse.Unacquire();
 				mouse.Dispose();
-				dinput.Dispose();
-				
-				// Clean up
 				mouse = null;
-				dinput = null;
-				
-				// Done
-				isdisposed = true;
 			}
 		}
 
@@ -110,62 +66,39 @@ namespace CodeImp.DoomBuilder.Actions
 		// This processes the input
 		public Vector2D Process()
 		{
-			// Poll the device
-			try
-			{
-				Result result = mouse.Poll();
-				if(result.IsSuccess)
-				{
-					// Get the changes since previous poll
-					MouseState ms = mouse.GetCurrentState();
-
-					// Calculate changes depending on sensitivity
-					float changex = ms.X * General.Settings.VisualMouseSensX * General.Settings.MouseSpeed * 0.01f;
-					float changey = ms.Y * General.Settings.VisualMouseSensY * General.Settings.MouseSpeed * 0.01f;
-
-					// Return changes
-					return new Vector2D(changex, changey);
-				}
-
-				// Reaquire device
-				try { mouse.Acquire(); }
-#if DEBUG
-				catch(Exception e)
-				{
-					Console.WriteLine("MouseInput process failed: " + e.Message);
-				}
-#else
-				catch(Exception) { }
-#endif
-				return new Vector2D();
-			}
-#if DEBUG
-			catch(DirectInputException die)
-			{
-				Console.WriteLine("MouseInput process failed: " + die.Message);
-			
-				// Reaquire device
-				try
-				{
-					mouse.Acquire();
-				}
-				catch(Exception e)
-				{
-					Console.WriteLine("MouseInput process failed: " + e.Message);
-				}
-				return new Vector2D();
-			}
-#else
-			catch(DirectInputException)
-			{
-				// Reaquire device
-				try { mouse.Acquire(); } 
-				catch(Exception) { }
-				return new Vector2D();
-			}
-#endif
+			MouseState ms = mouse.Poll();
+
+			// Calculate changes depending on sensitivity
+			float changex = ms.X * General.Settings.VisualMouseSensX * General.Settings.MouseSpeed * 0.01f;
+			float changey = ms.Y * General.Settings.VisualMouseSensY * General.Settings.MouseSpeed * 0.01f;
+
+			return new Vector2D(changex, changey);
 		}
 
 		#endregion
 	}
+
+    public struct MouseState
+    {
+        public MouseState(float x, float y) { X = x; Y = y; }
+        public float X { get; }
+        public float Y { get; }
+    }
+
+    public class RawMouse
+    {
+        public RawMouse(System.Windows.Forms.Control control)
+        {
+        }
+
+        public MouseState Poll()
+        {
+            // To do: use WM_RAWINPUT to get data
+            return new MouseState(0.0f, 0.0f);
+        }
+
+        public void Dispose()
+        {
+        }
+    }
 }
diff --git a/Source/Core/SlimDX.cs b/Source/Core/SlimDX.cs
index af0084be1..77511d061 100644
--- a/Source/Core/SlimDX.cs
+++ b/Source/Core/SlimDX.cs
@@ -261,49 +261,4 @@ namespace SlimDX
         public static bool operator !=(Vector4 left, Vector4 right) { return left.X != right.X || left.Y != right.Y || left.Z != right.Z || left.W != right.W; }
     }
     #endregion
-
-    #region DirectInput mouse handling
-    namespace DirectInput
-    {
-        public enum DeviceAxisMode { Relative }
-        public enum CooperativeLevel { Nonexclusive, Foreground }
-
-        public class DirectInput
-        {
-            public void Dispose() { }
-        }
-
-        public class MouseProperties
-        {
-            public DeviceAxisMode AxisMode { private get; set; }
-        }
-
-        public class MouseState
-        {
-            public float X { get; }
-            public float Y { get; }
-        }
-
-        public class Result
-        {
-            public bool IsSuccess { get; }
-        }
-
-        public class Mouse
-        {
-            public Mouse(DirectInput dinput) { }
-            public MouseProperties Properties { get; }
-            public void SetCooperativeLevel(System.Windows.Forms.Control control, CooperativeLevel level) { }
-            public void Acquire() { }
-            public void Unacquire() { }
-            public Result Poll() { return null; }
-            public MouseState GetCurrentState() { return null; }
-            public void Dispose() { }
-        }
-
-        public class DirectInputException : ApplicationException
-        {
-        }
-    }
-    #endregion
 }
-- 
GitLab