Hi. Dragging the Emote Offsets sliders is no longer updating IPC in real-time.
I believe this is because EmoteConfig is a referential data type, so when the IPC payload is compared to ApiProvider._lastReported, they will compare equal and not send the IPC:
var data = new IpcCharacterConfig(_plugin, gameObject);
if (data.Equals(_lastReported)) return; // <--
// ...
_lastReported = data;
Here, a reference is made to the local player's EmoteConfig, because a deep clone of List<EmoteConfig> is not done:
Hi. Dragging the Emote Offsets sliders is no longer updating IPC in real-time.
I believe this is because EmoteConfig is a referential data type, so when the IPC payload is compared to ApiProvider._lastReported, they will compare equal and not send the IPC:
Here, a reference is made to the local player's EmoteConfig, because a deep clone of
List<EmoteConfig>
is not done:This bug was probably triggered by the removal of legacy IPC data, which might have been disambiguating the JSON objects before.
One solution that fixes this is to change _lastReported to a string instead of an IpcCharacterConfig.