Pass actor in GearsetDataLoaded instead of looking it up.

This commit is contained in:
Ottermandias 2025-04-08 22:53:59 +02:00
parent c0ad4aab51
commit aad978f5f6
3 changed files with 4 additions and 5 deletions

View file

@ -11,7 +11,7 @@ namespace Glamourer.Events;
/// </list>
/// </summary>
public sealed class GearsetDataLoaded()
: EventWrapper<Model, GearsetDataLoaded.Priority>(nameof(GearsetDataLoaded))
: EventWrapper<Actor, Model, GearsetDataLoaded.Priority>(nameof(GearsetDataLoaded))
{
public enum Priority
{

View file

@ -120,7 +120,7 @@ public unsafe class UpdateSlotService : IDisposable
{
var ret = _loadGearsetDataHook.Original(drawDataContainer, gearsetData);
var drawObject = drawDataContainer->OwnerObject->DrawObject;
GearsetDataLoadedEvent.Invoke(drawObject);
GearsetDataLoadedEvent.Invoke(drawDataContainer->OwnerObject, drawObject);
Glamourer.Log.Excessive($"[LoadAllEquipmentDetour] GearsetItemData: {FormatGearsetItemDataStruct(*gearsetData)}");
return ret;
}

View file

@ -264,10 +264,9 @@ public class StateListener : IDisposable
}
}
private void OnGearsetDataLoaded(Model model)
private void OnGearsetDataLoaded(Actor actor, Model model)
{
var actor = _penumbra.GameObjectFromDrawObject(model);
if (_condition[ConditionFlag.CreatingCharacter] && actor.Index >= ObjectIndex.CutsceneStart)
if (!actor.Valid || (_condition[ConditionFlag.CreatingCharacter] && actor.Index >= ObjectIndex.CutsceneStart))
return;
// ensure actor and state are valid.