DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
GameplayEffectWidgets.c
См. документацию.
1/*
2TODO - doxygen formating
3*/
4
7{
8 protected ref Widget m_Root; //dummy parent node
10 protected ref set<ref Widget> m_UniqueLayouts;
12 protected ref set<int> m_RunningEffects;
13 protected ref set<int> m_RunningEffectsPrevious;
15 protected ref array<ref Widget> m_UpdatedWidgetsCheck; //to make sure widgets are not updated over and over (case of multiple IDs sharing same widget set)
16 protected ref array<int> m_UpdatedWidgetSetsCheck; //to make sure sets are not updated over and over (case of multiple IDs sharing same widget set)
17 protected ref set<int> m_SuspendRequests;
19
20 protected float m_TimeProgBreath;
21 protected float m_BreathMultStamina;
22 protected float m_BreathResidue;
23
24 //UserID's for widget containers that use something different from 'EffectWidgetsTypes' defaults
25 protected const int WIDGETSET_BREATH = 100;
26
27 //effect values
28 protected int m_BreathColor;
29 protected float m_BreathAlphaVal;
30 protected float m_FlashbangCoverAlphaVal;
31
33 {
34 m_Root = g_Game.GetWorkspace().CreateWidget(FrameWidgetTypeID,0,0,1.0,1.0,WidgetFlags.VISIBLE | WidgetFlags.HEXACTPOS | WidgetFlags.VEXACTPOS, 0xffffffff, 0);
36 m_UniqueLayouts = new set<ref Widget>;
38 m_RunningEffects = new set<int>;
39 m_RunningEffectsPrevious = new set<int>;
43 m_SuspendRequests = new set<int>;
45
46 m_TimeProgBreath = 0.0;
48
49 Init();
50
52 }
53
55 {
56 for (int i = 0; i < m_Layouts.Count(); i++)
57 {
58 if (m_Layouts.GetElement(i))
59 m_Layouts.GetElement(i).Unlink();
60 }
61 }
62
64//inits
65
66 protected void Init()
67 {
71 }
72
74 protected void PairIDToTypes()
75 {
76 m_IDToTypeMap.Insert(EffectWidgetsTypes.BLEEDING_LAYER, GameplayEffectsDataBleeding);
77 m_IDToTypeMap.Insert(EffectWidgetsTypes.SQUINTING, GameplayEffectsMetaDataSquinting);
78 m_IDToTypeMap.Insert(EffectWidgetsTypes.EYE_VEINS, GameplayEffectsMetaDataEyeVeins);
79 }
80
81 protected void InitLayouts()
82 {
83 RegisterLayouts("gui/layouts/gameplay/CameraEffects.layout", CompileEffectListing());
84 RegisterLayouts("gui/layouts/gameplay/BleedingEffects.layout", {EffectWidgetsTypes.BLEEDING_LAYER});
85 RegisterLayouts("gui/layouts/gameplay/EyeVeinsEffects.layout", {EffectWidgetsTypes.EYE_VEINS});
86 RegisterLayouts("gui/layouts/gameplay/EyeSquintEffects.layout", {EffectWidgetsTypes.SQUINTING});
87 }
88
89 protected void InitWidgetSets()
90 {
91 InitWidgetSet(EffectWidgetsTypes.MASK_BREATH,true,WIDGETSET_BREATH);
92 InitWidgetSet(EffectWidgetsTypes.HELMET_BREATH,true,WIDGETSET_BREATH);
93 InitWidgetSet(EffectWidgetsTypes.MOTO_BREATH,true,WIDGETSET_BREATH);
94
95 InitWidgetSet(EffectWidgetsTypes.MASK_OCCLUDER);
96 InitWidgetSet(EffectWidgetsTypes.HELMET_OCCLUDER);
97 InitWidgetSet(EffectWidgetsTypes.HELMET2_OCCLUDER);
98 InitWidgetSet(EffectWidgetsTypes.MOTO_OCCLUDER);
99 InitWidgetSet(EffectWidgetsTypes.NVG_OCCLUDER);
100 InitWidgetSet(EffectWidgetsTypes.PUMPKIN_OCCLUDER,false,EffectWidgetsTypes.NVG_OCCLUDER);
101 InitWidgetSet(EffectWidgetsTypes.EYEPATCH_OCCLUDER);
102
103 InitWidgetSet(EffectWidgetsTypes.COVER_FLASHBANG);
104
105 InitWidgetSet(EffectWidgetsTypes.BLEEDING_LAYER, true);
106 InitWidgetSet(EffectWidgetsTypes.SQUINTING);
107 InitWidgetSet(EffectWidgetsTypes.EYE_VEINS);
108 }
109
111
116 protected void RegisterLayouts(string path, array<int> types)
117 {
118 Widget w = g_Game.GetWorkspace().CreateWidgets(path,m_Root,false);
119 m_UniqueLayouts.Insert(w);
120 w.Show(false);
121 foreach (int i : types)
122 {
123 m_Layouts.Set(i,w);
124 }
125 }
126
127 protected typename TranslateIDToType(int typeID)
128 {
129 return m_IDToTypeMap.Get(typeID);
130 }
131
132 override void RegisterGameplayEffectData(int id, Param p)
133 {
134 if (!m_WidgetDataMap.Get(id).DataInitialized())
135 {
136 m_WidgetDataMap.Get(id).RegisterData(p);
137 }
138 }
139
150 protected void InitWidgetSet(int type, bool updating = false, int user_id_override = -1)
151 {
152 Widget parent = null;
153 if (user_id_override != -1)
154 {
155 parent = m_Layouts.Get(type).FindAnyWidgetById(user_id_override);
156 }
157 else
158 {
159 parent = m_Layouts.Get(type).FindAnyWidgetById(type);
160 }
161
162 if (!parent)
163 {
164 Print("InitWidgetSet | type: " + type + " - parent not found!");
165 return;
166 }
167
168 array<ref Widget> output;
169 Widget w = parent.GetChildren();
170 if (w)
171 {
172 output = new array<ref Widget>();
173 while (w)
174 {
175 w.Update();
176 w.Show(false,true);
177 output.Insert(w);
178
179 w = w.GetSibling();
180 }
181
182 if (parent.GetChildren())
183 {
184 typename handled_type = TranslateIDToType(type);
185 if ( handled_type )
186 {
187 CreateHandledClass(handled_type,output,type,user_id_override);
188 }
189 else
190 {
191 if (ImageWidget.Cast(parent.GetChildren()))
192 {
193 m_WidgetDataMap.Set(type, new GameplayEffectsDataImage(output,type,user_id_override) );
194 }
195 else
196 {
197 m_WidgetDataMap.Set(type, new GameplayEffectsData(output,type,user_id_override) );
198 }
199 }
200 }
201
202 if (updating)
203 m_UpdatingEffects.Insert(type);
204 }
205 }
206
207 bool CreateHandledClass(typename handled_type, array<ref Widget> input, int type, int user_override)
208 {
209 if (handled_type)
210 {
211 GameplayEffectsData data = GameplayEffectsData.Cast(handled_type.Spawn());
212 data.Init(input,type,m_Layouts.Get(type),user_override);
213 m_WidgetDataMap.Set(type, data);
214 return true;
215 }
216 return false;
217 }
218
221 {
222 array<int> ret = new array<int>;
223 ret.Insert(EffectWidgetsTypes.MASK_OCCLUDER);
224 ret.Insert(EffectWidgetsTypes.MASK_BREATH);
225 ret.Insert(EffectWidgetsTypes.HELMET_OCCLUDER);
226 ret.Insert(EffectWidgetsTypes.HELMET_BREATH);
227 ret.Insert(EffectWidgetsTypes.MOTO_OCCLUDER);
228 ret.Insert(EffectWidgetsTypes.MOTO_BREATH);
229 ret.Insert(EffectWidgetsTypes.COVER_FLASHBANG);
230 ret.Insert(EffectWidgetsTypes.NVG_OCCLUDER);
231 ret.Insert(EffectWidgetsTypes.PUMPKIN_OCCLUDER);
232 ret.Insert(EffectWidgetsTypes.EYEPATCH_OCCLUDER);
233 ret.Insert(EffectWidgetsTypes.HELMET2_OCCLUDER);
234
235 return ret;
236 }
237
238 protected void UpdateVisibility()
239 {
240 Widget w;
241 //Hide diff
242 int value;
243 int runningEffectCount = m_RunningEffects.Count();
244 bool runningEffectsPresent = runningEffectCount > 0;
246 for (int i = 0; i < m_RunningEffectsPrevious.Count(); i++)
247 {
248 value = m_RunningEffectsPrevious.Get(i);
249 dta = m_WidgetDataMap.Get(value);
250 if (runningEffectCount < 1 || m_RunningEffects.Find(value) == -1)
251 {
252 if (dta.HasDefinedHandle())
253 {
254 dta.UpdateVisibility(false);
255 }
256 else
257 {
258 for (int j = 0; j < m_WidgetDataMap.Get(value).GetWidgetSet().Count(); j++)
259 {
260 w = m_WidgetDataMap.Get(value).GetWidgetSet().Get(j);
261 w.Show(false);
262 }
263 w.GetParent().Show(false);
264 }
265 }
266 }
267
268 //Show running effects
269 if (runningEffectsPresent)
270 {
271 value = 0;
272 for (i = 0; i < runningEffectCount; i++)
273 {
274 value = m_RunningEffects.Get(i);
275 dta = m_WidgetDataMap.Get(value);
276 if (dta.HasDefinedHandle())
277 {
278 dta.m_LayoutRoot.Show(true);
279 dta.UpdateVisibility(true);
280 }
281 else
282 {
283 for (j = 0; j < m_WidgetDataMap.Get(value).GetWidgetSet().Count(); j++)
284 {
285 w = m_WidgetDataMap.Get(value).GetWidgetSet().Get(j);
286 w.Update();
287 w.Show(true);
288 }
289
290 while (w) //dumb but necessary because of uncertain "visible" setting of the layout
291 {
292 w = w.GetParent();
293 if (w)
294 {
295 w.Show(true);
296 }
297 }
298 }
299 }
300 }
301
302 m_Root.Show(runningEffectsPresent && m_SuspendRequests.Count() < 1);
304 }
305
306 override void AddActiveEffects(array<int> effects)
307 {
308 if (effects && effects.Count() > 0)
309 {
311
312 int value;
313 for (int i = 0; i < effects.Count(); i++)
314 {
315 value = effects.Get(i);
316 m_RunningEffects.Insert(value);
317 }
318
319 if (m_RunningEffectsPrevious.Count() != m_RunningEffects.Count())
320 {
322 }
323 }
324 }
325
326 override void RemoveActiveEffects(array<int> effects)
327 {
328 if (effects && effects.Count() > 0)
329 {
331
332 int count = effects.Count();
333 int value;
334 int idx;
335 for (int i = 0; i < count; ++i)
336 {
337 value = effects.Get(i);
338 idx = m_RunningEffects.Find(value);
339 if (idx != -1)
340 {
341 m_RunningEffects.Remove(idx);
342 }
343 }
344
345 if (m_RunningEffectsPrevious.Count() != m_RunningEffects.Count())
346 {
348 }
349 }
350 }
351
352 override void StopAllEffects()
353 {
354 m_Root.Show(false); //to avoid visual 'peeling'
355
356 if (IsAnyEffectRunning())
357 {
358 int count = m_RunningEffects.Count();
360 for (int i = 0; i < count; i++) //iterates over running metadata, in case anything requires its own stop handling
361 {
362 data = m_WidgetDataMap.Get(m_RunningEffects[i]);
363 data.ForceStop();
364 }
365 }
366
368 m_RunningEffects.Clear();
370 }
371
372 override bool IsAnyEffectRunning()
373 {
374 return m_RunningEffects && m_RunningEffects.Count() > 0;
375 }
376
377 override void AddSuspendRequest(int request_id)
378 {
379 m_SuspendRequests.Insert(request_id);
381 }
382
383 override void RemoveSuspendRequest(int request_id)
384 {
385 int idx = m_SuspendRequests.Find(request_id);
386 if (idx != -1)
387 {
388 m_SuspendRequests.Remove(idx);
389 }
391 }
392
393 override void ClearSuspendRequests()
394 {
395 m_SuspendRequests.Clear();
397 }
398
400 {
401 return m_SuspendRequests.Count();
402 }
403
405 override void UpdateWidgets(int type = -1, float timeSlice = 0, Param p = null, int handle = -1)
406 {
408 array<ref Widget> widget_set;
409
410 if (type == EffectWidgetsTypes.ROOT)
411 {
412 HandleWidgetRoot(timeSlice,p,handle);
413 }
414 else if (type == -1) //update stuff from the m_UpdatingEffects
415 {
416 int type_widgetset = 0;
417 for (int i = 0; i < m_UpdatingEffects.Count(); i++)
418 {
419 if (m_RunningEffects.Find(m_UpdatingEffects.Get(i)) != -1)
420 {
421 type_widgetset = m_UpdatingEffects.Get(i);
422
423 dta = m_WidgetDataMap.Get(type_widgetset);
424
425 if (dta.HasDefinedHandle() && dta.DataInitialized())
426 {
427 dta.Update(timeSlice,p,handle); //calculate and apply
428 }
429 else
430 {
431 CalculateValues(type_widgetset,timeSlice,p,handle);
432 widget_set = dta.GetWidgetSet();
433 foreach (Widget w : widget_set)
434 {
435 if (w.IsVisibleHierarchy() && m_UpdatedWidgetsCheck.Find(w) == -1)
436 {
437 m_UpdatedWidgetsCheck.Insert(w);
438 ProcessWidgetUpdate(w,type_widgetset,timeSlice,p,handle);
439 }
440 }
441 }
442 }
443 }
444 }
445 else //update specific widget set
446 {
447 if (m_RunningEffects.Find(type) != -1) //only do if the effect is running (FPS stonks!)
448 {
449 dta = m_WidgetDataMap.Get(type);
450
451 if (dta.HasDefinedHandle() && dta.DataInitialized())
452 {
453 dta.Update(timeSlice,p,handle); //calculate and apply
454 }
455 else
456 {
457 CalculateValues(type,timeSlice,p,handle);
458 widget_set = dta.GetWidgetSet();
459 foreach (Widget w2 : widget_set)
460 {
461 if (w2.IsVisibleHierarchy() && m_UpdatedWidgetsCheck.Find(w2) == -1)
462 {
463 m_UpdatedWidgetsCheck.Insert(w2);
464 ProcessWidgetUpdate(w2,type,timeSlice,p,handle);
465 }
466 }
467 }
468 }
469 }
470
471 m_UpdatedWidgetsCheck.Clear();
473 }
474
476 protected void CalculateValues(int type = -1, float timeSlice = 0, Param p = null, int handle = -1)
477 {
478 if (m_UpdatedWidgetSetsCheck.Find(m_WidgetDataMap.Get(type).GetWidgetSetID()) != -1)
479 {
480 //Print("skipped updating set ID " + m_WidgetDataMap.Get(type).GetWidgetSetID() + " | effect: " + type);
481 return;
482 }
483
484 switch (type)
485 {
486 case EffectWidgetsTypes.MOTO_BREATH:
487 case EffectWidgetsTypes.HELMET_BREATH:
488 case EffectWidgetsTypes.MASK_BREATH:
489 {
490 CalculateBreathEffect(timeSlice);
491 }
492 break;
493
494 case EffectWidgetsTypes.MOTO_OCCLUDER:
495 case EffectWidgetsTypes.EYEPATCH_OCCLUDER:
496 case EffectWidgetsTypes.HELMET_OCCLUDER:
497 case EffectWidgetsTypes.HELMET2_OCCLUDER:
498 case EffectWidgetsTypes.MASK_OCCLUDER:
499 {
500 CalculateOccluderEffect(type,timeSlice,p,handle);
501 }
502 break;
503
504 case EffectWidgetsTypes.COVER_FLASHBANG:
505 {
506 CalculateFlashbangEffect(type,timeSlice,p,handle);
507 }
508 break;
509
510 default:
511 return; //no need to calculate anything
512 break;
513 }
514
515 m_UpdatedWidgetSetsCheck.Insert(m_WidgetDataMap.Get(type).GetWidgetSetID());
516 }
517
518 protected void ProcessWidgetUpdate(Widget w, int type, float timeSlice = 0, Param p = null, int handle = -1)
519 {
520 switch (type)
521 {
522 case EffectWidgetsTypes.MOTO_BREATH:
523 case EffectWidgetsTypes.HELMET_BREATH:
524 case EffectWidgetsTypes.MASK_BREATH:
525 {
526 UpdateBreathEffect(ImageWidget.Cast(w));
527 }
528 break;
529
530 case EffectWidgetsTypes.MOTO_OCCLUDER:
531 case EffectWidgetsTypes.EYEPATCH_OCCLUDER:
532 case EffectWidgetsTypes.HELMET_OCCLUDER:
533 case EffectWidgetsTypes.HELMET2_OCCLUDER:
534 case EffectWidgetsTypes.MASK_OCCLUDER:
535 {
536 UpdateOccluderEffect(ImageWidget.Cast(w),type,timeSlice,p,handle);
537 }
538 break;
539
540 case EffectWidgetsTypes.COVER_FLASHBANG:
541 {
542 UpdateFlashbangEffect(ImageWidget.Cast(w));
543 }
544 break;
545
546 default:
547 //Print("---invalid widget type to update---");
548 break;
549 }
550 }
551
552 //-----------------------------------------
553 //specific widget 'handlers'
554
555 const float BREATH_HDR_MIN = 0.005; //dusk?
556 const float BREATH_HDR_MAX = 1.0; //dark?
557 const float BREATH_COLOR_MULT_MIN = 0.5;
558 const float BREATH_COLOR_MULT_MAX = 0.8;
559
560 //-----------------------------------------
561 //Breath
562 //-----------------------------------------
563 protected void CalculateBreathEffect(float timeSlice = 0, int type = -1, Param p = null)
564 {
565 float modifier = Math.Lerp(0.25, 0.5, m_BreathResidue);
566 float speed = timeSlice * modifier;
567 m_BreathResidue -= speed;
569 float residue_final = Math.Lerp(0, 0.7, m_BreathResidue);
570
571 float hdr_mult;
572 hdr_mult = GetSceneHDRMul(0);
573 hdr_mult = Math.Clamp(hdr_mult,BREATH_HDR_MIN,BREATH_HDR_MAX);
574 hdr_mult = Math.InverseLerp(BREATH_HDR_MIN,BREATH_HDR_MAX,hdr_mult);
576 m_BreathColor = ARGBF(0.0,1.0 * hdr_mult,1.0 * hdr_mult,1.0 * hdr_mult); //grayscaling of the image
577
578 m_BreathAlphaVal = Math.Lerp(m_BreathAlphaVal, residue_final, timeSlice);
579 }
580
581 protected void UpdateBreathEffect(ImageWidget w)
582 {
583 w.SetColor(m_BreathColor);
584 w.SetAlpha(m_BreathAlphaVal);
585 }
586
587 //-----------------------------------------
588 //Occluders
589 //-----------------------------------------
590 protected void CalculateOccluderEffect(int type, float timeSlice, Param p, int handle)
591 {
592 }
593
594 protected void UpdateOccluderEffect(ImageWidget w, int type, float timeSlice, Param p, int handle)
595 {
596 }
597
598 //-----------------------------------------
599 //Flashbang
600 //-----------------------------------------
601 protected void CalculateFlashbangEffect(int type, float timeSlice, Param p, int handle)
602 {
603 Param1<float> par = Param1<float>.Cast(p);
604 m_FlashbangCoverAlphaVal = par.param1;
605
606 /*if (m_FlashbangCoverAlphaVal <= 0.0)
607 {
608 RemoveActiveEffects({EffectWidgetsTypes.COVER_FLASHBANG});
609 return;
610 }*/
611 }
612
613 protected void UpdateFlashbangEffect(ImageWidget w)
614 {
615 w.SetAlpha(1 - m_FlashbangCoverAlphaVal);
616 }
617
618 //-----------------------------------------
619 //root handling (generic 'Widget', so mainly alpha and hiding?)
620 //-----------------------------------------
621 protected void HandleWidgetRoot(float timeSlice = 0, Param p = null, int handle = -1)
622 {
623 switch (handle)
624 {
625 default:
626 {
627 Param1<float> par = Param1<float>.Cast(p);
628 if (par)
629 {
630 float alpha_mod = Math.Clamp(par.param1,0.0,1.0);
631 m_Root.SetAlpha(alpha_mod);
632 }
633 }
634 break;
635 }
636 }
637
638 //-----------------------------------------
640 override void Update(float timeSlice)
641 {
642 if (m_SuspendRequests.Count() > 0)
643 {
644 return;
645 }
646
647 UpdateWidgets(-1,timeSlice);
648 }
649
650 /*
651 override void SetBreathIntensityStamina(float stamina_cap, float stamina_current)
652 {
653 float stamina_normalized = Math.InverseLerp(0, stamina_cap, stamina_current);
654 stamina_normalized = Math.Clamp(stamina_normalized,0,1);
655
656 if ( stamina_normalized < STAMINA_SOUND_TR2 )
657 {
658 m_BreathMultStamina = 2.0;
659 }
660 else if ( stamina_normalized < STAMINA_SOUND_TR1 )
661 {
662 m_BreathMultStamina = 1.5;
663 }
664 else
665 {
666 m_BreathMultStamina = 1.0;
667 }
668 }
669 */
670 override void OnVoiceEvent(float breathing_resistance01)
671 {
672 m_BreathResidue += Math.Lerp(0,0.35,breathing_resistance01);
674 }
675}
DayZGame g_Game
Определения DayZGame.c:4074
void GameplayEffectsDataImage(array< ref Widget > input, int type, int user_override=-1)
Определения GEWidgetsMetaData.c:77
map< int, ref GameplayEffectsData > GameplayEffectDataMap
Определения GEWidgetsMetaData.c:105
string path
Определения OptionSelectorMultistate.c:142
@ Count
Определения RandomGeneratorSyncManager.c:8
const int WIDGETSET_BREATH
Определения GameplayEffectWidgets.c:25
override bool IsAnyEffectRunning()
Определения GameplayEffectWidgets.c:372
override void AddSuspendRequest(int request_id)
Определения GameplayEffectWidgets.c:377
ref array< int > m_UpdatedWidgetSetsCheck
Определения GameplayEffectWidgets.c:16
void PairIDToTypes()
Links types to unique handler types, if needed. Vanilla stuff was already handled in the generic upda...
Определения GameplayEffectWidgets.c:74
void ProcessWidgetUpdate(Widget w, int type, float timeSlice=0, Param p=null, int handle=-1)
Определения GameplayEffectWidgets.c:518
const float BREATH_HDR_MIN
Определения GameplayEffectWidgets.c:555
TranslateIDToType(int typeID)
Определения GameplayEffectWidgets.c:127
override void OnVoiceEvent(float breathing_resistance01)
Определения GameplayEffectWidgets.c:670
override void Update(float timeSlice)
Generic update, called on frame from the player.
Определения GameplayEffectWidgets.c:640
void CalculateFlashbangEffect(int type, float timeSlice, Param p, int handle)
Определения GameplayEffectWidgets.c:601
array< int > CompileEffectListing()
returns all vanilla effects, nested in a vanilla layout. If using different layouts for custom effect...
Определения GameplayEffectWidgets.c:220
void RegisterLayouts(string path, array< int > types)
Registers new layout and ties effect IDs to it.
Определения GameplayEffectWidgets.c:116
void UpdateBreathEffect(ImageWidget w)
Определения GameplayEffectWidgets.c:581
void HandleWidgetRoot(float timeSlice=0, Param p=null, int handle=-1)
Определения GameplayEffectWidgets.c:621
void ~GameplayEffectWidgets()
Определения GameplayEffectWidgets.c:54
override void RemoveSuspendRequest(int request_id)
Определения GameplayEffectWidgets.c:383
void UpdateFlashbangEffect(ImageWidget w)
Определения GameplayEffectWidgets.c:613
override void RemoveActiveEffects(array< int > effects)
Определения GameplayEffectWidgets.c:326
override void ClearSuspendRequests()
Определения GameplayEffectWidgets.c:393
ref map< int, typename > m_IDToTypeMap
Определения GameplayEffectWidgets.c:18
ref set< int > m_RunningEffects
Определения GameplayEffectWidgets.c:12
override int GetSuspendRequestCount()
Определения GameplayEffectWidgets.c:399
bool CreateHandledClass(typename handled_type, array< ref Widget > input, int type, int user_override)
Определения GameplayEffectWidgets.c:207
void CalculateValues(int type=-1, float timeSlice=0, Param p=null, int handle=-1)
Only one calculation per unique WidgetSet.
Определения GameplayEffectWidgets.c:476
ref GameplayEffectDataMap m_WidgetDataMap
Определения GameplayEffectWidgets.c:11
override void UpdateWidgets(int type=-1, float timeSlice=0, Param p=null, int handle=-1)
Usually called in course of an OnFrame update, can be manually called from elsewhere with parameters.
Определения GameplayEffectWidgets.c:405
void CalculateBreathEffect(float timeSlice=0, int type=-1, Param p=null)
Определения GameplayEffectWidgets.c:563
float m_FlashbangCoverAlphaVal
Определения GameplayEffectWidgets.c:30
ref set< int > m_RunningEffectsPrevious
Определения GameplayEffectWidgets.c:13
ref set< ref Widget > m_UniqueLayouts
Определения GameplayEffectWidgets.c:10
ref array< int > m_UpdatingEffects
Определения GameplayEffectWidgets.c:14
void GameplayEffectWidgets()
Определения GameplayEffectWidgets.c:32
void InitWidgetSet(int type, bool updating=false, int user_id_override=-1)
InitWidgetSet.
Определения GameplayEffectWidgets.c:150
const float BREATH_COLOR_MULT_MAX
Определения GameplayEffectWidgets.c:558
ref set< int > m_SuspendRequests
Определения GameplayEffectWidgets.c:17
ref map< int, ref Widget > m_Layouts
Определения GameplayEffectWidgets.c:9
void UpdateOccluderEffect(ImageWidget w, int type, float timeSlice, Param p, int handle)
Определения GameplayEffectWidgets.c:594
const float BREATH_HDR_MAX
Определения GameplayEffectWidgets.c:556
ref array< ref Widget > m_UpdatedWidgetsCheck
Определения GameplayEffectWidgets.c:15
const float BREATH_COLOR_MULT_MIN
Определения GameplayEffectWidgets.c:557
override void RegisterGameplayEffectData(int id, Param p)
Определения GameplayEffectWidgets.c:132
override void StopAllEffects()
Определения GameplayEffectWidgets.c:352
override void AddActiveEffects(array< int > effects)
Определения GameplayEffectWidgets.c:306
ref Widget m_Root
Определения GameplayEffectWidgets.c:8
void CalculateOccluderEffect(int type, float timeSlice, Param p, int handle)
Определения GameplayEffectWidgets.c:590
grouped gameplay effect widgets and their handling
Определения GameplayEffectWidgets.c:7
override bool DataInitialized()
Определения GEWidgetsMetaDataBleeding.c:49
override void Init(array< ref Widget > input, int type, Widget layout_root, int user_override=-1)
Определения GEWidgetsMetaDataBleeding.c:26
override void ForceStop()
stops and re-sets indicators and images even out of sequence. Should still be tied to the 'player' up...
Определения GEWidgetsMetaDataBleeding.c:210
override void Update(float timeSlice=0, Param p=null, int handle=-1)
Определения GEWidgetsMetaDataBleeding.c:154
override void UpdateVisibility(bool state)
Определения GEWidgetsMetaDataBleeding.c:197
override bool HasDefinedHandle()
Определения GEWidgetsMetaDataBleeding.c:44
Manages all bleeding indicators and their updates.
Определения GEWidgetsMetaDataBleeding.c:4
Manages eye veins effects.
Определения GEWidgetsMetaDataEyeVeins.c:3
Manages eye squinting.
Определения GEWidgetsMetaDataSquinting.c:3
Определения EnMath.c:7
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
Определения EnWidgets.c:190
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
Определения Transport.c:70
proto void Print(void var)
Prints content of variable to console/log.
proto native float GetSceneHDRMul(int camera)
static proto float Lerp(float a, float b, float time)
Linearly interpolates between 'a' and 'b' given 'time'.
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...
WidgetFlags
Определения EnWidgets.c:58
int ARGBF(float fa, float fr, float fg, float fb)
Converts <0.0, 1.0> ARGB into color.
Определения proto.c:332