|
@@ -1,39 +1,55 @@
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+
|
|
|
namespace COM3D2.MeidoPhotoStudio.Plugin
|
|
|
{
|
|
|
internal class EffectManager
|
|
|
{
|
|
|
- public BloomEffectManager BloomEffectManager { get; }
|
|
|
- public DepthOfFieldEffectManager DepthOfFieldEffectManager { get; }
|
|
|
- public VignetteEffectManager VignetteEffectManager { get; }
|
|
|
- public FogEffectManager FogEffectManager { get; }
|
|
|
+ private Dictionary<Type, IEffectManager> EffectManagers = new Dictionary<Type, IEffectManager>();
|
|
|
+ private BloomEffectManager bloomEffectManager;
|
|
|
|
|
|
public EffectManager()
|
|
|
{
|
|
|
- BloomEffectManager = new BloomEffectManager();
|
|
|
- DepthOfFieldEffectManager = new DepthOfFieldEffectManager();
|
|
|
- VignetteEffectManager = new VignetteEffectManager();
|
|
|
- FogEffectManager = new FogEffectManager();
|
|
|
+ // Not going to add more effects because SceneCapture does it better anyway
|
|
|
+ bloomEffectManager = AddManager<BloomEffectManager>();
|
|
|
+ AddManager<DepthOfFieldEffectManager>();
|
|
|
+ AddManager<VignetteEffectManager>();
|
|
|
+ AddManager<FogEffectManager>();
|
|
|
+ }
|
|
|
+
|
|
|
+ public T Get<T>() where T : IEffectManager
|
|
|
+ {
|
|
|
+ if (EffectManagers.ContainsKey(typeof(T))) return (T)EffectManagers[typeof(T)];
|
|
|
+ else return default(T);
|
|
|
+ }
|
|
|
+
|
|
|
+ private T AddManager<T>() where T : IEffectManager, new()
|
|
|
+ {
|
|
|
+ T manager = new T();
|
|
|
+ EffectManagers[typeof(T)] = manager;
|
|
|
+ return manager;
|
|
|
}
|
|
|
|
|
|
public void Activate()
|
|
|
{
|
|
|
- BloomEffectManager.Activate();
|
|
|
- DepthOfFieldEffectManager.Activate();
|
|
|
- VignetteEffectManager.Activate();
|
|
|
- FogEffectManager.Activate();
|
|
|
+ foreach (IEffectManager effectManager in EffectManagers.Values)
|
|
|
+ {
|
|
|
+ effectManager.Activate();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public void Deactivate()
|
|
|
{
|
|
|
- BloomEffectManager.Deactivate();
|
|
|
- DepthOfFieldEffectManager.Deactivate();
|
|
|
- VignetteEffectManager.Deactivate();
|
|
|
- FogEffectManager.Deactivate();
|
|
|
+ foreach (IEffectManager effectManager in EffectManagers.Values)
|
|
|
+ {
|
|
|
+ effectManager.Deactivate();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public void Update()
|
|
|
{
|
|
|
- BloomEffectManager.Update();
|
|
|
+ // Bloom is the only effect that needs to update because I'm dumb/lazy
|
|
|
+ bloomEffectManager.Update();
|
|
|
}
|
|
|
}
|
|
|
}
|