diff --git a/Dalamud/Data/DataManager.cs b/Dalamud/Data/DataManager.cs
index ebdf24c57..006dfcd27 100644
--- a/Dalamud/Data/DataManager.cs
+++ b/Dalamud/Data/DataManager.cs
@@ -5,9 +5,8 @@ using System.Diagnostics;
using System.IO;
using System.Threading;
-using Dalamud.Data.LuminaExtensions;
-using Dalamud.Interface;
using Dalamud.Interface.Internal;
+using Dalamud.Utility;
using ImGuiScene;
using JetBrains.Annotations;
using Lumina;
diff --git a/Dalamud/Hooking/Internal/HookInfo.cs b/Dalamud/Hooking/Internal/HookInfo.cs
index c2850b806..73db6864b 100644
--- a/Dalamud/Hooking/Internal/HookInfo.cs
+++ b/Dalamud/Hooking/Internal/HookInfo.cs
@@ -67,7 +67,7 @@ namespace Dalamud.Hooking.Internal
internal Delegate Delegate { get; }
///
- /// Gets the hooked assembly.
+ /// Gets the assembly implementing the hook.
///
internal Assembly Assembly { get; }
}
diff --git a/Dalamud/Interface/Internal/DalamudInterface.cs b/Dalamud/Interface/Internal/DalamudInterface.cs
index 630f01296..3afcbe331 100644
--- a/Dalamud/Interface/Internal/DalamudInterface.cs
+++ b/Dalamud/Interface/Internal/DalamudInterface.cs
@@ -9,6 +9,7 @@ using Dalamud.Interface.Windowing;
using Dalamud.Logging;
using Dalamud.Logging.Internal;
using Dalamud.Plugin.Internal;
+using Dalamud.Utility;
using ImGuiNET;
using Serilog.Events;
diff --git a/Dalamud/Interface/Internal/InterfaceManager.cs b/Dalamud/Interface/Internal/InterfaceManager.cs
index 92ed70a67..c4338cbfb 100644
--- a/Dalamud/Interface/Internal/InterfaceManager.cs
+++ b/Dalamud/Interface/Internal/InterfaceManager.cs
@@ -11,6 +11,7 @@ using Dalamud.Game.ClientState;
using Dalamud.Game.Internal.DXGI;
using Dalamud.Hooking;
using Dalamud.Hooking.Internal;
+using Dalamud.Utility;
using ImGuiNET;
using ImGuiScene;
using Serilog;
@@ -322,9 +323,7 @@ namespace Dalamud.Interface.Internal
private static void ShowFontError(string path)
{
- Util.Fatal(
- $"One or more files required by XIVLauncher were not found.\nPlease restart and report this error if it occurs again.\n\n{path}",
- "Error");
+ Util.Fatal($"One or more files required by XIVLauncher were not found.\nPlease restart and report this error if it occurs again.\n\n{path}", "Error");
}
private IntPtr PresentDetour(IntPtr swapChain, uint syncInterval, uint presentFlags)
diff --git a/Dalamud/Interface/Internal/Scratchpad/ScratchMacroProcessor.cs b/Dalamud/Interface/Internal/Scratchpad/ScratchMacroProcessor.cs
index 4fdbd64f5..e39741072 100644
--- a/Dalamud/Interface/Internal/Scratchpad/ScratchMacroProcessor.cs
+++ b/Dalamud/Interface/Internal/Scratchpad/ScratchMacroProcessor.cs
@@ -131,7 +131,7 @@ public class ScratchPlugin : IDalamudPlugin {
case ParseContext.Dispose:
break;
default:
- throw new ArgumentOutOfRangeException();
+ throw new ArgumentOutOfRangeException(paramName: nameof(input));
}
ctx = ParseContext.None;
@@ -156,7 +156,7 @@ public class ScratchPlugin : IDalamudPlugin {
disposeBody += line + "\n";
break;
default:
- throw new ArgumentOutOfRangeException();
+ throw new ArgumentOutOfRangeException(paramName: nameof(input));
}
}
diff --git a/Dalamud/Interface/Internal/Windows/ChangelogWindow.cs b/Dalamud/Interface/Internal/Windows/ChangelogWindow.cs
index 69c2ade06..0420fe591 100644
--- a/Dalamud/Interface/Internal/Windows/ChangelogWindow.cs
+++ b/Dalamud/Interface/Internal/Windows/ChangelogWindow.cs
@@ -1,6 +1,7 @@
using System.Diagnostics;
using Dalamud.Interface.Windowing;
+using Dalamud.Utility;
using ImGuiNET;
namespace Dalamud.Interface.Internal.Windows
diff --git a/Dalamud/Interface/Internal/Windows/DataWindow.cs b/Dalamud/Interface/Internal/Windows/DataWindow.cs
index aaa20951a..f024af818 100644
--- a/Dalamud/Interface/Internal/Windows/DataWindow.cs
+++ b/Dalamud/Interface/Internal/Windows/DataWindow.cs
@@ -14,6 +14,7 @@ using Dalamud.Game.Internal.Gui.Toast;
using Dalamud.Game.Text;
using Dalamud.Interface.Windowing;
using Dalamud.Plugin;
+using Dalamud.Utility;
using ImGuiNET;
using ImGuiScene;
using Newtonsoft.Json;
diff --git a/Dalamud/Plugin/DalamudPluginInterface.cs b/Dalamud/Plugin/DalamudPluginInterface.cs
index cc3a9c247..0cd7007a4 100644
--- a/Dalamud/Plugin/DalamudPluginInterface.cs
+++ b/Dalamud/Plugin/DalamudPluginInterface.cs
@@ -117,7 +117,7 @@ namespace Dalamud.Plugin
public Framework Framework { get; private set; }
///
- /// Gets the UiBuilder instance which allows you to draw UI into the game via ImGui draw calls.
+ /// Gets the instance which allows you to draw UI into the game via ImGui draw calls.
///
public UiBuilder UiBuilder { get; private set; }
@@ -165,6 +165,8 @@ namespace Dalamud.Plugin
///
internal Action AnyPluginIpcAction { get; private set; }
+ #region Configuration
+
///
/// Save a plugin configuration(inheriting IPluginConfiguration).
///
@@ -216,6 +218,8 @@ namespace Dalamud.Plugin
/// directory with path of AppData/XIVLauncher/pluginConfig/PluginInternalName/loc.
public string GetPluginLocDirectory() => this.configs.GetDirectory(Path.Combine(this.pluginName, "loc"));
+ #endregion
+
#region Chat Links
///
diff --git a/Dalamud/Troubleshooting.cs b/Dalamud/Troubleshooting.cs
index 69b0df23e..dbc507687 100644
--- a/Dalamud/Troubleshooting.cs
+++ b/Dalamud/Troubleshooting.cs
@@ -6,6 +6,7 @@ using System.Text;
using Dalamud.Configuration;
using Dalamud.Plugin;
using Dalamud.Plugin.Internal.Types;
+using Dalamud.Utility;
using Newtonsoft.Json;
using Serilog;
diff --git a/Dalamud/Utility/EnumExtensions.cs b/Dalamud/Utility/EnumExtensions.cs
new file mode 100644
index 000000000..5a2d9172b
--- /dev/null
+++ b/Dalamud/Utility/EnumExtensions.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Linq;
+
+namespace Dalamud.Utility
+{
+ ///
+ /// Extension methods for enums.
+ ///
+ public static class EnumExtensions
+ {
+ ///
+ /// Gets an attribute on an enum.
+ ///
+ /// The type of attribute to get.
+ /// The enum value that has an attached attribute.
+ /// The attached attribute, if any.
+ public static TAttribute GetAttribute(this Enum value)
+ where TAttribute : Attribute
+ {
+ var type = value.GetType();
+ var name = Enum.GetName(type, value);
+ return type.GetField(name) // I prefer to get attributes this way
+ .GetCustomAttributes(false)
+ .OfType()
+ .SingleOrDefault();
+ }
+ }
+}
diff --git a/Dalamud/Utility/StringExtensions.cs b/Dalamud/Utility/StringExtensions.cs
new file mode 100644
index 000000000..d5c1dfc14
--- /dev/null
+++ b/Dalamud/Utility/StringExtensions.cs
@@ -0,0 +1,16 @@
+namespace Dalamud.Utility
+{
+ ///
+ /// Extension methods for strings.
+ ///
+ public static class StringExtensions
+ {
+ ///
+ /// An extension method to chain usage of string.Format.
+ ///
+ /// Format string.
+ /// Format arguments.
+ /// Formatted string.
+ public static string Format(this string format, params object[] args) => string.Format(format, args);
+ }
+}
diff --git a/Dalamud/Data/LuminaExtensions/TexFileExtensions.cs b/Dalamud/Utility/TexFileExtensions.cs
similarity index 95%
rename from Dalamud/Data/LuminaExtensions/TexFileExtensions.cs
rename to Dalamud/Utility/TexFileExtensions.cs
index d2bb7b736..ddfccba9c 100644
--- a/Dalamud/Data/LuminaExtensions/TexFileExtensions.cs
+++ b/Dalamud/Utility/TexFileExtensions.cs
@@ -1,7 +1,7 @@
using ImGuiScene;
using Lumina.Data.Files;
-namespace Dalamud.Data.LuminaExtensions
+namespace Dalamud.Utility
{
///
/// Extensions to .
diff --git a/Dalamud/Util.cs b/Dalamud/Utility/Util.cs
similarity index 94%
rename from Dalamud/Util.cs
rename to Dalamud/Utility/Util.cs
index 3084e1bab..edd2d8c97 100644
--- a/Dalamud/Util.cs
+++ b/Dalamud/Utility/Util.cs
@@ -7,10 +7,11 @@ using System.Text;
using Dalamud.Game;
using Dalamud.Interface;
using Dalamud.Interface.Colors;
+using Dalamud.Logging.Internal;
using ImGuiNET;
using Serilog;
-namespace Dalamud
+namespace Dalamud.Utility
{
///
/// Class providing various helper methods for use in Dalamud and plugins.
@@ -196,13 +197,5 @@ namespace Dalamud
// TODO: Someone implement GetUTF8String with some IntPtr overloads.
// while(Marshal.ReadByte(0, sz) != 0) { sz++; }
-
- ///
- /// An extension method to chain usage of string.Format.
- ///
- /// Format string.
- /// Format arguments.
- /// Formatted string.
- public static string Format(this string format, params object[] args) => string.Format(format, args);
}
}
diff --git a/Dalamud/Utility/VectorExtensions.cs b/Dalamud/Utility/VectorExtensions.cs
new file mode 100644
index 000000000..0a14299c2
--- /dev/null
+++ b/Dalamud/Utility/VectorExtensions.cs
@@ -0,0 +1,52 @@
+using System.Numerics;
+
+namespace Dalamud.Utility
+{
+ ///
+ /// Extension methods for System.Numerics.VectorN and SharpDX.VectorN.
+ ///
+ public static class VectorExtensions
+ {
+ ///
+ /// Converts a SharpDX vector to System.Numerics.
+ ///
+ /// Vector to convert.
+ /// A converted vector.
+ public static Vector2 ToSystem(this SharpDX.Vector2 vec) => new(x: vec.X, y: vec.Y);
+
+ ///
+ /// Converts a SharpDX vector to System.Numerics.
+ ///
+ /// Vector to convert.
+ /// A converted vector.
+ public static Vector3 ToSystem(this SharpDX.Vector3 vec) => new(x: vec.X, y: vec.Y, z: vec.Z);
+
+ ///
+ /// Converts a SharpDX vector to System.Numerics.
+ ///
+ /// Vector to convert.
+ /// A converted vector.
+ public static Vector4 ToSystem(this SharpDX.Vector4 vec) => new(x: vec.X, y: vec.Y, z: vec.Z, w: vec.W);
+
+ ///
+ /// Converts a System.Numerics vector to SharpDX.
+ ///
+ /// Vector to convert.
+ /// A converted vector.
+ public static SharpDX.Vector2 ToSharpDX(this Vector2 vec) => new(x: vec.X, y: vec.Y);
+
+ ///
+ /// Converts a System.Numerics vector to SharpDX.
+ ///
+ /// Vector to convert.
+ /// A converted vector.
+ public static SharpDX.Vector3 ToSharpDX(this Vector3 vec) => new(x: vec.X, y: vec.Y, z: vec.Z);
+
+ ///
+ /// Converts a System.Numerics vector to SharpDX.
+ ///
+ /// Vector to convert.
+ /// A converted vector.
+ public static SharpDX.Vector4 ToSharpDX(this Vector4 vec) => new(x: vec.X, y: vec.Y, z: vec.Z, w: vec.W);
+ }
+}