Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
animatedgridspacer.c
Go to the documentation of this file.
1
// Different easing functions
2
enum
AnimatedGridSpacerEasingType
3
{
4
EASE_LINEAR
,
5
EASE_IN_OUT_CUBIC
,
6
EASE_IN_OUT_QUART
,
7
EASE_OUT_BOUNCE
,
8
EASE_OUT_BACK
9
}
10
11
class
AnimatedGridSpacer
12
{
13
Widget
m_GridSpacer
;
14
float
m_ColumWidth
= 0;
15
16
float
m_AnimationDuration
= 0.25;
17
float
m_AnimationTime
= 0;
18
19
float
m_CurrentPosX
,
m_CurrentPosY
;
20
float
m_BasePosX
,
m_BasePosY
;
21
float
m_StartPosX
,
m_TargetPosX
;
22
23
bool
m_IsAnimating
=
false
;
24
int
m_CurrentColum
= 0;
25
int
m_MaxColums
= 3;
26
27
AnimatedGridSpacerEasingType
m_EasingType
=
AnimatedGridSpacerEasingType
.EASE_IN_OUT_CUBIC;
28
29
ref
ScriptInvoker
m_OnAnimationComplete
;
30
31
void
AnimatedGridSpacer
(
Widget
gridSpacer,
int
maxColums,
float
animDuration = 0.25,
AnimatedGridSpacerEasingType
easing =
AnimatedGridSpacerEasingType
.EASE_IN_OUT_CUBIC)
32
{
33
m_GridSpacer
= gridSpacer;
34
m_MaxColums
= maxColums;
35
m_AnimationDuration
= animDuration;
36
m_EasingType
= easing;
37
38
if
(
m_GridSpacer
)
39
{
40
SetColumWidth
();
41
42
m_GridSpacer
.GetScreenPos(
m_CurrentPosX
,
m_CurrentPosY
);
43
m_GridSpacer
.GetScreenPos(
m_BasePosX
,
m_BasePosY
);
44
m_CurrentPosX
=
m_BasePosX
;
45
m_CurrentPosY
=
m_BasePosY
;
46
}
47
48
m_OnAnimationComplete
=
new
ScriptInvoker
();
49
}
50
51
void
SetColumWidth
()
52
{
53
if
(!
m_GridSpacer
)
54
return
;
55
56
Widget
panel =
m_GridSpacer
.GetChildren();
57
if
(panel)
58
{
59
float
w, h;
60
panel.GetSize(w, h);
61
m_ColumWidth
= w;
62
}
63
}
64
65
float
ApplyEasing
(
float
t)
66
{
67
switch
(
m_EasingType
)
68
{
69
case
AnimatedGridSpacerEasingType
.EASE_LINEAR:
70
{
71
return
t;
72
}
73
case
AnimatedGridSpacerEasingType
.EASE_IN_OUT_CUBIC:
74
{
75
return
Easing
.
EaseInOutCubic
(t);
76
}
77
case
AnimatedGridSpacerEasingType
.EASE_IN_OUT_QUART:
78
{
79
return
Easing
.
EaseInOutQuad
(t);
80
}
81
case
AnimatedGridSpacerEasingType
.EASE_OUT_BOUNCE:
82
{
83
return
Easing
.
EaseOutBounce
(t);
84
}
85
case
AnimatedGridSpacerEasingType
.EASE_OUT_BACK:
86
{
87
return
Easing
.
EaseOutBack
(t);
88
}
89
}
90
return
t;
91
}
92
93
void
AnimateToColum
(
int
targetColumn)
94
{
95
if
(
m_IsAnimating
|| targetColumn ==
m_CurrentColum
)
96
return
;
97
98
if
(
m_IsAnimating
|| targetColumn ==
m_CurrentColum
)
99
return
;
100
101
m_StartPosX
=
m_CurrentPosX
;
102
m_TargetPosX
=
m_BasePosX
- (targetColumn *
m_ColumWidth
);
103
m_CurrentColum
= targetColumn;
104
m_AnimationTime
= 0;
105
m_IsAnimating
=
true
;
106
}
107
108
void
MoveRight
()
109
{
110
if
(!
m_IsAnimating
)
111
{
112
int
nextColum =
m_CurrentColum
+ 1;
113
if
(nextColum <=
m_MaxColums
)
114
{
115
AnimateToColum
(nextColum);
116
}
117
}
118
}
119
120
void
MoveLeft
()
121
{
122
if
(!
m_IsAnimating
)
123
{
124
int
prevColum =
m_CurrentColum
- 1;
125
if
(prevColum >= 0)
126
{
127
AnimateToColum
(prevColum);
128
}
129
}
130
}
131
132
void
Update
(
float
timeslice)
133
{
134
if
(!
m_IsAnimating
|| !
m_GridSpacer
)
135
return
;
136
137
m_AnimationTime
+= timeslice;
138
if
(
m_AnimationTime
>=
m_AnimationDuration
)
139
{
140
m_CurrentPosX
=
m_TargetPosX
;
141
m_GridSpacer
.SetScreenPos(
m_CurrentPosX
,
m_CurrentPosY
);
142
m_AnimationTime
= 0;
143
m_IsAnimating
=
false
;
144
145
m_GridSpacer
.GetScreenPos(
m_CurrentPosX
,
m_CurrentPosY
);
146
}
147
else
148
{
149
float
progress =
m_AnimationTime
/
m_AnimationDuration
;
150
float
easedProgress =
ApplyEasing
(progress);
151
152
m_CurrentPosX
=
m_StartPosX
+ (
m_TargetPosX
-
m_StartPosX
) * easedProgress;
153
m_GridSpacer
.SetScreenPos(
m_CurrentPosX
,
m_CurrentPosY
);
154
155
m_OnAnimationComplete
.Invoke();
156
}
157
}
158
159
void
SetAnimationDuration
(
float
duration)
160
{
161
m_AnimationDuration
= duration;
162
}
163
164
void
SetEasingType
(
AnimatedGridSpacerEasingType
easing)
165
{
166
m_EasingType
= easing;
167
}
168
169
bool
IsAnimating
()
170
{
171
return
m_IsAnimating
;
172
}
173
174
int
GetCurrentRow
()
175
{
176
return
m_CurrentColum
;
177
}
178
}
m_CurrentColum
int m_CurrentColum
Definition
animatedgridspacer.c:24
m_IsAnimating
bool m_IsAnimating
Definition
animatedgridspacer.c:23
m_ColumWidth
float m_ColumWidth
Definition
animatedgridspacer.c:14
m_EasingType
AnimatedGridSpacerEasingType m_EasingType
Definition
animatedgridspacer.c:27
m_GridSpacer
enum AnimatedGridSpacerEasingType m_GridSpacer
IsAnimating
bool IsAnimating()
Definition
animatedgridspacer.c:169
m_TargetPosX
float m_TargetPosX
Definition
animatedgridspacer.c:21
m_BasePosX
float m_BasePosX
Definition
animatedgridspacer.c:20
AnimateToColum
void AnimateToColum(int targetColumn)
Definition
animatedgridspacer.c:93
MoveLeft
void MoveLeft()
Definition
animatedgridspacer.c:120
m_MaxColums
int m_MaxColums
Definition
animatedgridspacer.c:25
m_OnAnimationComplete
ref ScriptInvoker m_OnAnimationComplete
Definition
animatedgridspacer.c:29
ApplyEasing
float ApplyEasing(float t)
Definition
animatedgridspacer.c:65
AnimatedGridSpacer
void AnimatedGridSpacer(Widget gridSpacer, int maxColums, float animDuration=0.25, AnimatedGridSpacerEasingType easing=AnimatedGridSpacerEasingType.EASE_IN_OUT_CUBIC)
Definition
animatedgridspacer.c:31
SetAnimationDuration
void SetAnimationDuration(float duration)
Definition
animatedgridspacer.c:159
m_CurrentPosY
float m_CurrentPosY
Definition
animatedgridspacer.c:19
m_AnimationTime
float m_AnimationTime
Definition
animatedgridspacer.c:17
m_CurrentPosX
float m_CurrentPosX
Definition
animatedgridspacer.c:19
AnimatedGridSpacerEasingType
AnimatedGridSpacerEasingType
Definition
animatedgridspacer.c:3
EASE_IN_OUT_QUART
@ EASE_IN_OUT_QUART
Definition
animatedgridspacer.c:6
EASE_OUT_BOUNCE
@ EASE_OUT_BOUNCE
Definition
animatedgridspacer.c:7
EASE_LINEAR
@ EASE_LINEAR
Definition
animatedgridspacer.c:4
EASE_OUT_BACK
@ EASE_OUT_BACK
Definition
animatedgridspacer.c:8
EASE_IN_OUT_CUBIC
@ EASE_IN_OUT_CUBIC
Definition
animatedgridspacer.c:5
m_AnimationDuration
float m_AnimationDuration
Definition
animatedgridspacer.c:16
m_BasePosY
float m_BasePosY
Definition
animatedgridspacer.c:20
GetCurrentRow
int GetCurrentRow()
Definition
animatedgridspacer.c:174
m_StartPosX
float m_StartPosX
Definition
animatedgridspacer.c:21
SetColumWidth
void SetColumWidth()
Definition
animatedgridspacer.c:51
MoveRight
void MoveRight()
Definition
animatedgridspacer.c:108
SetEasingType
void SetEasingType(AnimatedGridSpacerEasingType easing)
Definition
animatedgridspacer.c:164
Easing
Input value between 0 and 1, returns value adjusted by easing, no automatic clamping of input(do your...
Definition
easing.c:3
Easing::EaseOutBack
static float EaseOutBack(float t, float magnitude=1.70158)
Definition
easing.c:173
Easing::EaseInOutCubic
static float EaseInOutCubic(float t)
Definition
easing.c:48
Easing::EaseInOutQuad
static float EaseInOutQuad(float t)
Definition
easing.c:29
Easing::EaseOutBounce
static float EaseOutBounce(float t)
Definition
easing.c:244
ScriptInvoker
ScriptInvoker Class provide list of callbacks usage:
Definition
tools.c:116
Widget
Definition
enwidgets.c:190
Update
proto native volatile void Update()
Definition
playersoundmanager.c:125
Games
Dayz
scripts
3_game
gui
effects
animatedgridspacer.c
Generated by
1.17.0