diff --git a/src/main/java/de/extio/game_engine/module/ModuleServiceAutoConfiguration.java b/src/main/java/de/extio/game_engine/module/ModuleServiceAutoConfiguration.java index 4ef106f..8104e05 100644 --- a/src/main/java/de/extio/game_engine/module/ModuleServiceAutoConfiguration.java +++ b/src/main/java/de/extio/game_engine/module/ModuleServiceAutoConfiguration.java @@ -6,6 +6,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; +import de.extio.game_engine.event.EventService; import de.extio.game_engine.renderer.work.RendererWorkingSet; @AutoConfiguration @@ -14,8 +15,8 @@ public class ModuleServiceAutoConfiguration { @Bean @ConditionalOnMissingBean - ModuleService moduleService(final ApplicationContext applicationContext, final RendererWorkingSet rendererWorkingSet) { - return new ModuleServiceImpl(applicationContext, rendererWorkingSet); + ModuleService moduleService(final ApplicationContext applicationContext, final RendererWorkingSet rendererWorkingSet, final EventService eventService) { + return new ModuleServiceImpl(applicationContext, rendererWorkingSet, eventService); } @Bean diff --git a/src/main/java/de/extio/game_engine/module/ModuleServiceImpl.java b/src/main/java/de/extio/game_engine/module/ModuleServiceImpl.java index 6423615..1061936 100644 --- a/src/main/java/de/extio/game_engine/module/ModuleServiceImpl.java +++ b/src/main/java/de/extio/game_engine/module/ModuleServiceImpl.java @@ -17,6 +17,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; +import de.extio.game_engine.event.EventService; import de.extio.game_engine.renderer.work.RendererWorkingSet; public class ModuleServiceImpl implements ModuleService, ApplicationListener { @@ -30,6 +31,8 @@ public class ModuleServiceImpl implements ModuleService, ApplicationListener modulesByIdMap = new ConcurrentHashMap<>(); private final RendererWorkingSet rendererWorkingSet; + + private final EventService eventService; private List modulesAllView = List.of(); @@ -47,9 +50,10 @@ public class ModuleServiceImpl implements ModuleService, ApplicationListener> executorCallbackMap = Collections.synchronizedMap(new EnumMap<>(ModuleExecutorCallbacks.class)); - public ModuleServiceImpl(ApplicationContext applicationContext, final RendererWorkingSet rendererWorkingSet) { + public ModuleServiceImpl(ApplicationContext applicationContext, final RendererWorkingSet rendererWorkingSet, final EventService eventService) { this.applicationContext = applicationContext; this.rendererWorkingSet = rendererWorkingSet; + this.eventService = eventService; } @@ -123,6 +127,8 @@ public class ModuleServiceImpl implements ModuleService, ApplicationListener m.onUnload()); + + this.eventService.unregisterAll(module.getId()); if (module instanceof final AbstractClientModule clientModule) { this.rendererWorkingSet.clear(clientModule.getId()); } @@ -153,6 +159,7 @@ public class ModuleServiceImpl implements ModuleService, ApplicationListener (AbstractClientModule) m) .toList(); } + this.eventService.unregisterAll(module.getId()); if (module instanceof final AbstractClientModule clientModule) { this.rendererWorkingSet.clear(clientModule.getId()); } @@ -164,6 +171,7 @@ public class ModuleServiceImpl implements ModuleService, ApplicationListener