diff --git a/GamecraftModdingAPI/Events/MenuActivatedPatch.cs b/GamecraftModdingAPI/Events/MenuActivatedPatch.cs index 2b66a05..4237faa 100644 --- a/GamecraftModdingAPI/Events/MenuActivatedPatch.cs +++ b/GamecraftModdingAPI/Events/MenuActivatedPatch.cs @@ -31,6 +31,7 @@ namespace GamecraftModdingAPI.Events { firstLoad = false; FullGameFields.Init(__instance); + //Application.Application.SetFullGameCompositionRoot(__instance); Logging.Log("Dispatching App Init event"); EventManager.GetEventEmitter("GamecraftModdingAPIApplicationInitializedEventEmitter").Emit(); } diff --git a/GamecraftModdingAPI/Events/SimpleEventHandlerEngine.cs b/GamecraftModdingAPI/Events/SimpleEventHandlerEngine.cs index 133ad29..18314d9 100644 --- a/GamecraftModdingAPI/Events/SimpleEventHandlerEngine.cs +++ b/GamecraftModdingAPI/Events/SimpleEventHandlerEngine.cs @@ -20,6 +20,10 @@ namespace GamecraftModdingAPI.Events private bool isActivated = false; + private bool jankActivateFix = false; + + private bool jankDestroyFix = false; + private readonly Action onActivated; private readonly Action onDestroyed; @@ -32,6 +36,8 @@ namespace GamecraftModdingAPI.Events { if (entityView.type.Equals(this.type)) { + jankActivateFix = !jankActivateFix; + if (jankActivateFix) return; isActivated = true; onActivatedInvokeCatchError(entitiesDB); } @@ -51,12 +57,19 @@ namespace GamecraftModdingAPI.Events } } + public void Deactivate() + { + isActivated = false; + } + public void Ready() { } public void Remove(ref ModEventEntityStruct entityView, EGID egid) { if (entityView.type.Equals(this.type) && isActivated) { + jankDestroyFix = !jankDestroyFix; + if (jankDestroyFix) return; isActivated = false; onDestroyedInvokeCatchError(entitiesDB); }