EchoTrio
Loading...
Searching...
No Matches
FadeEffect.cs
Go to the documentation of this file.
1
using
UnityEngine;
2
using
UnityEngine.Events;
3
4
namespace
EchoTrio.UI
{
5
public
class
FadeEffect
: MonoBehaviour {
6
private
enum
State
{
Idle
,
FadeIn
,
FadeOut
,
Num
}
7
8
[Header(
"References"
)]
9
[SerializeField]
private
Renderer
targetRenderer
=
null
;
10
11
[Header(
"Fade Settings"
)]
12
[SerializeField, Range(0.1f, 60.0f)]
private
float
fadeDuration
= 5.0f;
13
14
// Public Interfaace
15
public
UnityAction
onFadeStart
=
null
;
16
public
UnityAction
onFadeEnd
=
null
;
17
18
// Private Variables
19
private
Color
initialColour
= Color.white;
20
private
FSM.FiniteStateMachine
fsm
=
new
FSM
.
FiniteStateMachine
((
int
)
State
.Num);
21
private
float
timer
= 0.0f;
22
private
bool
isFading
=
false
;
23
24
// Public Interfaces
25
public
bool
IsFading
() {
return
isFading
; }
26
27
public
float
GetFadeDuration
() {
return
fadeDuration
; }
28
29
public
void
FadeIn
() {
fsm
.ChangeState((
int
)
State
.FadeIn); }
30
31
public
void
FadeOut
() {
fsm
.ChangeState((
int
)
State
.FadeOut); }
32
33
// Internal Functions
34
private
void
Awake
() {
35
// Get initial colour.
36
if
(
targetRenderer
!=
null
) {
37
initialColour
=
targetRenderer
.material.color;
38
}
39
40
// Initialise FSM.
41
fsm
.SetStateEntry((
int
)
State
.FadeIn,
OnEnterFadeIn
);
42
fsm
.SetStateUpdate((
int
)
State
.FadeIn,
OnUpdateFadeIn
);
43
fsm
.SetStateExit((
int
)
State
.FadeIn,
OnExitFadeIn
);
44
45
fsm
.SetStateEntry((
int
)
State
.FadeOut,
OnEnterFadeOut
);
46
fsm
.SetStateUpdate((
int
)
State
.FadeOut,
OnUpdateFadeOut
);
47
fsm
.SetStateExit((
int
)
State
.FadeOut,
OnExitFadeOut
);
48
}
49
50
private
void
Start
() {
51
// Set default state.
52
fsm
.ChangeState((
int
)
State
.Idle);
53
}
54
55
private
void
Update
() {
fsm
.Update(); }
56
57
private
void
LateUpdate
() {
fsm
.LateUpdate(); }
58
59
// Fade In State
60
private
void
OnEnterFadeIn
() {
61
isFading
=
true
;
62
timer
= 0.0f;
63
onFadeStart
?.Invoke();
64
}
65
66
private
void
OnUpdateFadeIn
() {
67
// Update timer.
68
timer
= Mathf.Min(
timer
+ Time.deltaTime,
fadeDuration
);
69
70
// Change colour.
71
Material material =
targetRenderer
.material;
72
Color colour = material.color;
73
colour.a = Mathf.Lerp(0.0f,
initialColour
.a,
timer
/
fadeDuration
);
74
material.color = colour;
75
76
// Return to idle once done.
77
if
(
timer
==
fadeDuration
) {
fsm
.ChangeState((
int
)
State
.Idle); }
78
}
79
80
private
void
OnExitFadeIn
() {
81
isFading
=
false
;
82
onFadeEnd
?.Invoke();
83
}
84
85
// Fade Out State
86
private
void
OnEnterFadeOut
() {
87
isFading
=
true
;
88
timer
= 0.0f;
89
onFadeStart
?.Invoke();
90
}
91
92
private
void
OnUpdateFadeOut
() {
93
// Update timer.
94
timer
= Mathf.Min(
timer
+ Time.deltaTime,
fadeDuration
);
95
96
// Change colour.
97
Material material =
targetRenderer
.material;
98
Color colour = material.color;
99
colour.a = Mathf.Lerp(
initialColour
.a, 0.0f,
timer
/
fadeDuration
);
100
material.color = colour;
101
102
// Return to idle once done.
103
if
(
timer
==
fadeDuration
) {
fsm
.ChangeState((
int
)
State
.Idle); }
104
}
105
106
private
void
OnExitFadeOut
() {
107
isFading
=
false
;
108
onFadeEnd
?.Invoke();
109
}
110
}
111
}
EchoTrio.UI.FadeEffect
Definition:
FadeEffect.cs:5
EchoTrio.UI.FadeEffect.GetFadeDuration
float GetFadeDuration()
Definition:
FadeEffect.cs:27
EchoTrio.UI.FadeEffect.LateUpdate
void LateUpdate()
Definition:
FadeEffect.cs:57
EchoTrio.UI.FadeEffect.Update
void Update()
Definition:
FadeEffect.cs:55
EchoTrio.UI.FadeEffect.isFading
bool isFading
Definition:
FadeEffect.cs:22
EchoTrio.UI.FadeEffect.FadeOut
void FadeOut()
Definition:
FadeEffect.cs:31
EchoTrio.UI.FadeEffect.fadeDuration
float fadeDuration
Definition:
FadeEffect.cs:12
EchoTrio.UI.FadeEffect.State
State
Definition:
FadeEffect.cs:6
EchoTrio.UI.FadeEffect.State.Num
@ Num
EchoTrio.UI.FadeEffect.State.Idle
@ Idle
EchoTrio.UI.FadeEffect.fsm
FSM.FiniteStateMachine fsm
Definition:
FadeEffect.cs:20
EchoTrio.UI.FadeEffect.Awake
void Awake()
Definition:
FadeEffect.cs:34
EchoTrio.UI.FadeEffect.Start
void Start()
Definition:
FadeEffect.cs:50
EchoTrio.UI.FadeEffect.IsFading
bool IsFading()
Definition:
FadeEffect.cs:25
EchoTrio.UI.FadeEffect.targetRenderer
Renderer targetRenderer
Definition:
FadeEffect.cs:9
EchoTrio.UI.FadeEffect.OnEnterFadeOut
void OnEnterFadeOut()
Definition:
FadeEffect.cs:86
EchoTrio.UI.FadeEffect.OnExitFadeIn
void OnExitFadeIn()
Definition:
FadeEffect.cs:80
EchoTrio.UI.FadeEffect.OnExitFadeOut
void OnExitFadeOut()
Definition:
FadeEffect.cs:106
EchoTrio.UI.FadeEffect.onFadeEnd
UnityAction onFadeEnd
Definition:
FadeEffect.cs:16
EchoTrio.UI.FadeEffect.OnUpdateFadeOut
void OnUpdateFadeOut()
Definition:
FadeEffect.cs:92
EchoTrio.UI.FadeEffect.FadeIn
void FadeIn()
Definition:
FadeEffect.cs:29
EchoTrio.UI.FadeEffect.initialColour
Color initialColour
Definition:
FadeEffect.cs:19
EchoTrio.UI.FadeEffect.timer
float timer
Definition:
FadeEffect.cs:21
EchoTrio.UI.FadeEffect.OnEnterFadeIn
void OnEnterFadeIn()
Definition:
FadeEffect.cs:60
EchoTrio.UI.FadeEffect.onFadeStart
UnityAction onFadeStart
Definition:
FadeEffect.cs:15
EchoTrio.UI.FadeEffect.OnUpdateFadeIn
void OnUpdateFadeIn()
Definition:
FadeEffect.cs:66
FSM.FiniteStateMachine
Finite state machine class to handle state transitions and updates.
Definition:
FiniteStateMachine.cs:3
EchoTrio.UI
Definition:
Chatbox.cs:4
FSM
Definition:
FiniteStateMachine.cs:1
Assets
Scripts
UI
FadeEffect.cs
Generated by
1.9.6