add ipc to get handled addresses

This commit is contained in:
rootdarkarchon
2024-03-03 12:55:42 +01:00
parent 504e1003f4
commit 3bf5cf21ed
5 changed files with 46 additions and 15 deletions

View File

@@ -26,7 +26,7 @@ public sealed class GameObjectHandler : DisposableMediatorSubscriberBase
private CancellationTokenSource _zoningCts = new();
public GameObjectHandler(ILogger<GameObjectHandler> logger, PerformanceCollectorService performanceCollector,
MareMediator mediator, DalamudUtilService dalamudUtil, ObjectKind objectKind, Func<IntPtr> getAddress, bool watchedObject = true) : base(logger, mediator)
MareMediator mediator, DalamudUtilService dalamudUtil, ObjectKind objectKind, Func<IntPtr> getAddress, bool ownedObject = true) : base(logger, mediator)
{
_performanceCollector = performanceCollector;
ObjectKind = objectKind;
@@ -36,10 +36,10 @@ public sealed class GameObjectHandler : DisposableMediatorSubscriberBase
_dalamudUtil.EnsureIsOnFramework();
return getAddress.Invoke();
};
_isOwnedObject = watchedObject;
_isOwnedObject = ownedObject;
Name = string.Empty;
if (watchedObject)
if (ownedObject)
{
Mediator.Subscribe<TransientResourceChangedMessage>(this, (msg) =>
{
@@ -49,7 +49,6 @@ public sealed class GameObjectHandler : DisposableMediatorSubscriberBase
Mediator.Publish(new CreateCacheForObjectMessage(this));
}
});
Mediator.Publish(new AddWatchedGameObjectHandler(this));
}
Mediator.Subscribe<FrameworkUpdateMessage>(this, (_) => FrameworkUpdate());
@@ -87,6 +86,8 @@ public sealed class GameObjectHandler : DisposableMediatorSubscriberBase
}
});
Mediator.Publish(new GameObjectHandlerCreatedMessage(this, _isOwnedObject));
_dalamudUtil.RunOnFrameworkThread(CheckAndUpdateObject).GetAwaiter().GetResult();
}
@@ -174,8 +175,7 @@ public sealed class GameObjectHandler : DisposableMediatorSubscriberBase
{
base.Dispose(disposing);
if (_isOwnedObject)
Mediator.Publish(new RemoveWatchedGameObjectHandler(this));
Mediator.Publish(new GameObjectHandlerDestroyedMessage(this, _isOwnedObject));
}
private unsafe void CheckAndUpdateObject()