@@ -23,6 +23,7 @@ namespace Chromatics.Core
2323
2424 public static class GameController
2525 {
26+ private static LayerProcessorFactory _layerProcessorFactory ;
2627 private static MemoryHandler _memoryHandler ;
2728 public static event JobChanged jobChanged ;
2829 private static CustomComparers . LayerComparer comparer = new ( ) ;
@@ -45,8 +46,10 @@ public static void Setup()
4546 {
4647 if ( gameSetup ) return ;
4748
49+ _layerProcessorFactory = LayerProcessorFactory . Instance ;
4850 comparer = new CustomComparers . LayerComparer ( ) ;
4951
52+
5053 if ( ! gameConnected )
5154 {
5255 RGBController . StopEffects ( ) ;
@@ -155,6 +158,8 @@ private static void StopGameLoop(bool reconnect = false)
155158 _masterCancellationToken . Dispose ( ) ;
156159 _masterCancellationToken = new CancellationTokenSource ( ) ;
157160
161+ _layerProcessorFactory . DisposeAll ( ) ;
162+
158163 if ( reconnect )
159164 {
160165 _GameConnectionCancellationTokenSource . Dispose ( ) ;
@@ -337,6 +342,8 @@ private static void ConnectFFXIVClient()
337342 Debug . WriteLine ( $ "Found { location . Key } . Location: { location . Value . GetAddress ( ) . ToInt64 ( ) : X} ") ;
338343 }
339344#endif
345+
346+ GC . Collect ( ) ;
340347 }
341348 }
342349 catch ( Exception ex )
@@ -415,6 +422,8 @@ private static void GameProcessLayers()
415422 Debug . WriteLine ( @"User on title or character screen" ) ;
416423#endif
417424
425+ _layerProcessorFactory . DisposeAll ( ) ;
426+
418427 _onTitle = true ;
419428 wasPreviewed = false ;
420429 }
@@ -436,6 +445,7 @@ private static void GameProcessLayers()
436445 RGBController . StopEffects ( ) ;
437446 RGBController . ResetLayerGroups ( ) ;
438447 _onTitle = false ;
448+ GC . Collect ( ) ;
439449 }
440450
441451 }
@@ -466,27 +476,23 @@ private static void GameProcessLayers()
466476 switch ( layer . rootLayerType )
467477 {
468478 case LayerType . BaseLayer :
469-
470- var baseLayerProcessors = BaseLayerProcessorFactory . GetProcessors ( ) ;
471- baseLayerProcessors [ ( BaseLayerType ) layer . layerTypeindex ] . Process ( layer ) ;
479+ var baseProcessor = _layerProcessorFactory . GetProcessor ( ( BaseLayerType ) layer . layerTypeindex ) ;
480+ baseProcessor . Process ( layer ) ;
472481 break ;
473482
474483 case LayerType . DynamicLayer :
475-
476- var dynamicLayerProcessors = DynamicLayerProcessorFactory . GetProcessors ( ) ;
477- dynamicLayerProcessors [ ( DynamicLayerType ) layer . layerTypeindex ] . Process ( layer ) ;
484+ var dynamicProcessor = _layerProcessorFactory . GetProcessor ( ( DynamicLayerType ) layer . layerTypeindex ) ;
485+ dynamicProcessor . Process ( layer ) ;
478486 break ;
479487
480488 case LayerType . EffectLayer :
481- foreach ( var layerProcessor in EffectLayerProcessorFactory . GetProcessors ( ) )
489+ var effectProcessors = EffectLayerProcessorFactory . GetProcessors ( ) ;
490+ foreach ( var effectProcessor in effectProcessors )
482491 {
483- layerProcessor . Value . Process ( layer ) ;
492+ effectProcessor . Value . Process ( layer ) ;
484493 }
485494 break ;
486-
487495 }
488-
489-
490496 }
491497 }
492498 catch ( Exception ex )
0 commit comments