DayZ 1.29
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
AnimatedGridSpacer.c
См. документацию.
1// Different easing functions
10
12{
14 float m_ColumWidth = 0;
15
16 float m_AnimationDuration = 0.25;
17 float m_AnimationTime = 0;
18
22
23 bool m_IsAnimating = false;
25 int m_MaxColums = 3;
26
28
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 {
41
43 m_GridSpacer.GetScreenPos(m_BasePosX, m_BasePosY);
46 }
47
49 }
50
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
102 m_TargetPosX = m_BasePosX - (targetColumn * m_ColumWidth);
103 m_CurrentColum = targetColumn;
104 m_AnimationTime = 0;
105 m_IsAnimating = true;
106 }
107
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;
139 {
142 m_AnimationTime = 0;
143 m_IsAnimating = false;
144
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;
154
155 m_OnAnimationComplete.Invoke();
156 }
157 }
158
159 void SetAnimationDuration(float duration)
160 {
161 m_AnimationDuration = duration;
162 }
163
165 {
166 m_EasingType = easing;
167 }
168
170 {
171 return m_IsAnimating;
172 }
173
175 {
176 return m_CurrentColum;
177 }
178}
int m_CurrentColum
Определения AnimatedGridSpacer.c:24
bool m_IsAnimating
Определения AnimatedGridSpacer.c:23
float m_ColumWidth
Определения AnimatedGridSpacer.c:14
AnimatedGridSpacerEasingType m_EasingType
Определения AnimatedGridSpacer.c:27
enum AnimatedGridSpacerEasingType m_GridSpacer
bool IsAnimating()
Определения AnimatedGridSpacer.c:169
float m_TargetPosX
Определения AnimatedGridSpacer.c:21
float m_BasePosX
Определения AnimatedGridSpacer.c:20
void AnimateToColum(int targetColumn)
Определения AnimatedGridSpacer.c:93
void MoveLeft()
Определения AnimatedGridSpacer.c:120
int m_MaxColums
Определения AnimatedGridSpacer.c:25
ref ScriptInvoker m_OnAnimationComplete
Определения AnimatedGridSpacer.c:29
float ApplyEasing(float t)
Определения AnimatedGridSpacer.c:65
void AnimatedGridSpacer(Widget gridSpacer, int maxColums, float animDuration=0.25, AnimatedGridSpacerEasingType easing=AnimatedGridSpacerEasingType.EASE_IN_OUT_CUBIC)
Определения AnimatedGridSpacer.c:31
void SetAnimationDuration(float duration)
Определения AnimatedGridSpacer.c:159
float m_CurrentPosY
Определения AnimatedGridSpacer.c:19
float m_AnimationTime
Определения AnimatedGridSpacer.c:17
float m_CurrentPosX
Определения AnimatedGridSpacer.c:19
AnimatedGridSpacerEasingType
Определения AnimatedGridSpacer.c:3
@ EASE_IN_OUT_QUART
Определения AnimatedGridSpacer.c:6
@ EASE_OUT_BOUNCE
Определения AnimatedGridSpacer.c:7
@ EASE_LINEAR
Определения AnimatedGridSpacer.c:4
@ EASE_OUT_BACK
Определения AnimatedGridSpacer.c:8
@ EASE_IN_OUT_CUBIC
Определения AnimatedGridSpacer.c:5
float m_AnimationDuration
Определения AnimatedGridSpacer.c:16
float m_BasePosY
Определения AnimatedGridSpacer.c:20
int GetCurrentRow()
Определения AnimatedGridSpacer.c:174
float m_StartPosX
Определения AnimatedGridSpacer.c:21
void SetColumWidth()
Определения AnimatedGridSpacer.c:51
void MoveRight()
Определения AnimatedGridSpacer.c:108
void SetEasingType(AnimatedGridSpacerEasingType easing)
Определения AnimatedGridSpacer.c:164
static float EaseOutBack(float t, float magnitude=1.70158)
Определения Easing.c:173
static float EaseInOutCubic(float t)
Определения Easing.c:48
static float EaseInOutQuad(float t)
Определения Easing.c:29
static float EaseOutBounce(float t)
Определения Easing.c:244
Input value between 0 and 1, returns value adjusted by easing, no automatic clamping of input(do your...
Определения Easing.c:3
ScriptInvoker Class provide list of callbacks usage:
Определения 2_GameLib/DayZ/tools.c:116
Определения EnWidgets.c:190
proto native volatile void Update()
Определения PlayerSoundManager.c:125