mirror of
https://github.com/goatcorp/Dalamud.git
synced 2026-02-16 04:47:45 +01:00
Revert "refactor(Dalamud): switch to file-scoped namespaces"
This reverts commit b5f34c3199.
This commit is contained in:
parent
d473826247
commit
1561fbac00
325 changed files with 45549 additions and 45209 deletions
|
|
@ -1,21 +1,22 @@
|
|||
namespace Dalamud.Interface.Internal.ManagedAsserts;
|
||||
|
||||
/// <summary>
|
||||
/// Offsets to various data in ImGui context.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Last updated for ImGui 1.83.
|
||||
/// </remarks>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1600:Elements should be documented", Justification = "Document the unsage instead.")]
|
||||
internal static class ImGuiContextOffsets
|
||||
namespace Dalamud.Interface.Internal.ManagedAsserts
|
||||
{
|
||||
public const int CurrentWindowStackOffset = 0x73A;
|
||||
/// <summary>
|
||||
/// Offsets to various data in ImGui context.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Last updated for ImGui 1.83.
|
||||
/// </remarks>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1600:Elements should be documented", Justification = "Document the unsage instead.")]
|
||||
internal static class ImGuiContextOffsets
|
||||
{
|
||||
public const int CurrentWindowStackOffset = 0x73A;
|
||||
|
||||
public const int ColorStackOffset = 0x79C;
|
||||
public const int ColorStackOffset = 0x79C;
|
||||
|
||||
public const int StyleVarStackOffset = 0x7A0;
|
||||
public const int StyleVarStackOffset = 0x7A0;
|
||||
|
||||
public const int FontStackOffset = 0x7A4;
|
||||
public const int FontStackOffset = 0x7A4;
|
||||
|
||||
public const int BeginPopupStackOffset = 0x7B8;
|
||||
public const int BeginPopupStackOffset = 0x7B8;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,132 +4,133 @@ using ImGuiNET;
|
|||
|
||||
using static Dalamud.NativeFunctions;
|
||||
|
||||
namespace Dalamud.Interface.Internal.ManagedAsserts;
|
||||
|
||||
/// <summary>
|
||||
/// Report ImGui problems with a MessageBox dialog.
|
||||
/// </summary>
|
||||
internal static class ImGuiManagedAsserts
|
||||
namespace Dalamud.Interface.Internal.ManagedAsserts
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether asserts are enabled for ImGui.
|
||||
/// Report ImGui problems with a MessageBox dialog.
|
||||
/// </summary>
|
||||
public static bool AssertsEnabled { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Create a snapshot of the current ImGui context.
|
||||
/// Should be called before rendering an ImGui frame.
|
||||
/// </summary>
|
||||
/// <returns>A snapshot of the current context.</returns>
|
||||
public static unsafe ImGuiContextSnapshot GetSnapshot()
|
||||
internal static class ImGuiManagedAsserts
|
||||
{
|
||||
var contextPtr = ImGui.GetCurrentContext();
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether asserts are enabled for ImGui.
|
||||
/// </summary>
|
||||
public static bool AssertsEnabled { get; set; }
|
||||
|
||||
var styleVarStack = *((int*)contextPtr + ImGuiContextOffsets.StyleVarStackOffset); // ImVector.Size
|
||||
var colorStack = *((int*)contextPtr + ImGuiContextOffsets.ColorStackOffset); // ImVector.Size
|
||||
var fontStack = *((int*)contextPtr + ImGuiContextOffsets.FontStackOffset); // ImVector.Size
|
||||
var popupStack = *((int*)contextPtr + ImGuiContextOffsets.BeginPopupStackOffset); // ImVector.Size
|
||||
var windowStack = *((int*)contextPtr + ImGuiContextOffsets.CurrentWindowStackOffset); // ImVector.Size
|
||||
|
||||
return new ImGuiContextSnapshot
|
||||
/// <summary>
|
||||
/// Create a snapshot of the current ImGui context.
|
||||
/// Should be called before rendering an ImGui frame.
|
||||
/// </summary>
|
||||
/// <returns>A snapshot of the current context.</returns>
|
||||
public static unsafe ImGuiContextSnapshot GetSnapshot()
|
||||
{
|
||||
StyleVarStackSize = styleVarStack,
|
||||
ColorStackSize = colorStack,
|
||||
FontStackSize = fontStack,
|
||||
BeginPopupStackSize = popupStack,
|
||||
WindowStackSize = windowStack,
|
||||
};
|
||||
}
|
||||
var contextPtr = ImGui.GetCurrentContext();
|
||||
|
||||
/// <summary>
|
||||
/// Compare a snapshot to the current post-draw state and report any errors in a MessageBox dialog.
|
||||
/// </summary>
|
||||
/// <param name="source">The source of any problems, something to blame.</param>
|
||||
/// <param name="before">ImGui context snapshot.</param>
|
||||
public static void ReportProblems(string source, ImGuiContextSnapshot before)
|
||||
{
|
||||
if (!AssertsEnabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var styleVarStack = *((int*)contextPtr + ImGuiContextOffsets.StyleVarStackOffset); // ImVector.Size
|
||||
var colorStack = *((int*)contextPtr + ImGuiContextOffsets.ColorStackOffset); // ImVector.Size
|
||||
var fontStack = *((int*)contextPtr + ImGuiContextOffsets.FontStackOffset); // ImVector.Size
|
||||
var popupStack = *((int*)contextPtr + ImGuiContextOffsets.BeginPopupStackOffset); // ImVector.Size
|
||||
var windowStack = *((int*)contextPtr + ImGuiContextOffsets.CurrentWindowStackOffset); // ImVector.Size
|
||||
|
||||
var cSnap = GetSnapshot();
|
||||
|
||||
if (before.StyleVarStackSize != cSnap.StyleVarStackSize)
|
||||
{
|
||||
ShowAssert(source, $"You forgot to pop a style var!\n\nBefore: {before.StyleVarStackSize}, after: {cSnap.StyleVarStackSize}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (before.ColorStackSize != cSnap.ColorStackSize)
|
||||
{
|
||||
ShowAssert(source, $"You forgot to pop a color!\n\nBefore: {before.ColorStackSize}, after: {cSnap.ColorStackSize}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (before.FontStackSize != cSnap.FontStackSize)
|
||||
{
|
||||
ShowAssert(source, $"You forgot to pop a font!\n\nBefore: {before.FontStackSize}, after: {cSnap.FontStackSize}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (before.BeginPopupStackSize != cSnap.BeginPopupStackSize)
|
||||
{
|
||||
ShowAssert(source, $"You forgot to end a popup!\n\nBefore: {before.BeginPopupStackSize}, after: {cSnap.BeginPopupStackSize}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (cSnap.WindowStackSize != 1)
|
||||
{
|
||||
if (cSnap.WindowStackSize > 1)
|
||||
return new ImGuiContextSnapshot
|
||||
{
|
||||
ShowAssert(source, $"Mismatched Begin/BeginChild vs End/EndChild calls: did you forget to call End/EndChild?\n\ncSnap.WindowStackSize = {cSnap.WindowStackSize}");
|
||||
StyleVarStackSize = styleVarStack,
|
||||
ColorStackSize = colorStack,
|
||||
FontStackSize = fontStack,
|
||||
BeginPopupStackSize = popupStack,
|
||||
WindowStackSize = windowStack,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Compare a snapshot to the current post-draw state and report any errors in a MessageBox dialog.
|
||||
/// </summary>
|
||||
/// <param name="source">The source of any problems, something to blame.</param>
|
||||
/// <param name="before">ImGui context snapshot.</param>
|
||||
public static void ReportProblems(string source, ImGuiContextSnapshot before)
|
||||
{
|
||||
if (!AssertsEnabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
||||
var cSnap = GetSnapshot();
|
||||
|
||||
if (before.StyleVarStackSize != cSnap.StyleVarStackSize)
|
||||
{
|
||||
ShowAssert(source, $"Mismatched Begin/BeginChild vs End/EndChild calls: did you call End/EndChild too much?\n\ncSnap.WindowStackSize = {cSnap.WindowStackSize}");
|
||||
ShowAssert(source, $"You forgot to pop a style var!\n\nBefore: {before.StyleVarStackSize}, after: {cSnap.StyleVarStackSize}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (before.ColorStackSize != cSnap.ColorStackSize)
|
||||
{
|
||||
ShowAssert(source, $"You forgot to pop a color!\n\nBefore: {before.ColorStackSize}, after: {cSnap.ColorStackSize}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (before.FontStackSize != cSnap.FontStackSize)
|
||||
{
|
||||
ShowAssert(source, $"You forgot to pop a font!\n\nBefore: {before.FontStackSize}, after: {cSnap.FontStackSize}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (before.BeginPopupStackSize != cSnap.BeginPopupStackSize)
|
||||
{
|
||||
ShowAssert(source, $"You forgot to end a popup!\n\nBefore: {before.BeginPopupStackSize}, after: {cSnap.BeginPopupStackSize}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (cSnap.WindowStackSize != 1)
|
||||
{
|
||||
if (cSnap.WindowStackSize > 1)
|
||||
{
|
||||
ShowAssert(source, $"Mismatched Begin/BeginChild vs End/EndChild calls: did you forget to call End/EndChild?\n\ncSnap.WindowStackSize = {cSnap.WindowStackSize}");
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowAssert(source, $"Mismatched Begin/BeginChild vs End/EndChild calls: did you call End/EndChild too much?\n\ncSnap.WindowStackSize = {cSnap.WindowStackSize}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void ShowAssert(string source, string message)
|
||||
{
|
||||
var caption = $"You fucked up";
|
||||
message = $"{message}\n\nSource: {source}\n\nAsserts are now disabled. You may re-enable them.";
|
||||
var flags = MessageBoxType.Ok | MessageBoxType.IconError;
|
||||
private static void ShowAssert(string source, string message)
|
||||
{
|
||||
var caption = $"You fucked up";
|
||||
message = $"{message}\n\nSource: {source}\n\nAsserts are now disabled. You may re-enable them.";
|
||||
var flags = MessageBoxType.Ok | MessageBoxType.IconError;
|
||||
|
||||
_ = MessageBoxW(Process.GetCurrentProcess().MainWindowHandle, message, caption, flags);
|
||||
AssertsEnabled = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A snapshot of various ImGui context properties.
|
||||
/// </summary>
|
||||
public class ImGuiContextSnapshot
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the ImGui style var stack size.
|
||||
/// </summary>
|
||||
public int StyleVarStackSize { get; init; }
|
||||
_ = MessageBoxW(Process.GetCurrentProcess().MainWindowHandle, message, caption, flags);
|
||||
AssertsEnabled = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the ImGui color stack size.
|
||||
/// A snapshot of various ImGui context properties.
|
||||
/// </summary>
|
||||
public int ColorStackSize { get; init; }
|
||||
public class ImGuiContextSnapshot
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the ImGui style var stack size.
|
||||
/// </summary>
|
||||
public int StyleVarStackSize { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the ImGui font stack size.
|
||||
/// </summary>
|
||||
public int FontStackSize { get; init; }
|
||||
/// <summary>
|
||||
/// Gets the ImGui color stack size.
|
||||
/// </summary>
|
||||
public int ColorStackSize { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the ImGui begin popup stack size.
|
||||
/// </summary>
|
||||
public int BeginPopupStackSize { get; init; }
|
||||
/// <summary>
|
||||
/// Gets the ImGui font stack size.
|
||||
/// </summary>
|
||||
public int FontStackSize { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the ImGui window stack size.
|
||||
/// </summary>
|
||||
public int WindowStackSize { get; init; }
|
||||
/// <summary>
|
||||
/// Gets the ImGui begin popup stack size.
|
||||
/// </summary>
|
||||
public int BeginPopupStackSize { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the ImGui window stack size.
|
||||
/// </summary>
|
||||
public int WindowStackSize { get; init; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue