diff --git a/OtterGui b/OtterGui
index dc4ad8a5..c69f49e0 160000
--- a/OtterGui
+++ b/OtterGui
@@ -1 +1 @@
-Subproject commit dc4ad8a5fd0347642d3fdae5f2dc17a7fbfacaa1
+Subproject commit c69f49e026e17e81df546aa0621f1f575a22534d
diff --git a/Penumbra.GameData/Structs/CustomizeData.cs b/Penumbra.GameData/Structs/CustomizeData.cs
index c60ee746..37660c08 100644
--- a/Penumbra.GameData/Structs/CustomizeData.cs
+++ b/Penumbra.GameData/Structs/CustomizeData.cs
@@ -74,7 +74,7 @@ public unsafe struct CustomizeData : IEquatable< CustomizeData >
}
}
- public string WriteBytes()
+ public override string ToString()
{
var sb = new StringBuilder(Size * 3);
for (var i = 0; i < Size - 1; ++i)
diff --git a/Penumbra/Communication/ChangedItemClick.cs b/Penumbra/Communication/ChangedItemClick.cs
index fd879280..80ff8e75 100644
--- a/Penumbra/Communication/ChangedItemClick.cs
+++ b/Penumbra/Communication/ChangedItemClick.cs
@@ -1,6 +1,6 @@
using System;
+using OtterGui.Classes;
using Penumbra.Api.Enums;
-using Penumbra.Util;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/ChangedItemHover.cs b/Penumbra/Communication/ChangedItemHover.cs
index 9a658769..afedf8fd 100644
--- a/Penumbra/Communication/ChangedItemHover.cs
+++ b/Penumbra/Communication/ChangedItemHover.cs
@@ -1,5 +1,5 @@
using System;
-using Penumbra.Util;
+using OtterGui.Classes;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/CollectionChange.cs b/Penumbra/Communication/CollectionChange.cs
index c5a0b93f..7c4946d2 100644
--- a/Penumbra/Communication/CollectionChange.cs
+++ b/Penumbra/Communication/CollectionChange.cs
@@ -1,7 +1,7 @@
using System;
+using OtterGui.Classes;
using Penumbra.Collections;
using Penumbra.Collections.Manager;
-using Penumbra.Util;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/CollectionInheritanceChanged.cs b/Penumbra/Communication/CollectionInheritanceChanged.cs
index 3562f457..00e90546 100644
--- a/Penumbra/Communication/CollectionInheritanceChanged.cs
+++ b/Penumbra/Communication/CollectionInheritanceChanged.cs
@@ -1,6 +1,6 @@
using System;
+using OtterGui.Classes;
using Penumbra.Collections;
-using Penumbra.Util;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/CreatedCharacterBase.cs b/Penumbra/Communication/CreatedCharacterBase.cs
index adb92bfe..cbb86fc2 100644
--- a/Penumbra/Communication/CreatedCharacterBase.cs
+++ b/Penumbra/Communication/CreatedCharacterBase.cs
@@ -1,6 +1,6 @@
using System;
+using OtterGui.Classes;
using Penumbra.Api;
-using Penumbra.Util;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/CreatingCharacterBase.cs b/Penumbra/Communication/CreatingCharacterBase.cs
index 8dc1c634..6161a984 100644
--- a/Penumbra/Communication/CreatingCharacterBase.cs
+++ b/Penumbra/Communication/CreatingCharacterBase.cs
@@ -1,6 +1,6 @@
using System;
+using OtterGui.Classes;
using Penumbra.Api;
-using Penumbra.Util;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/EnabledChanged.cs b/Penumbra/Communication/EnabledChanged.cs
index 793663b9..dee5e50f 100644
--- a/Penumbra/Communication/EnabledChanged.cs
+++ b/Penumbra/Communication/EnabledChanged.cs
@@ -1,6 +1,6 @@
using System;
+using OtterGui.Classes;
using Penumbra.Api;
-using Penumbra.Util;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/ModDataChanged.cs b/Penumbra/Communication/ModDataChanged.cs
index 8f16dcfe..941ed4d5 100644
--- a/Penumbra/Communication/ModDataChanged.cs
+++ b/Penumbra/Communication/ModDataChanged.cs
@@ -1,7 +1,7 @@
using System;
+using OtterGui.Classes;
using Penumbra.Mods;
using Penumbra.Mods.Manager;
-using Penumbra.Util;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/ModDirectoryChanged.cs b/Penumbra/Communication/ModDirectoryChanged.cs
index 0f30b71b..5a3fb473 100644
--- a/Penumbra/Communication/ModDirectoryChanged.cs
+++ b/Penumbra/Communication/ModDirectoryChanged.cs
@@ -1,6 +1,6 @@
using System;
+using OtterGui.Classes;
using Penumbra.Api;
-using Penumbra.Util;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/ModDiscoveryFinished.cs b/Penumbra/Communication/ModDiscoveryFinished.cs
index 1471d7d7..b8e4e460 100644
--- a/Penumbra/Communication/ModDiscoveryFinished.cs
+++ b/Penumbra/Communication/ModDiscoveryFinished.cs
@@ -1,5 +1,5 @@
using System;
-using Penumbra.Util;
+using OtterGui.Classes;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/ModDiscoveryStarted.cs b/Penumbra/Communication/ModDiscoveryStarted.cs
index 4e98a3e0..ee193681 100644
--- a/Penumbra/Communication/ModDiscoveryStarted.cs
+++ b/Penumbra/Communication/ModDiscoveryStarted.cs
@@ -1,5 +1,5 @@
using System;
-using Penumbra.Util;
+using OtterGui.Classes;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/ModOptionChanged.cs b/Penumbra/Communication/ModOptionChanged.cs
index cacc7a89..a86826a3 100644
--- a/Penumbra/Communication/ModOptionChanged.cs
+++ b/Penumbra/Communication/ModOptionChanged.cs
@@ -1,7 +1,7 @@
using System;
+using OtterGui.Classes;
using Penumbra.Mods;
using Penumbra.Mods.Manager;
-using Penumbra.Util;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/ModPathChanged.cs b/Penumbra/Communication/ModPathChanged.cs
index e35a0ff4..675759dd 100644
--- a/Penumbra/Communication/ModPathChanged.cs
+++ b/Penumbra/Communication/ModPathChanged.cs
@@ -1,9 +1,9 @@
using System;
using System.IO;
+using OtterGui.Classes;
using Penumbra.Api;
using Penumbra.Mods;
using Penumbra.Mods.Manager;
-using Penumbra.Util;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/ModSettingChanged.cs b/Penumbra/Communication/ModSettingChanged.cs
index 6445b956..c3c9f671 100644
--- a/Penumbra/Communication/ModSettingChanged.cs
+++ b/Penumbra/Communication/ModSettingChanged.cs
@@ -1,9 +1,9 @@
using System;
+using OtterGui.Classes;
using Penumbra.Api;
using Penumbra.Api.Enums;
using Penumbra.Collections;
using Penumbra.Mods;
-using Penumbra.Util;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/PostSettingsPanelDraw.cs b/Penumbra/Communication/PostSettingsPanelDraw.cs
index e460e369..f653bd0b 100644
--- a/Penumbra/Communication/PostSettingsPanelDraw.cs
+++ b/Penumbra/Communication/PostSettingsPanelDraw.cs
@@ -1,5 +1,5 @@
using System;
-using Penumbra.Util;
+using OtterGui.Classes;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/PreSettingsPanelDraw.cs b/Penumbra/Communication/PreSettingsPanelDraw.cs
index c3e182b0..1167e92f 100644
--- a/Penumbra/Communication/PreSettingsPanelDraw.cs
+++ b/Penumbra/Communication/PreSettingsPanelDraw.cs
@@ -1,5 +1,5 @@
using System;
-using Penumbra.Util;
+using OtterGui.Classes;
namespace Penumbra.Communication;
diff --git a/Penumbra/Communication/TemporaryGlobalModChange.cs b/Penumbra/Communication/TemporaryGlobalModChange.cs
index 1f0352a2..8906627b 100644
--- a/Penumbra/Communication/TemporaryGlobalModChange.cs
+++ b/Penumbra/Communication/TemporaryGlobalModChange.cs
@@ -1,6 +1,6 @@
using System;
+using OtterGui.Classes;
using Penumbra.Mods;
-using Penumbra.Util;
namespace Penumbra.Communication;
diff --git a/Penumbra/Services/CommunicatorService.cs b/Penumbra/Services/CommunicatorService.cs
index 371722b2..3e499317 100644
--- a/Penumbra/Services/CommunicatorService.cs
+++ b/Penumbra/Services/CommunicatorService.cs
@@ -1,10 +1,17 @@
using System;
+using OtterGui.Classes;
+using OtterGui.Log;
using Penumbra.Communication;
namespace Penumbra.Services;
public class CommunicatorService : IDisposable
{
+ public CommunicatorService(Logger logger)
+ {
+ EventWrapper.ChangeLogger(logger);
+ }
+
///
public readonly CollectionChange CollectionChange = new();
diff --git a/Penumbra/Util/EventWrapper.cs b/Penumbra/Util/EventWrapper.cs
deleted file mode 100644
index d8d86d5a..00000000
--- a/Penumbra/Util/EventWrapper.cs
+++ /dev/null
@@ -1,190 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace Penumbra.Util;
-
-public abstract class EventWrapper : IDisposable
- where T : Delegate
- where TPriority : struct, Enum
-{
- private readonly string _name;
- private readonly List<(object Subscriber, TPriority Priority)> _event = new();
-
- public bool HasSubscribers
- => _event.Count > 0;
-
- protected EventWrapper(string name)
- => _name = name;
-
- public void Dispose()
- {
- lock (_event)
- {
- _event.Clear();
- }
- }
-
- public void Subscribe(T subscriber, TPriority priority)
- {
- lock (_event)
- {
- var existingIdx = _event.FindIndex(p => (T)p.Subscriber == subscriber);
- var idx = _event.FindIndex(p => p.Priority.CompareTo(priority) > 0);
- if (idx == existingIdx)
- {
- if (idx < 0)
- _event.Add((subscriber, priority));
- else
- _event[idx] = (subscriber, priority);
- }
- else
- {
- if (idx < 0)
- _event.Add((subscriber, priority));
- else
- _event.Insert(idx, (subscriber, priority));
-
- if (existingIdx >= 0)
- _event.RemoveAt(existingIdx < idx ? existingIdx : existingIdx + 1);
- }
- }
- }
-
- public void Unsubscribe(T subscriber)
- {
- lock (_event)
- {
- var idx = _event.FindIndex(p => (T)p.Subscriber == subscriber);
- if (idx >= 0)
- _event.RemoveAt(idx);
- }
- }
-
-
- protected static void Invoke(EventWrapper wrapper)
- {
- lock (wrapper._event)
- {
- foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse())
- {
- try
- {
- ((Action)action).Invoke();
- }
- catch (Exception ex)
- {
- Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}");
- }
- }
- }
- }
-
- protected static void Invoke(EventWrapper wrapper, T1 a)
- {
- lock (wrapper._event)
- {
- foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse())
- {
- try
- {
- ((Action)action).Invoke(a);
- }
- catch (Exception ex)
- {
- Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}");
- }
- }
- }
- }
-
- protected static void Invoke(EventWrapper wrapper, T1 a, T2 b)
- {
- lock (wrapper._event)
- {
- foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse())
- {
- try
- {
- ((Action)action).Invoke(a, b);
- }
- catch (Exception ex)
- {
- Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}");
- }
- }
- }
- }
-
- protected static void Invoke(EventWrapper wrapper, T1 a, T2 b, T3 c)
- {
- lock (wrapper._event)
- {
- foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse())
- {
- try
- {
- ((Action)action).Invoke(a, b, c);
- }
- catch (Exception ex)
- {
- Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}");
- }
- }
- }
- }
-
- protected static void Invoke(EventWrapper wrapper, T1 a, T2 b, T3 c, T4 d)
- {
- lock (wrapper._event)
- {
- foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse())
- {
- try
- {
- ((Action)action).Invoke(a, b, c, d);
- }
- catch (Exception ex)
- {
- Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}");
- }
- }
- }
- }
-
- protected static void Invoke(EventWrapper wrapper, T1 a, T2 b, T3 c, T4 d, T5 e)
- {
- lock (wrapper._event)
- {
- foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse())
- {
- try
- {
- ((Action)action).Invoke(a, b, c, d, e);
- }
- catch (Exception ex)
- {
- Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}");
- }
- }
- }
- }
-
- protected static void Invoke(EventWrapper wrapper, T1 a, T2 b, T3 c, T4 d, T5 e, T6 f)
- {
- lock (wrapper._event)
- {
- foreach (var (action, _) in wrapper._event.AsEnumerable().Reverse())
- {
- try
- {
- ((Action)action).Invoke(a, b, c, d, e, f);
- }
- catch (Exception ex)
- {
- Penumbra.Log.Error($"[{wrapper._name}] Exception thrown during invocation:\n{ex}");
- }
- }
- }
- }
-}