EffectManager.cs 975 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System;
  2. using System.Collections.Generic;
  3. namespace MeidoPhotoStudio.Plugin;
  4. public class EffectManager : IManager
  5. {
  6. public const string Header = "EFFECT";
  7. public const string Footer = "END_EFFECT";
  8. private readonly Dictionary<Type, IEffectManager> effectManagers = new();
  9. public T Get<T>()
  10. where T : IEffectManager =>
  11. effectManagers.ContainsKey(typeof(T)) ? (T)effectManagers[typeof(T)] : default;
  12. public T AddManager<T>()
  13. where T : IEffectManager, new()
  14. {
  15. var manager = new T();
  16. effectManagers[typeof(T)] = manager;
  17. manager.Activate();
  18. return manager;
  19. }
  20. public void Activate()
  21. {
  22. foreach (var effectManager in effectManagers.Values)
  23. effectManager.Activate();
  24. }
  25. public void Deactivate()
  26. {
  27. foreach (var effectManager in effectManagers.Values)
  28. effectManager.Deactivate();
  29. }
  30. public void Update()
  31. {
  32. }
  33. }