net.dreditor.camerapostprocess 0.0.0-stage → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/.attestation.p7m +0 -0
  2. package/BlurCameraRenderManager.cs +214 -0
  3. package/BlurCameraRenderManager.cs.meta +11 -0
  4. package/BlurRenderQueueSettings.cs +29 -0
  5. package/BlurRenderQueueSettings.cs.meta +11 -0
  6. package/BlurSettingsHandler.cs +59 -0
  7. package/BlurSettingsHandler.cs.meta +11 -0
  8. package/BlurVisionEvent.cs +209 -0
  9. package/BlurVisionEvent.cs.meta +11 -0
  10. package/CameraPostProcessingExtentions.cs +45 -0
  11. package/CameraPostProcessingExtentions.cs.meta +11 -0
  12. package/DREditor.CameraPostProcess.asmdef +20 -0
  13. package/DREditor.CameraPostProcess.asmdef.meta +7 -0
  14. package/PostProcessChanger.cs +224 -0
  15. package/PostProcessChanger.cs.meta +11 -0
  16. package/PostProcessState.cs +67 -0
  17. package/PostProcessState.cs.meta +11 -0
  18. package/PostProcessingColorEventHandler.cs +173 -0
  19. package/PostProcessingColorEventHandler.cs.meta +11 -0
  20. package/Samples~/BlurRenderQueueSettings.asset +15 -0
  21. package/Samples~/BlurRenderQueueSettings.asset.meta +8 -0
  22. package/Samples~/Blur_Camera_Render_Manager.prefab +73 -0
  23. package/Samples~/Blur_Camera_Render_Manager.prefab.meta +7 -0
  24. package/Samples~/PostProcessState Blur Camera.asset +19 -0
  25. package/Samples~/PostProcessState Blur Camera.asset.meta +8 -0
  26. package/Samples~/PostProcessState Dialogue Camera.asset +19 -0
  27. package/Samples~/PostProcessState Dialogue Camera.asset.meta +8 -0
  28. package/Samples~/PostProcessState Main Camera.asset +19 -0
  29. package/Samples~/PostProcessState Main Camera.asset.meta +8 -0
  30. package/Samples~/PostProcessState Protag Camera.asset +19 -0
  31. package/Samples~/PostProcessState Protag Camera.asset.meta +8 -0
  32. package/package.json +40 -4
  33. package/package.json.meta +7 -0
  34. package/readme.txt +23 -0
  35. package/readme.txt.meta +7 -0
  36. package/README.md +0 -3
Binary file
@@ -0,0 +1,214 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ #if DOTWEEN
3
+ using DG.Tweening;
4
+ #endif
5
+ using DREditor.EventObjects;
6
+ using DREditor.Services;
7
+ using System.Collections.Generic;
8
+ using System.Linq;
9
+ using UnityEngine;
10
+
11
+ namespace DREditor.CamerasPostProcess
12
+ {
13
+ /// <summary>
14
+ ///
15
+ /// </summary>
16
+ [ClassHeader(nameof(ServiceHolder<BlurCameraRenderManager>) + " for type: " + nameof(BlurCameraRenderManager) +
17
+ "\n\n")]
18
+ public class BlurCameraRenderManager : ServiceHolder<BlurCameraRenderManager>, IToTitleScreen
19
+ {
20
+ /// <summary>
21
+ ///
22
+ /// </summary>
23
+ [Header("")]
24
+ [Divider]
25
+ [Tooltip("")]
26
+ [SerializeField] protected bool lowSpecCamRender = false;
27
+
28
+ /// <summary>
29
+ ///
30
+ /// </summary>
31
+ [ReadOnly]
32
+ [Tooltip("")]
33
+ [SerializeField] protected List<string> renderingCodes = new();
34
+
35
+
36
+ /// <summary>
37
+ ///
38
+ /// </summary>
39
+ [Header("")]
40
+ [Divider]
41
+ [Tooltip("")]
42
+ [SerializeField] protected StringWithEvent blurCamCode = null;
43
+
44
+ /// <summary>
45
+ ///
46
+ /// </summary>
47
+ [Tooltip("")]
48
+ [SerializeField] protected BoolWithEvent blurCameraEnabled = null;
49
+
50
+
51
+ /// <summary>
52
+ ///
53
+ /// </summary>
54
+ [Header("")]
55
+ [Divider]
56
+ [Tooltip("")]
57
+ [SerializeField] UnityEngine.Camera dialogueCamera = null;
58
+
59
+ /// <summary>
60
+ ///
61
+ /// </summary>
62
+ [Tooltip("")]
63
+ [SerializeField] protected string dialogueCameraName = "Dialogue";
64
+
65
+ /// <summary>
66
+ ///
67
+ /// </summary>
68
+ [Tooltip("")]
69
+ [SerializeField] protected string renderCamCode = "Cam";
70
+
71
+
72
+ /// <summary>
73
+ ///
74
+ /// </summary>
75
+ protected bool mainCameraIsTweening = false;
76
+
77
+
78
+ /// <inheritdoc/>
79
+ protected override void Awake()
80
+ {
81
+ base.Awake();
82
+
83
+ renderingCodes.RemoveAll(string.IsNullOrWhiteSpace);
84
+
85
+ InitializeMissingCamera(ref dialogueCamera, dialogueCameraName);
86
+ }
87
+
88
+ /// <summary>
89
+ ///
90
+ /// </summary>
91
+ /// <param name="camera"></param>
92
+ /// <param name="identifier"></param>
93
+ protected virtual void InitializeMissingCamera(ref UnityEngine.Camera camera, string identifier)
94
+ {
95
+ if (camera == null)
96
+ camera = FindObjectsByType<UnityEngine.Camera>()
97
+ .Where(camera => camera.gameObject.name.Contains(identifier))
98
+ .FirstOrDefault();
99
+ }
100
+
101
+ /// <summary>
102
+ ///
103
+ /// </summary>
104
+ protected virtual void Start() => blurCamCode.AddListener(EvaluateCameraCode);
105
+
106
+ /// <summary>
107
+ ///
108
+ /// </summary>
109
+ protected virtual void OnDisable() => blurCamCode.RemoveListener(EvaluateCameraCode);
110
+
111
+ /// <summary>
112
+ ///
113
+ /// </summary>
114
+ /// <param name="renderCode"></param>
115
+ protected virtual void EvaluateCameraCode(string renderCode)
116
+ {
117
+ if (!renderingCodes.Contains(renderCode))
118
+ AddRenderQueue(renderCode);
119
+ else
120
+ RemoveRenderQueue(renderCode);
121
+ }
122
+ #if DOTWEEN
123
+ /// <summary>
124
+ ///
125
+ /// </summary>
126
+ protected virtual void Update()
127
+ {
128
+ if (lowSpecCamRender)
129
+ CheckIfCamerasTweening();
130
+ }
131
+
132
+ /// <summary>
133
+ ///
134
+ /// </summary>
135
+ protected virtual void CheckIfCamerasTweening()
136
+ {
137
+ if (DOTween.IsTweening(dialogueCamera.transform) && !mainCameraIsTweening)
138
+ {
139
+ AddRenderQueue(renderCamCode);
140
+
141
+ mainCameraIsTweening = true;
142
+ }
143
+ else if (!DOTween.IsTweening(dialogueCamera.transform) && mainCameraIsTweening)
144
+ {
145
+ RemoveRenderQueue(renderCamCode);
146
+
147
+ mainCameraIsTweening = false;
148
+ }
149
+ }
150
+ #endif
151
+ /// <summary>
152
+ ///
153
+ /// </summary>
154
+ /// <param name="queueCode"></param>
155
+ public virtual void AddRenderQueue(string queueCode)
156
+ {
157
+ if (!lowSpecCamRender || string.IsNullOrEmpty(queueCode))
158
+ return;
159
+
160
+ if (renderingCodes.Count == 0)
161
+ blurCameraEnabled.SetValue(true);
162
+
163
+ UnityEngine.Debug.Log($"REPORT: {ToString()}: Adding to render queue" + queueCode);
164
+
165
+ renderingCodes.Add(queueCode);
166
+ }
167
+
168
+ /// <summary>
169
+ ///
170
+ /// </summary>
171
+ /// <param name="queueCode"></param>
172
+ public virtual void RemoveRenderQueue(string queueCode)
173
+ {
174
+ if (!lowSpecCamRender || string.IsNullOrEmpty(queueCode))
175
+ return;
176
+
177
+ renderingCodes.Remove(queueCode);
178
+
179
+ UnityEngine.Debug.Log($"REPORT: {ToString()}: Removing from render queue" + queueCode);
180
+ #if DOTWEEN
181
+ if (renderingCodes.Count == 0 && !DOTween.IsTweening(dialogueCamera.transform))
182
+ #else
183
+ if (renderingCodes.Count == 0)
184
+ #endif
185
+ blurCameraEnabled.SetValue(false);
186
+ }
187
+
188
+ /// <summary>
189
+ ///
190
+ /// </summary>
191
+ /// <returns></returns>
192
+ public virtual bool UsingLowSpecCamRender() => lowSpecCamRender;
193
+
194
+ /// <summary>
195
+ ///
196
+ /// </summary>
197
+ /// <param name="to"></param>
198
+ public virtual void SetLowSpecCamRender(bool to) => lowSpecCamRender = to;
199
+
200
+
201
+ /// <inheritdoc/>
202
+ public virtual void ToTitleScreen() => ClearRenderQ();
203
+
204
+ /// <summary>
205
+ ///
206
+ /// </summary>
207
+ protected virtual void ClearRenderQ()
208
+ {
209
+ renderingCodes.Clear();
210
+
211
+ blurCameraEnabled.SetValue(false);
212
+ }
213
+ }
214
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 8afa7dbabfb774c47b3cc430ab9cf22e
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -0,0 +1,29 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using System;
3
+ using UnityEngine;
4
+
5
+ namespace DREditor.CamerasPostProcess
6
+ {
7
+ /// <summary>
8
+ ///
9
+ /// </summary>
10
+ [Serializable]
11
+ [CreateAssetMenu(menuName = "DREditor/Game Settings/Blur Render Queue Settings", fileName = "BlurRenderQueueSettings")]
12
+ public class BlurRenderQueueSettings : ScriptableObject
13
+ {
14
+ /// <summary>
15
+ ///
16
+ /// </summary>
17
+ [Header("")]
18
+ [Divider]
19
+ [Tooltip("")]
20
+ public bool useRenderQueue = false;
21
+
22
+
23
+ public virtual void PopulateData(ScriptableObject obj)
24
+ {
25
+ if (obj is BlurRenderQueueSettings settings)
26
+ useRenderQueue = settings.useRenderQueue;
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 843c041e60e78294e9751f260164fcca
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -0,0 +1,59 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.CustomSettings;
3
+ using System.Collections.Generic;
4
+ using System.Linq;
5
+ using UnityEngine;
6
+
7
+ namespace DREditor.CamerasPostProcess
8
+ {
9
+ /// <summary>
10
+ ///
11
+ /// </summary>
12
+ [ClassHeader("")]
13
+ public class BlurSettingsHandler : MonoBehaviour, ICustomGameSettingsHandler
14
+ {
15
+ /// <summary>
16
+ ///
17
+ /// </summary>
18
+ [Tooltip("")]
19
+ [SerializeField] protected string gameSettingID = "BlurCameraQueueManager";
20
+
21
+ /// <summary>
22
+ ///
23
+ /// </summary>
24
+ [Tooltip("")]
25
+ [SerializeField] protected BlurCameraRenderManager blurCamManager;
26
+
27
+ /// <summary>
28
+ ///
29
+ /// </summary>
30
+ [Tooltip("")]
31
+ [SerializeField] protected BlurRenderQueueSettings renderQueueSettings;
32
+
33
+
34
+ /// <inheritdoc/>
35
+ public virtual CustomGameSettings Save() => new(gameSettingID, CustomGameSettings.JObjectSerialize(renderQueueSettings));
36
+
37
+ /// <inheritdoc/>
38
+ public virtual void Load(List<CustomGameSettings> customSettings)
39
+ {
40
+ CustomGameSettings settings = customSettings.Where(x => x.ID == gameSettingID).ToList()[0];
41
+
42
+ BlurRenderQueueSettings loadedBlurSettings =
43
+ CustomGameSettings.JObjectDeserialize<BlurRenderQueueSettings>(settings.data);
44
+
45
+ LoadBlurSettings(loadedBlurSettings);
46
+ }
47
+
48
+ /// <summary>
49
+ ///
50
+ /// </summary>
51
+ /// <param name="settings"></param>
52
+ protected virtual void LoadBlurSettings(BlurRenderQueueSettings settings)
53
+ {
54
+ renderQueueSettings.PopulateData(settings);
55
+
56
+ blurCamManager.SetLowSpecCamRender(settings.useRenderQueue);
57
+ }
58
+ }
59
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: cf2dbc0c1f04233419616491c4f44eef
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -0,0 +1,209 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ #if DOTWEEN
3
+ using DG.Tweening;
4
+ #endif
5
+ using DREditor.Dialogues.Events;
6
+ using UnityEngine;
7
+ using UnityEngine.Rendering;
8
+ using UnityEngine.Rendering.Universal;
9
+
10
+ namespace DREditor.CamerasPostProcess
11
+ {
12
+ /// <summary>
13
+ ///
14
+ /// </summary>
15
+ [ClassHeader("")]
16
+ public class BlurVisionEvent : MonoBehaviour
17
+ {
18
+ /// <summary>
19
+ ///
20
+ /// </summary>
21
+ [Header("")]
22
+ [Divider]
23
+ [Tooltip("")]
24
+ [SerializeField] protected string blurVisionEventString = "BlurVision";
25
+
26
+ /// <summary>
27
+ ///
28
+ /// </summary>
29
+ [Tooltip("")]
30
+ [SerializeField] protected string stopBlurVisionEventString = "StopBlur";
31
+
32
+
33
+ /// <summary>
34
+ ///
35
+ /// </summary>
36
+ [Header("")]
37
+ [Divider]
38
+ [Tooltip("")]
39
+ [SerializeField] protected Volume blurProfile = null;
40
+
41
+ /// <summary>
42
+ ///
43
+ /// </summary>
44
+ [Tooltip("")]
45
+ [SerializeField] protected UniversalAdditionalCameraData universalData = null;
46
+
47
+
48
+ /// <summary>
49
+ ///
50
+ /// </summary>
51
+ [Header("")]
52
+ [Divider]
53
+ [Tooltip("")]
54
+ [SerializeField] protected float focalSubtraction = 50;
55
+
56
+ /// <summary>
57
+ ///
58
+ /// </summary>
59
+ [Tooltip("")]
60
+ [SerializeField] protected float focalEndValue = 300;
61
+
62
+ /// <summary>
63
+ ///
64
+ /// </summary>
65
+ [Tooltip("")]
66
+ [SerializeField] protected float blurAnimationDuration = 1.75f;
67
+
68
+ /// <summary>
69
+ ///
70
+ /// </summary>
71
+ [Tooltip("")]
72
+ [SerializeField] protected int blurAnimationLoopAmount = -1;
73
+ #if DOTWEEN
74
+ /// <summary>
75
+ ///
76
+ /// </summary>
77
+ [Tooltip("")]
78
+ [SerializeField] protected LoopType blurAnimationLoopType = LoopType.Yoyo;
79
+
80
+ /// <summary>
81
+ ///
82
+ /// </summary>
83
+ [Tooltip("")]
84
+ [SerializeField] protected Ease blurAnimationEaseCurve = Ease.InFlash;
85
+ #endif
86
+
87
+ /// <summary>
88
+ ///
89
+ /// </summary>
90
+ [Header("")]
91
+ [Divider]
92
+ [Tooltip("")]
93
+ [SerializeField] protected float stopBlurFocalLength = 150;
94
+
95
+ /// <summary>
96
+ ///
97
+ /// </summary>
98
+ [Tooltip("")]
99
+ [SerializeField] protected float stopBlurDuration = 1;
100
+
101
+ #if DOTWEEN
102
+ /// <summary>
103
+ ///
104
+ /// </summary>
105
+ protected Tweener blurTween = null;
106
+ #endif
107
+ /// <summary>
108
+ ///
109
+ /// </summary>
110
+ protected VolumeProfile prof;
111
+
112
+ /// <summary>
113
+ ///
114
+ /// </summary>
115
+ protected float dofValue;
116
+
117
+
118
+ /// <summary>
119
+ ///
120
+ /// </summary>
121
+ protected virtual void OnEnable()
122
+ {
123
+ DialogueEventSystem.StartListening(blurVisionEventString, BlurVision);
124
+
125
+ DialogueEventSystem.StartListening(stopBlurVisionEventString, StopBlur);
126
+ }
127
+
128
+ /// <summary>
129
+ ///
130
+ /// </summary>
131
+ protected virtual void OnDisable()
132
+ {
133
+ DialogueEventSystem.StopListening(blurVisionEventString, BlurVision);
134
+
135
+ DialogueEventSystem.StopListening(stopBlurVisionEventString, StopBlur);
136
+ }
137
+
138
+
139
+ /// <summary>
140
+ ///
141
+ /// </summary>
142
+ /// <param name="o"></param>
143
+ protected virtual void BlurVision(object o = null)
144
+ {
145
+ prof = blurProfile.profile;
146
+
147
+ UniversalAdditionalCameraData data = universalData;
148
+
149
+ data.renderPostProcessing = true;
150
+
151
+ DepthOfField dof = GetDepthOfField();
152
+
153
+ if (dof != null)
154
+ {
155
+ dofValue = dof.focalLength.value;
156
+
157
+ dof.focalLength.value -= focalSubtraction;
158
+ #if DOTWEEN
159
+ blurTween = DOTween.To(() => dof.focalLength.value, x => dof.focalLength.value = x, focalEndValue, blurAnimationDuration)
160
+ .SetLoops(blurAnimationLoopAmount, blurAnimationLoopType)
161
+ .SetEase(blurAnimationEaseCurve);
162
+ #endif
163
+ }
164
+ }
165
+
166
+ /// <summary>
167
+ ///
168
+ /// </summary>
169
+ /// <param name="o"></param>
170
+ protected virtual void StopBlur(object o = null)
171
+ {
172
+ #if DOTWEEN
173
+ if (blurTween == null)
174
+ return;
175
+
176
+ blurTween.Kill();
177
+
178
+ DepthOfField dof = GetDepthOfField();
179
+
180
+ if (dof != null)
181
+ {
182
+ DOTween.To(() => dof.focalLength.value, x => dof.focalLength.value = x, stopBlurFocalLength, stopBlurDuration);
183
+
184
+ dof.focalLength.value = dofValue;
185
+
186
+ UniversalAdditionalCameraData data = universalData;
187
+
188
+ data.renderPostProcessing = false;
189
+
190
+ blurTween = null;
191
+
192
+ blurProfile.profile = prof;
193
+ }
194
+ #endif
195
+ }
196
+
197
+ /// <summary>
198
+ ///
199
+ /// </summary>
200
+ /// <returns></returns>
201
+ protected virtual DepthOfField GetDepthOfField()
202
+ {
203
+ if (blurProfile.profile.TryGet(out DepthOfField depthOfFieldComponent))
204
+ return depthOfFieldComponent;
205
+ else
206
+ return null;
207
+ }
208
+ }
209
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 2f0aa5623f8ac70468fc099fee2d9550
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -0,0 +1,45 @@
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using UnityEngine.Rendering.Universal;
3
+ using UnityEngine.UI;
4
+ using UnityEngine;
5
+
6
+ namespace DREditor.CamerasPostProcess
7
+ {
8
+ /// <summary>
9
+ ///
10
+ /// </summary>
11
+ public static class CameraPostProcessingExtentions
12
+ {
13
+ /// <summary>
14
+ ///
15
+ /// </summary>
16
+ /// <param name="graphic"></param>
17
+ /// <param name="color"></param>
18
+ public static void ApplyColorNoAlpha(this Graphic graphic, Color color)
19
+ => graphic.color = new Color(color.r, color.g, color.b);
20
+
21
+ /// <summary>
22
+ ///
23
+ /// </summary>
24
+ /// <param name="camera"></param>
25
+ /// <param name="to"></param>
26
+ public static void SetPostProcessingTo(this UnityEngine.Camera camera, bool to)
27
+ => camera.GetUniversalAdditionalCameraData().renderPostProcessing = to;
28
+
29
+ /// <summary>
30
+ ///
31
+ /// </summary>
32
+ /// <param name="camera"></param>
33
+ /// <returns></returns>
34
+ public static bool IsPostProcessingEnabled(this UnityEngine.Camera camera)
35
+ => camera.GetUniversalAdditionalCameraData().renderPostProcessing;
36
+
37
+ /// <summary>
38
+ ///
39
+ /// </summary>
40
+ /// <param name="camera"></param>
41
+ /// <returns></returns>
42
+ public static LayerMask GetVolumeMask(this UnityEngine.Camera camera)
43
+ => camera.GetUniversalAdditionalCameraData().volumeLayerMask;
44
+ }
45
+ }
@@ -0,0 +1,11 @@
1
+ fileFormatVersion: 2
2
+ guid: 5d7bab008d4c26443bedce2c2eb097a7
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "DREditor.CamerasPostProcess",
3
+ "rootNamespace": "",
4
+ "references": [
5
+ "Unity.RenderPipelines.Universal.Runtime",
6
+ "Unity.RenderPipelines.Core.Runtime",
7
+ "DREditor",
8
+ "DREditor.Editor",
9
+ "DREditor.CustomSettings"
10
+ ],
11
+ "includePlatforms": [],
12
+ "excludePlatforms": [],
13
+ "allowUnsafeCode": false,
14
+ "overrideReferences": false,
15
+ "precompiledReferences": [],
16
+ "autoReferenced": true,
17
+ "defineConstraints": [],
18
+ "versionDefines": [],
19
+ "noEngineReferences": false
20
+ }
@@ -0,0 +1,7 @@
1
+ fileFormatVersion: 2
2
+ guid: 377dbe525e64d6240aa3231b2d9b7d7a
3
+ AssemblyDefinitionImporter:
4
+ externalObjects: {}
5
+ userData:
6
+ assetBundleName:
7
+ assetBundleVariant: