net.dreditor.overlays 0.0.0-stage → 0.1.6
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.
- package/ColorParticleProgress.cs +118 -0
- package/ColorParticleProgress.cs.meta +11 -0
- package/ControlOverlaysOnSceneEvent.cs +59 -0
- package/ControlOverlaysOnSceneEvent.cs.meta +11 -0
- package/DREditor.Overlays.asmdef +22 -0
- package/DREditor.Overlays.asmdef.meta +7 -0
- package/GameplayOverlay.cs +131 -0
- package/GameplayOverlay.cs.meta +11 -0
- package/IOverlayManager.cs +27 -0
- package/IOverlayManager.cs.meta +11 -0
- package/ObserveManager.cs +262 -0
- package/ObserveManager.cs.meta +15 -0
- package/ParticleProgress.cs +106 -0
- package/ParticleProgress.cs.meta +11 -0
- package/ParticleProgressOffset.cs +107 -0
- package/ParticleProgressOffset.cs.meta +11 -0
- package/Samples/ChangingObserve.asset +19 -0
- package/Samples/ChangingObserve.asset.meta +8 -0
- package/Samples/CheckOverlay.asset +14 -0
- package/Samples/CheckOverlay.asset.meta +8 -0
- package/Samples/Color_Particle_Progress_Overlay.prefab +168 -0
- package/Samples/Color_Particle_Progress_Overlay.prefab.meta +7 -0
- package/Samples/DisableAllOverlays.asset +15 -0
- package/Samples/DisableAllOverlays.asset.meta +8 -0
- package/Samples/Disable_All_Overlays_Event.prefab +52 -0
- package/Samples/Disable_All_Overlays_Event.prefab.meta +7 -0
- package/Samples/Display_Overlay_Condition.prefab +64 -0
- package/Samples/Display_Overlay_Condition.prefab.meta +7 -0
- package/Samples/ObserveModeLocked.asset +19 -0
- package/Samples/ObserveModeLocked.asset.meta +8 -0
- package/Samples/Observe_Mode_Overlay.prefab +181 -0
- package/Samples/Observe_Mode_Overlay.prefab.meta +7 -0
- package/Samples/Selection_Overlay_Particle.prefab +4814 -0
- package/Samples/Selection_Overlay_Particle.prefab.meta +7 -0
- package/Samples.meta +8 -0
- package/package.json +39 -6
- package/package.json.meta +7 -0
- package/README.md +0 -3
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using DREditor.EventObjects;
|
|
3
|
+
using DREditor.LocalDialogues;
|
|
4
|
+
using DREditor.Services;
|
|
5
|
+
using UnityEngine;
|
|
6
|
+
|
|
7
|
+
namespace DREditor.Overlays
|
|
8
|
+
{
|
|
9
|
+
/// <summary>
|
|
10
|
+
///
|
|
11
|
+
/// </summary>
|
|
12
|
+
/// <remarks>
|
|
13
|
+
///
|
|
14
|
+
/// </remarks>
|
|
15
|
+
[ClassHeader(nameof(ParticleProgress) + ", " + nameof(GameplayOverlay) + ", " +
|
|
16
|
+
nameof(IOverlayManager) + ", " + nameof(IToTitleScreen) +
|
|
17
|
+
"\n\n")]
|
|
18
|
+
[DefaultExecutionOrder(1)]
|
|
19
|
+
public class ColorParticleProgress : ParticleProgress
|
|
20
|
+
{
|
|
21
|
+
/// <summary>
|
|
22
|
+
///
|
|
23
|
+
/// </summary>
|
|
24
|
+
[Header("")]
|
|
25
|
+
[Divider]
|
|
26
|
+
[Tooltip("")]
|
|
27
|
+
[SerializeField] protected GameObject particlePrefab = null;
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
/// <summary>
|
|
31
|
+
///
|
|
32
|
+
/// </summary>
|
|
33
|
+
[Header("")]
|
|
34
|
+
[Divider]
|
|
35
|
+
[Tooltip("")]
|
|
36
|
+
[SerializeField] protected Color allTriggeredColor = Color.blue;
|
|
37
|
+
|
|
38
|
+
/// <summary>
|
|
39
|
+
///
|
|
40
|
+
/// </summary>
|
|
41
|
+
[Tooltip("")]
|
|
42
|
+
[SerializeField] protected Color untriggeredRequiredColor = Color.yellow;
|
|
43
|
+
|
|
44
|
+
/// <summary>
|
|
45
|
+
///
|
|
46
|
+
/// </summary>
|
|
47
|
+
[Tooltip("")]
|
|
48
|
+
[SerializeField] protected Color untriggeredOptionalColor = Color.green;
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
/// <inheritdoc/>
|
|
52
|
+
protected override void ApplyParticleToObject(SelectableObject selectableObject)
|
|
53
|
+
{
|
|
54
|
+
if (selectableObject is not IDialogueProgression progressable)
|
|
55
|
+
return;
|
|
56
|
+
|
|
57
|
+
Color spawnColor = progressable.AllDialogueTriggered() ? allTriggeredColor :
|
|
58
|
+
progressable.HasUnTriggeredRequiredFlags() ? untriggeredRequiredColor :
|
|
59
|
+
untriggeredOptionalColor;
|
|
60
|
+
|
|
61
|
+
SpawnProgressParticle(selectableObject.gameObject, spawnColor);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/// <summary>
|
|
65
|
+
///
|
|
66
|
+
/// </summary>
|
|
67
|
+
/// <param name="targetObject"></param>
|
|
68
|
+
/// <param name="particleColor"></param>
|
|
69
|
+
protected virtual void SpawnProgressParticle(GameObject targetObject, Color particleColor)
|
|
70
|
+
{
|
|
71
|
+
GameObject particleGameObject = Instantiate(particlePrefab, targetObject.transform);
|
|
72
|
+
|
|
73
|
+
InitializeParticleDimensions(targetObject, particleGameObject);
|
|
74
|
+
|
|
75
|
+
ParticleSystem particleSystem = particleGameObject.GetComponent<ParticleSystem>();
|
|
76
|
+
|
|
77
|
+
var particleModule = particleSystem.main;
|
|
78
|
+
|
|
79
|
+
particleModule.startColor = particleColor;
|
|
80
|
+
|
|
81
|
+
particles.Add(particleSystem);
|
|
82
|
+
|
|
83
|
+
if (targetObject.GetComponent<ParticleProgressOffset>() is ParticleProgressOffset off)
|
|
84
|
+
off.ApplyOffsets(particleSystem);
|
|
85
|
+
|
|
86
|
+
particleSystem.Play();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/// <summary>
|
|
90
|
+
///
|
|
91
|
+
/// </summary>
|
|
92
|
+
/// <param name="targetObject"></param>
|
|
93
|
+
/// <param name="particleGameObject"></param>
|
|
94
|
+
protected virtual void InitializeParticleDimensions(GameObject targetObject, GameObject particleGameObject)
|
|
95
|
+
{
|
|
96
|
+
Transform parentTransform = targetObject.transform;
|
|
97
|
+
|
|
98
|
+
particleGameObject.transform.localPosition = Vector3.zero;
|
|
99
|
+
|
|
100
|
+
particleGameObject.transform.localEulerAngles = parentTransform.localEulerAngles;
|
|
101
|
+
|
|
102
|
+
if (parentTransform.TryGetComponent(out BoxCollider boxCollider))
|
|
103
|
+
{
|
|
104
|
+
particleGameObject.transform.localPosition = boxCollider.center;
|
|
105
|
+
|
|
106
|
+
particleGameObject.transform.localScale = boxCollider.size;
|
|
107
|
+
}
|
|
108
|
+
else if (parentTransform.TryGetComponent(out MeshCollider collider))
|
|
109
|
+
{
|
|
110
|
+
particleGameObject.transform.localPosition = collider.sharedMesh.bounds.center;
|
|
111
|
+
|
|
112
|
+
particleGameObject.transform.localScale = collider.sharedMesh.bounds.size;
|
|
113
|
+
}
|
|
114
|
+
else if (parentTransform.TryGetComponent(out MeshFilter parentRenderer))
|
|
115
|
+
particleGameObject.transform.localScale = parentRenderer.mesh.bounds.size;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
//Shader That made this possible + Idea by LeoTheDev
|
|
3
|
+
using DREditor.EventObjects;
|
|
4
|
+
using System.Linq;
|
|
5
|
+
using UnityEngine;
|
|
6
|
+
|
|
7
|
+
namespace DREditor.Overlays
|
|
8
|
+
{
|
|
9
|
+
/// <summary>
|
|
10
|
+
///
|
|
11
|
+
/// </summary>
|
|
12
|
+
[ClassHeader(nameof(SceneEventListener) +
|
|
13
|
+
"\n\n")]
|
|
14
|
+
public class ControlOverlaysOnSceneEvent : SceneEventListener
|
|
15
|
+
{
|
|
16
|
+
/// <summary>
|
|
17
|
+
///
|
|
18
|
+
/// </summary>
|
|
19
|
+
[Space]
|
|
20
|
+
|
|
21
|
+
[Header("")]
|
|
22
|
+
[Divider]
|
|
23
|
+
[Tooltip("")]
|
|
24
|
+
[SerializeField] protected bool setStateTo = false;
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
/// <summary>
|
|
28
|
+
///
|
|
29
|
+
/// </summary>
|
|
30
|
+
protected override void OnEnable()
|
|
31
|
+
{
|
|
32
|
+
base.OnEnable();
|
|
33
|
+
|
|
34
|
+
Response.AddListener(OnEventInvoked);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/// <summary>
|
|
38
|
+
///
|
|
39
|
+
/// </summary>
|
|
40
|
+
protected override void OnDisable()
|
|
41
|
+
{
|
|
42
|
+
base.OnDisable();
|
|
43
|
+
|
|
44
|
+
Response.RemoveListener(OnEventInvoked);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/// <summary>
|
|
48
|
+
///
|
|
49
|
+
/// </summary>
|
|
50
|
+
protected virtual void OnEventInvoked()
|
|
51
|
+
{
|
|
52
|
+
var overlayManagers = FindObjectsByType<MonoBehaviour>().OfType<IOverlayManager>();
|
|
53
|
+
|
|
54
|
+
foreach (var overlay in overlayManagers)
|
|
55
|
+
if (overlay != null && overlay.IsOverlaying())
|
|
56
|
+
overlay.SetOverlay(setStateTo);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "DREditor.Overlays",
|
|
3
|
+
"rootNamespace": "",
|
|
4
|
+
"references": [
|
|
5
|
+
"Unity.RenderPipelines.Universal.Runtime",
|
|
6
|
+
"Unity.InputSystem",
|
|
7
|
+
"DREditor",
|
|
8
|
+
"DREditor.Controls",
|
|
9
|
+
"DREditor.Fading",
|
|
10
|
+
"DREditor.LocalDialogues",
|
|
11
|
+
"DREditor.UIHandling"
|
|
12
|
+
],
|
|
13
|
+
"includePlatforms": [],
|
|
14
|
+
"excludePlatforms": [],
|
|
15
|
+
"allowUnsafeCode": false,
|
|
16
|
+
"overrideReferences": false,
|
|
17
|
+
"precompiledReferences": [],
|
|
18
|
+
"autoReferenced": true,
|
|
19
|
+
"defineConstraints": [],
|
|
20
|
+
"versionDefines": [],
|
|
21
|
+
"noEngineReferences": false
|
|
22
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using DREditor.Dialogues.Starting;
|
|
3
|
+
using DREditor.EventObjects;
|
|
4
|
+
using DREditor.Services;
|
|
5
|
+
using DREditor.UIHandling;
|
|
6
|
+
using System.Collections;
|
|
7
|
+
using System.Collections.Generic;
|
|
8
|
+
using System.Linq;
|
|
9
|
+
using UnityEngine;
|
|
10
|
+
using UnityEngine.InputSystem;
|
|
11
|
+
using static UnityEngine.InputSystem.InputAction;
|
|
12
|
+
|
|
13
|
+
namespace DREditor.Overlays
|
|
14
|
+
{
|
|
15
|
+
/// <summary>
|
|
16
|
+
///
|
|
17
|
+
/// </summary>
|
|
18
|
+
public abstract class GameplayOverlay : MonoBehaviour, IOverlayManager, IToTitleScreen
|
|
19
|
+
{
|
|
20
|
+
/// <summary>
|
|
21
|
+
///
|
|
22
|
+
/// </summary>
|
|
23
|
+
[Tooltip("")]
|
|
24
|
+
[SerializeField] protected InputActionReference observeMode = null;
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
/// <summary>
|
|
28
|
+
///
|
|
29
|
+
/// </summary>
|
|
30
|
+
[Header("")]
|
|
31
|
+
[Divider]
|
|
32
|
+
[Tooltip("")]
|
|
33
|
+
[SerializeField] protected SceneEventListener checkOverlay = null;
|
|
34
|
+
|
|
35
|
+
/// <summary>
|
|
36
|
+
///
|
|
37
|
+
/// </summary>
|
|
38
|
+
[Tooltip("")]
|
|
39
|
+
[SerializeField] protected EvaluateCondition displayOverlayCondition = null;
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
/// <summary>
|
|
43
|
+
///
|
|
44
|
+
/// </summary>
|
|
45
|
+
protected IEnumerable<IDialoguePrepareEvent> dialoguePrepareEvents;
|
|
46
|
+
|
|
47
|
+
/// <summary>
|
|
48
|
+
///
|
|
49
|
+
/// </summary>
|
|
50
|
+
protected bool overlaying = false;
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
/// <summary>
|
|
54
|
+
///
|
|
55
|
+
/// </summary>
|
|
56
|
+
protected virtual void Awake()
|
|
57
|
+
=> dialoguePrepareEvents ??= FindObjectsByType<MonoBehaviour>().OfType<IDialoguePrepareEvent>();
|
|
58
|
+
|
|
59
|
+
/// <summary>
|
|
60
|
+
///
|
|
61
|
+
/// </summary>
|
|
62
|
+
protected virtual void OnEnable()
|
|
63
|
+
{
|
|
64
|
+
checkOverlay.Response.AddListener(ClearOverlayOnActive);
|
|
65
|
+
|
|
66
|
+
foreach (var preparer in dialoguePrepareEvents)
|
|
67
|
+
if (preparer != null)
|
|
68
|
+
preparer.OnDialoguePrepare += ClearOverlayOnActive;
|
|
69
|
+
|
|
70
|
+
observeMode.action.started += EvaluateOverlay;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/// <summary>
|
|
74
|
+
///
|
|
75
|
+
/// </summary>
|
|
76
|
+
protected virtual void OnDisable()
|
|
77
|
+
{
|
|
78
|
+
checkOverlay.Response.RemoveListener(ClearOverlayOnActive);
|
|
79
|
+
|
|
80
|
+
foreach (var preparer in dialoguePrepareEvents)
|
|
81
|
+
if (preparer != null)
|
|
82
|
+
preparer.OnDialoguePrepare -= ClearOverlayOnActive;
|
|
83
|
+
|
|
84
|
+
observeMode.action.started -= EvaluateOverlay;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/// <summary>
|
|
88
|
+
///
|
|
89
|
+
/// </summary>
|
|
90
|
+
/// <param name="context"></param>
|
|
91
|
+
protected abstract void EvaluateOverlay(CallbackContext context);
|
|
92
|
+
|
|
93
|
+
/// <inheritdoc/>
|
|
94
|
+
public virtual bool IsOverlaying() => overlaying;
|
|
95
|
+
|
|
96
|
+
/// <inheritdoc/>
|
|
97
|
+
public virtual void SetOverlay(bool to) => overlaying = to;
|
|
98
|
+
|
|
99
|
+
/// <summary>
|
|
100
|
+
///
|
|
101
|
+
/// </summary>
|
|
102
|
+
protected abstract IEnumerator ToggleOverlay();
|
|
103
|
+
|
|
104
|
+
/// <summary>
|
|
105
|
+
///
|
|
106
|
+
/// </summary>
|
|
107
|
+
protected abstract void TurnOnOverlay();
|
|
108
|
+
|
|
109
|
+
/// <summary>
|
|
110
|
+
///
|
|
111
|
+
/// </summary>
|
|
112
|
+
protected abstract void TurnOffOverlay();
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
/// <inheritdoc/>
|
|
116
|
+
public virtual void ClearOverlayOnActive()
|
|
117
|
+
{
|
|
118
|
+
if (overlaying)
|
|
119
|
+
ClearOverlay();
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/// <summary>
|
|
123
|
+
///
|
|
124
|
+
/// </summary>
|
|
125
|
+
protected virtual void ClearOverlay() => StartCoroutine(ToggleOverlay());
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
/// <inheritdoc/>
|
|
129
|
+
public virtual void ToTitleScreen() => TurnOffOverlay();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
|
|
3
|
+
namespace DREditor.Overlays
|
|
4
|
+
{
|
|
5
|
+
/// <summary>
|
|
6
|
+
///
|
|
7
|
+
/// </summary>
|
|
8
|
+
public interface IOverlayManager
|
|
9
|
+
{
|
|
10
|
+
/// <summary>
|
|
11
|
+
///
|
|
12
|
+
/// </summary>
|
|
13
|
+
/// <returns></returns>
|
|
14
|
+
bool IsOverlaying();
|
|
15
|
+
|
|
16
|
+
/// <summary>
|
|
17
|
+
///
|
|
18
|
+
/// </summary>
|
|
19
|
+
/// <param name="to"></param>
|
|
20
|
+
void SetOverlay(bool to);
|
|
21
|
+
|
|
22
|
+
/// <summary>
|
|
23
|
+
///
|
|
24
|
+
/// </summary>
|
|
25
|
+
void ClearOverlayOnActive();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
//Shader That made this possible + Idea by LeoTheDev
|
|
3
|
+
using DREditor.Dialogues.Events;
|
|
4
|
+
using DREditor.Dialogues.Finishing;
|
|
5
|
+
using DREditor.EventObjects;
|
|
6
|
+
using DREditor.Fading;
|
|
7
|
+
using DREditor.Services;
|
|
8
|
+
using System.Collections;
|
|
9
|
+
using System.Linq;
|
|
10
|
+
using UnityEngine;
|
|
11
|
+
using UnityEngine.Events;
|
|
12
|
+
|
|
13
|
+
using UnityEngine.Rendering.Universal;
|
|
14
|
+
using static UnityEngine.InputSystem.InputAction;
|
|
15
|
+
using UnityEngine.InputSystem;
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
#if UNITY_EDITOR
|
|
19
|
+
using UnityEditor;
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
namespace DREditor.Overlays
|
|
23
|
+
{
|
|
24
|
+
/// <summary>
|
|
25
|
+
///
|
|
26
|
+
/// </summary>
|
|
27
|
+
/// <remarks>
|
|
28
|
+
///
|
|
29
|
+
/// </remarks>
|
|
30
|
+
[ClassHeader(nameof(GameplayOverlay) + ", " + nameof(IOverlayManager) + ", " + nameof(IToTitleScreen) +
|
|
31
|
+
"\n\n")]
|
|
32
|
+
public class ObserveManager : GameplayOverlay
|
|
33
|
+
{
|
|
34
|
+
/// <summary>
|
|
35
|
+
///
|
|
36
|
+
/// </summary>
|
|
37
|
+
[Tooltip("")]
|
|
38
|
+
[SerializeField] protected BoolWithEvent changingObserve = null;
|
|
39
|
+
|
|
40
|
+
/// <summary>
|
|
41
|
+
///
|
|
42
|
+
/// </summary>
|
|
43
|
+
[Tooltip("")]
|
|
44
|
+
[SerializeField] protected BoolWithEvent reticleCanSelect = null;
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
/// <summary>
|
|
48
|
+
///
|
|
49
|
+
/// </summary>
|
|
50
|
+
[Header("")]
|
|
51
|
+
[Divider]
|
|
52
|
+
[Tooltip("")]
|
|
53
|
+
[SerializeField] protected BoolWithEvent isLoadingFile = null;
|
|
54
|
+
|
|
55
|
+
/// <summary>
|
|
56
|
+
///
|
|
57
|
+
/// </summary>
|
|
58
|
+
[Tooltip("")]
|
|
59
|
+
[SerializeField] protected BoolWithEvent inLeaveProcess = null;
|
|
60
|
+
|
|
61
|
+
/// <summary>
|
|
62
|
+
///
|
|
63
|
+
/// </summary>
|
|
64
|
+
[Tooltip("")]
|
|
65
|
+
[SerializeField] protected BoolWithEvent inDialogue = null;
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
/// <summary>
|
|
69
|
+
///
|
|
70
|
+
/// </summary>
|
|
71
|
+
[Header("")]
|
|
72
|
+
[Divider]
|
|
73
|
+
[Tooltip("")]
|
|
74
|
+
[SerializeField] protected string toggleCameraEvent = "ToggleCameraFlags";
|
|
75
|
+
|
|
76
|
+
/// <summary>
|
|
77
|
+
///
|
|
78
|
+
/// </summary>
|
|
79
|
+
[Tooltip("")]
|
|
80
|
+
[SerializeField] protected RenderObjects renderObject = null;
|
|
81
|
+
|
|
82
|
+
/// <summary>
|
|
83
|
+
///
|
|
84
|
+
/// </summary>
|
|
85
|
+
[Tooltip("")]
|
|
86
|
+
[SerializeField] protected UniversalRendererData rendererData = null;
|
|
87
|
+
|
|
88
|
+
/// <summary>
|
|
89
|
+
///
|
|
90
|
+
/// </summary>
|
|
91
|
+
[Tooltip("")]
|
|
92
|
+
[SerializeField] protected float fadeToTime = 0.5f;
|
|
93
|
+
|
|
94
|
+
/// <summary>
|
|
95
|
+
///
|
|
96
|
+
/// </summary>
|
|
97
|
+
[Tooltip("")]
|
|
98
|
+
[SerializeField] protected float fadeOutTime = 0.5f;
|
|
99
|
+
|
|
100
|
+
/// <summary>
|
|
101
|
+
///
|
|
102
|
+
/// </summary>
|
|
103
|
+
[Tooltip("")]
|
|
104
|
+
[SerializeField] protected LayerMask layerMask = 131073; // Default + RaycastBlock
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
[Header("")]
|
|
108
|
+
[Divider]
|
|
109
|
+
[Header("")]
|
|
110
|
+
[SerializeField] protected UnityEvent OnPlaySFX = null;
|
|
111
|
+
|
|
112
|
+
[Header("")]
|
|
113
|
+
[SerializeField] protected UnityEvent OnStopSFX = null;
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
/// <summary>
|
|
117
|
+
///
|
|
118
|
+
/// </summary>
|
|
119
|
+
protected IEndDialogueEvent EndDialogueEvent;
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
/// <inheritdoc/>
|
|
123
|
+
protected override void Awake()
|
|
124
|
+
{
|
|
125
|
+
base.Awake();
|
|
126
|
+
|
|
127
|
+
EndDialogueEvent ??= FindObjectsByType<MonoBehaviour>().OfType<IEndDialogueEvent>().FirstOrDefault();
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/// <inheritdoc/>
|
|
131
|
+
protected override void OnEnable()
|
|
132
|
+
{
|
|
133
|
+
base.OnEnable();
|
|
134
|
+
|
|
135
|
+
#if UNITY_EDITOR
|
|
136
|
+
EditorApplication.playModeStateChanged += ModeChanged;
|
|
137
|
+
#endif
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/// <inheritdoc/>
|
|
141
|
+
protected override void OnDisable()
|
|
142
|
+
{
|
|
143
|
+
base.OnDisable();
|
|
144
|
+
|
|
145
|
+
#if UNITY_EDITOR
|
|
146
|
+
EditorApplication.playModeStateChanged -= ModeChanged;
|
|
147
|
+
#endif
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
/// <inheritdoc/>
|
|
152
|
+
protected override void EvaluateOverlay(CallbackContext context)
|
|
153
|
+
{
|
|
154
|
+
if (!changingObserve.Value && displayOverlayCondition.Evaluate())
|
|
155
|
+
{
|
|
156
|
+
reticleCanSelect.SetValue(false);
|
|
157
|
+
|
|
158
|
+
StartCoroutine(ToggleOverlay());
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/// <inheritdoc/>
|
|
163
|
+
protected override IEnumerator ToggleOverlay()
|
|
164
|
+
{
|
|
165
|
+
changingObserve.SetValue(true);
|
|
166
|
+
|
|
167
|
+
if (!isLoadingFile.Value)
|
|
168
|
+
yield return ServiceLocator.GetService<GlobalFade>().FadeToRoutine(fadeToTime);
|
|
169
|
+
|
|
170
|
+
SetOverlay(!overlaying);
|
|
171
|
+
|
|
172
|
+
DialogueEventSystem.TriggerEvent(toggleCameraEvent, overlaying);
|
|
173
|
+
|
|
174
|
+
if (!isLoadingFile.Value)
|
|
175
|
+
yield return ServiceLocator.GetService<GlobalFade>().FadeOutRoutine(fadeOutTime);
|
|
176
|
+
|
|
177
|
+
if (!inDialogue.Value)
|
|
178
|
+
reticleCanSelect.SetValue(true);
|
|
179
|
+
|
|
180
|
+
changingObserve.SetValue(false);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
/// <inheritdoc/>
|
|
185
|
+
protected override void ClearOverlay()
|
|
186
|
+
{
|
|
187
|
+
base.ClearOverlay();
|
|
188
|
+
|
|
189
|
+
if (inLeaveProcess.Value)
|
|
190
|
+
EndDialogueEvent.OnDialogueEnd += FixReticleIssue;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/// <summary>
|
|
194
|
+
///
|
|
195
|
+
/// </summary>
|
|
196
|
+
protected virtual void FixReticleIssue()
|
|
197
|
+
{
|
|
198
|
+
EndDialogueEvent.OnDialogueEnd -= FixReticleIssue;
|
|
199
|
+
|
|
200
|
+
reticleCanSelect.SetValue(true);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
/// <inheritdoc/>
|
|
205
|
+
public override void SetOverlay(bool to)
|
|
206
|
+
{
|
|
207
|
+
if (to)
|
|
208
|
+
TurnOnOverlay();
|
|
209
|
+
else
|
|
210
|
+
TurnOffOverlay();
|
|
211
|
+
|
|
212
|
+
base.SetOverlay(to);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/// <inheritdoc/>
|
|
216
|
+
protected override void TurnOnOverlay()
|
|
217
|
+
{
|
|
218
|
+
renderObject.SetActive(true);
|
|
219
|
+
|
|
220
|
+
rendererData.opaqueLayerMask &= ~layerMask;
|
|
221
|
+
|
|
222
|
+
OnPlaySFX?.Invoke();
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/// <inheritdoc/>
|
|
226
|
+
protected override void TurnOffOverlay()
|
|
227
|
+
{
|
|
228
|
+
renderObject.SetActive(false);
|
|
229
|
+
|
|
230
|
+
rendererData.opaqueLayerMask |= layerMask;
|
|
231
|
+
|
|
232
|
+
OnStopSFX?.Invoke();
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
/// <inheritdoc/>
|
|
237
|
+
public override void ToTitleScreen()
|
|
238
|
+
{
|
|
239
|
+
EndDialogueEvent.OnDialogueEnd -= FixReticleIssue;
|
|
240
|
+
|
|
241
|
+
base.ToTitleScreen();
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
#if UNITY_EDITOR
|
|
246
|
+
/// <summary>
|
|
247
|
+
///
|
|
248
|
+
/// </summary>
|
|
249
|
+
/// <param name="change"></param>
|
|
250
|
+
protected virtual void ModeChanged(PlayModeStateChange change)
|
|
251
|
+
{
|
|
252
|
+
if (!EditorApplication.isPlayingOrWillChangePlaymode && EditorApplication.isPlaying)
|
|
253
|
+
{
|
|
254
|
+
if (renderObject.isActive)
|
|
255
|
+
renderObject.SetActive(false);
|
|
256
|
+
|
|
257
|
+
rendererData.opaqueLayerMask |= layerMask;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
#endif
|
|
261
|
+
}
|
|
262
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: aca01d2e60ac0df408a4bc20515be13b
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences:
|
|
7
|
+
- inDialogue: {fileID: 11400000, guid: b2839fc222ba4bc4eb8bcfee73b0c53d, type: 2}
|
|
8
|
+
- inTPFD: {fileID: 11400000, guid: 7f90df5202cae904292188e37c9076d3, type: 2}
|
|
9
|
+
- renderObject: {fileID: 4470810494987417559, guid: 2fd9deb72a9165242b37b8fcf5f00e49,
|
|
10
|
+
type: 2}
|
|
11
|
+
executionOrder: 0
|
|
12
|
+
icon: {instanceID: 0}
|
|
13
|
+
userData:
|
|
14
|
+
assetBundleName:
|
|
15
|
+
assetBundleVariant:
|