DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
UndergroundHandlerClient.c
См. документацию.
2{
3 NONE,//player is not interacting with underground at any level
4 OUTER,//player is on the outskirts of the underdound, some effects are already in effect, while others might not be
5 TRANSITIONING,//player has entered underground and is in the process of screen darkening transition
6 FULL//the player is now fully entered underground
7}
8
10{
11 const float LIGHT_BLEND_SPEED_IN = 5;
12 const float LIGHT_BLEND_SPEED_OUT = 1.75;
13 const float MAX_RATIO = 0.9;//how much max ratio between 0..1 can a single breadcrumb occupy
14 const float RATIO_CUTOFF = 0;//what's the minimum ratio a breadcrumb needs to have to be considered when calculatiing accommodation
15 const float DISTANCE_CUTOFF = 5;//we ignore breadcrumbs further than this distance
16 const float ACCO_MODIFIER = 1;//when we calculate eye accommodation between 0..1 based on the breadcrumbs values and distances, we multiply the result by this modifier to get the final eye accommodation value
18 const string UNDERGROUND_LIGHTING = "dz\\data\\lighting\\lighting_underground.txt";
20
22 protected PPERUndergroundAcco m_Requester;
23 protected PPERequester_CameraNV m_NVRequester;
24 protected ref set<UndergroundTrigger> m_InsideTriggers = new set<UndergroundTrigger>();
25
26 protected float m_EyeAccoTarget = 1;
27 protected float m_AccoInterpolationSpeed;
28 protected float m_EyeAcco = 1;
29 protected float m_LightingLerpTarget;
30 protected float m_LightingLerp;
31 protected string m_AmbientController; // active sound controlelr for ambient
33
34 protected UndergroundTrigger m_BestTrigger;
35 protected UndergroundTrigger m_TransitionalTrigger;
36
38 {
39 g_Game.GetWorld().LoadUserLightingCfg(UNDERGROUND_LIGHTING, "Underground");
40 m_Player = player;
41 m_NVRequester = PPERequester_CameraNV.Cast(PPERequesterBank.GetRequester(PPERequesterBank.REQ_CAMERANV));
42 }
43
45 {
46 if (g_Game)
47 {
48 g_Game.GetWorld().SetExplicitVolumeFactor_EnvSounds2D(1, 0.5);
49 g_Game.GetWeather().SuppressLightningSimulation(false);
50 g_Game.GetWorld().SetUserLightingLerp(0);
52 m_AmbientSound.Stop();
53 }
54 }
55
56 protected PPERUndergroundAcco GetRequester()
57 {
58 if (!m_Requester)
59 {
60 m_Requester = PPERUndergroundAcco.Cast(PPERequesterBank.GetRequester( PPERequesterBank.REQ_UNDERGROUND));
61 m_Requester.Start();
62 }
63 return m_Requester;
64 }
65
66 void OnTriggerEnter(UndergroundTrigger trigger)
67 {
68 m_InsideTriggers.Insert(trigger);
70 }
71
72 void OnTriggerLeave(UndergroundTrigger trigger)
73 {
74 int index = m_InsideTriggers.Find(trigger);
75 if (index != -1)
76 m_InsideTriggers.Remove(index);
77
79 }
80
81 protected void CalculateEyeAccoTarget()
82 {
84 return;
85
86 if (m_TransitionalTrigger.m_Data.UseLinePointFade && m_TransitionalTrigger.m_Data.Breadcrumbs.Count() >= 2)
87 {
89 }
90 else if (m_TransitionalTrigger.m_Data.Breadcrumbs.Count() >= 1)
91 {
93 }
94 }
95
96 protected void CalculateBreadCrumbs()
97 {
98 float closestDist = float.MAX;
99 array<float> distances = new array<float>();
100 array<float> distancesInverted = new array<float>();
101
102 int excludeMask = 0;
103 foreach (int indx, auto crumb : m_TransitionalTrigger.m_Data.Breadcrumbs)
104 {
105 if (indx > 32)//error handling for exceeding this limit is handled elsewhere
106 break;
107
108 vector playerPosition = m_Player.GetPosition();
109 vector crumbPosition = crumb.GetPosition();
110 float dist = vector.Distance(playerPosition, crumbPosition);
111 float crumbRadius = m_TransitionalTrigger.m_Data.Breadcrumbs[indx].Radius;
112 float maxRadiusAllowed = DISTANCE_CUTOFF;
113
114 switch (crumb.ExternalValueController.Type)
115 {
116 case "DoorState":
117 {
118 BreadcrumbDoorStateController ctrl = new BreadcrumbDoorStateController(crumb.ExternalValueController.Params);
119 if (!ctrl || (ctrl && ctrl.SelectionName == ""))
120 break;
121
122 Building building = Building.Cast(m_TransitionalTrigger.GetTriggerParentObject());
123 if (!building)
124 break;
125
126 float animPhase = building.GetAnimationPhase(ctrl.SelectionName);
127 m_LightingLerpTarget = Math.Clamp(Easing.EaseInOutQuint(1 - animPhase), 0.0, 1.0);
128 m_LightingLerp = Easing.EaseInQuint(1 - Math.Remap(0.2, 0.5, 0.0, 1.0, animPhase));
129 m_EyeAccoTarget = Math.Remap(0.2, 0.5, 0.0, m_TransitionalTrigger.m_Data.Breadcrumbs[indx].EyeAccommodation, animPhase * ACCO_MODIFIER);
130
131 return;
132 }
133 }
134
135 if (crumbRadius != -1)
136 maxRadiusAllowed = crumbRadius;
137 if (dist > maxRadiusAllowed)
138 excludeMask = (excludeMask | (1 << indx));
139 else if (m_TransitionalTrigger.m_Data.Breadcrumbs[indx].UseRaycast)
140 {
141 vector rayStart = MiscGameplayFunctions.GetPlayerHeadPosition(m_Player);
142 vector rayEnd = crumbPosition;
143 vector hitPos, hitNormal;
144 float hitFraction;
145 Object hitObj;
146
147 if (DayZPhysics.RayCastBullet(rayStart, rayEnd,PhxInteractionLayers.TERRAIN | PhxInteractionLayers.ROADWAY| PhxInteractionLayers.BUILDING, null, hitObj, hitPos, hitNormal, hitFraction))
148 {
149 excludeMask = (excludeMask | (1 << indx));
150 }
151 }
152
153 distances.Insert(dist);
154
155 #ifdef DIAG_DEVELOPER
156 if ( DiagMenu.GetBool(DiagMenuIDs.UNDERGROUND_SHOW_BREADCRUMB) )
157 Debug.DrawSphere(crumbPosition, 0.1, COLOR_RED, ShapeFlags.ONCE);
158 #endif
159 }
160
161 float baseDst = distances[0];
162 float sum = 0;
163
164 foreach (float dst:distances)
165 {
166 if (dst == 0)
167 dst = 0.1;
168 float dstInv = (baseDst / dst) * baseDst;
169 sum += dstInv;
170 distancesInverted.Insert(dstInv);
171 }
172
173 float sumCheck = 0;
174 float eyeAcco = 0;
175 foreach (int i, float dstInvert:distancesInverted)
176 {
177 if ((1 << i) & excludeMask)
178 continue;
179
180 float ratio = dstInvert / sum;
181 if (ratio > MAX_RATIO)
182 ratio = MAX_RATIO;
183
184 if (ratio > RATIO_CUTOFF)
185 {
186 #ifdef DIAG_DEVELOPER
187 if (DiagMenu.GetBool(DiagMenuIDs.UNDERGROUND_SHOW_BREADCRUMB) )
188 {
189 float intensity = (1-ratio) * 255;
190 Debug.DrawLine(g_Game.GetPlayer().GetPosition() + "0 1 0", m_TransitionalTrigger.m_Data.Breadcrumbs[i].GetPosition(),ARGB(0,255,intensity,intensity),ShapeFlags.ONCE);
191 }
192 #endif
193
194 eyeAcco += ratio * m_TransitionalTrigger.m_Data.Breadcrumbs[i].EyeAccommodation;
195 }
196 }
197
198 m_EyeAccoTarget = eyeAcco * ACCO_MODIFIER;
199 }
200
201 protected void CalculateLinePointFade()
202 {
204 JsonUndergroundAreaBreadcrumb startPoint = points[0];
205 JsonUndergroundAreaBreadcrumb endPoint = points[points.Count() - 1];
206 vector playerPos = m_Player.GetPosition();
207
208 bool forceAcco;
209 float acco;
210 float accoMax = m_TransitionalTrigger.m_Data.Breadcrumbs[0].EyeAccommodation;
211 float accoMin = endPoint.EyeAccommodation;
212 JsonUndergroundAreaBreadcrumb closestPoint;
213 JsonUndergroundAreaBreadcrumb secondaryPoint;
214 float distanceToClosest;
215 float distanceToSecondary;
216 float distanceBetweenPoints;
217
218 foreach (JsonUndergroundAreaBreadcrumb point : points) //identify closest segment
219 {
220 float dist = vector.DistanceSq(playerPos, point.GetPosition());
221 if (!closestPoint || dist < distanceToClosest)
222 {
223 if (closestPoint)
224 {
225 secondaryPoint = closestPoint;
226 distanceToSecondary = distanceToClosest;
227 }
228 closestPoint = point;
229 distanceToClosest = dist;
230 }
231 else if (!secondaryPoint || dist < secondaryPoint)
232 {
233 secondaryPoint = point;
234 distanceToSecondary = dist;
235 }
236
237 #ifdef DIAG_DEVELOPER
238 if (DiagMenu.GetBool(DiagMenuIDs.UNDERGROUND_SHOW_BREADCRUMB))
239 Debug.DrawSphere(point.GetPosition(),0.1, COLOR_RED, ShapeFlags.ONCE);
240 #endif
241 }
242
243 distanceBetweenPoints = vector.DistanceSq(closestPoint.GetPosition(), secondaryPoint.GetPosition());
244
245 if (closestPoint == startPoint && secondaryPoint == points[1] && distanceToSecondary > distanceBetweenPoints) // before first point, do nothing
246 acco = accoMax;
247 else if (closestPoint == endPoint && secondaryPoint == points[points.Count() - 2] && distanceToSecondary > distanceBetweenPoints) // past second point, do nothing
248 acco = accoMin;
249 else // between the two points, lerp
250 {
251 if (closestPoint == endPoint)
252 secondaryPoint = points[points.Count() - 2];
253 else if (closestPoint == startPoint)
254 secondaryPoint = points[1];
255 else if (distanceBetweenPoints < distanceToClosest || distanceBetweenPoints < distanceToSecondary)
256 {
257 JsonUndergroundAreaBreadcrumb nexPoint = points[points.Find(closestPoint) + 1];
258 if (vector.DistanceSq(playerPos, nexPoint.GetPosition()) < vector.DistanceSq(closestPoint.GetPosition(), nexPoint.GetPosition()))
259 secondaryPoint = nexPoint;
260 else
261 {
262 acco = closestPoint.EyeAccommodation;
263 forceAcco = true;
264 }
265 }
266
267 if (!forceAcco)
268 {
269 distanceToSecondary = vector.DistanceSq(playerPos, secondaryPoint.GetPosition());
270
271 acco = distanceToSecondary / (distanceToClosest + distanceToSecondary); // progress
272 acco = Math.Lerp(secondaryPoint.EyeAccommodation, closestPoint.EyeAccommodation, acco);
273
274 if (points.Find(closestPoint) > points.Find(secondaryPoint))
275 m_LightingLerpTarget = closestPoint.LightLerp;
276 else
277 m_LightingLerpTarget = secondaryPoint.LightLerp;
278
279 }
280 }
281
283
285 {
286 if (m_LightingLerpTarget == 1)
287 {
289 m_AnimTimerLightBlend.Run(1, this, "OnUpdateTimerIn", "OnUpdateTimerEnd",0, false, LIGHT_BLEND_SPEED_IN);
290 }
291 else
292 {
294 m_AnimTimerLightBlend.Run(0, this, "OnUpdateTimerOut", "OnUpdateTimerEnd",m_LightingLerp, false, LIGHT_BLEND_SPEED_OUT);
295 }
296 }
297
298 #ifdef DIAG_DEVELOPER
299 if (DiagMenu.GetBool(DiagMenuIDs.UNDERGROUND_SHOW_BREADCRUMB))
300 {
301 vector headPosition = MiscGameplayFunctions.GetPlayerHeadPosition(m_Player);
302 Debug.DrawLine(headPosition, closestPoint.GetPosition(), COLOR_YELLOW, ShapeFlags.ONCE);
303 if (acco != accoMin && acco != accoMax)
304 Debug.DrawLine(closestPoint.GetPosition(), secondaryPoint.GetPosition(), COLOR_RED, ShapeFlags.ONCE);
305
306 DbgUI.Begin(String("Underground Areas"), 20, 20);
307 DbgUI.Text(String("Closest point id: " + points.Find(closestPoint)));
308 DbgUI.Text(String("Second closest id: " + points.Find(secondaryPoint)));
309 DbgUI.End();
310 }
311 #endif
312 }
313
314 protected void ProcessEyeAcco(float timeSlice)
315 {
317 bool reachedTarget = CalculateEyeAcco(timeSlice);
318 ApplyEyeAcco();
319 if(reachedTarget && !m_Player.m_UndergroundPresence)
320 {
321 GetRequester().Stop();
323 //m_NVRequester.SetUndergroundExposureCoef(1.0);
324 m_Player.KillUndergroundHandler();
325 }
326
327 }
328
329 protected void ProcessLighting(float timeSlice)
330 {
331 #ifdef DEVELOPER
332 if (!DiagMenu.GetBool(DiagMenuIDs.UNDERGROUND_DISABLE_DARKENING) )
333 {
334 g_Game.GetWorld().SetUserLightingLerp(m_LightingLerp);
335 }
336 else
337 {
338 g_Game.GetWorld().SetUserLightingLerp(0);
339 }
340 #else
341 g_Game.GetWorld().SetUserLightingLerp(m_LightingLerp);
342 #endif
343 }
344
345 protected void ProcessSound(float timeSlice)
346 {
347 if (m_BestTrigger && m_BestTrigger.m_Data && m_BestTrigger.m_Data.AmbientSoundType != string.Empty) // caves use sound controllers so EnvSounds2D shouldnt be touched
348 return;
349
350 // reduces all env sounds and increases ambient based on eye acco
351 g_Game.GetWorld().SetExplicitVolumeFactor_EnvSounds2D(m_EyeAcco, 0);
352
353 if (m_AmbientSound)
354 {
355 if (m_TransitionalTrigger && m_TransitionalTrigger.m_Data.Breadcrumbs.Count() >= 2)
356 m_AmbientSound.SetSoundVolume(1-m_EyeAcco);
357 }
358 }
359
360 void Tick(float timeSlice)
361 {
362 if (!m_Player.IsAlive())
363 return;
364
365 ProcessEyeAcco(timeSlice);
366 ProcessLighting(timeSlice);
367 ProcessSound(timeSlice);
368
369 #ifdef DIAG_DEVELOPER
370 if ( DiagMenu.GetBool(DiagMenuIDs.UNDERGROUND_SHOW_BREADCRUMB) )
371 {
372 DisplayDebugInfo(g_Game.GetWorld().GetEyeAccom(), m_LightingLerp);
373 }
374 #endif
375
376 }
377
378 protected void ApplyEyeAcco()
379 {
380 #ifdef DIAG_DEVELOPER
381 if (!DiagMenu.GetBool(DiagMenuIDs.UNDERGROUND_DISABLE_DARKENING) )
382 {
383 GetRequester().SetEyeAccommodation(m_EyeAcco);
384 }
385 else
386 {
387 GetRequester().SetEyeAccommodation(1);
388 }
389 #else
390 GetRequester().SetEyeAccommodation(m_EyeAcco);
391 #endif
392
393 float undergrounNVExposureCoef = m_EyeAcco;
394 if (m_LightingLerp >= 1.0 || GetDayZGame().GetWorld().IsNight())
395 {
396 undergrounNVExposureCoef = 1.0;
397 }
398 //m_NVRequester.SetUndergroundExposureCoef(undergrounNVExposureCoef);
399 UpdateNVGRequester(undergrounNVExposureCoef);
400 }
401
402 protected void UpdateNVGRequester(float value)
403 {
404 m_NVRequester.SetUndergroundExposureCoef(value);
405 }
406
407 protected bool CalculateEyeAcco(float timeSlice)
408 {
409 if (m_TransitionalTrigger || !m_Player.m_UndergroundPresence || (m_EyeAccoTarget == 1))
410 {
411 float accoDiff = m_EyeAccoTarget - m_EyeAcco;
412 float increase = accoDiff * m_AccoInterpolationSpeed * timeSlice;
413 m_EyeAcco += increase;
414 if (Math.AbsFloat(accoDiff) < 0.01)
415 {
417 return true;
418 }
419 }
420 else
421 {
423 }
424 return false;
425 }
426
427
428
429 protected void OnTriggerInsiderUpdate()
430 {
431 EUndergroundTriggerType bestType = EUndergroundTriggerType.UNDEFINED;
433 UndergroundTrigger bestTrigger;
434 m_EyeAccoTarget = 1;
436
437 foreach (auto t:m_InsideTriggers)
438 {
439 if (t.m_Type > bestType)
440 {
441 bestTrigger = t;
442 bestType = t.m_Type;
443 }
444 }
445 //Print(m_InsideTriggers.Count());
446 //Print(bestType);
447 if (bestTrigger)
448 {
449 m_BestTrigger = bestTrigger;
450
451 if (bestTrigger.m_Type == EUndergroundTriggerType.TRANSITIONING)
452 {
453 m_TransitionalTrigger = bestTrigger;
454 }
455 m_EyeAccoTarget = bestTrigger.m_Accommodation;
456 if (bestTrigger.m_InterpolationSpeed != -1 && bestTrigger.m_InterpolationSpeed != 0)
457 m_AccoInterpolationSpeed = bestTrigger.m_InterpolationSpeed;
458 }
459
460 SetUndergroundPresence(bestTrigger);
461 }
462
463
464 protected void SetUndergroundPresence(UndergroundTrigger trigger)
465 {
467 EUndergroundPresence oldPresence = m_Player.m_UndergroundPresence;
468
469 if (trigger)
470 newPresence = trigger.TranslateTriggerTypeToPresence();
471
472 if (newPresence != oldPresence)
473 {
474 OnUndergroundPresenceUpdate(newPresence, oldPresence);
475 m_Player.SetUnderground(newPresence);
476 }
477 }
478
479 protected void EnableLights(bool enable)
480 {
481 foreach (ScriptedLightBase light:ScriptedLightBase.m_NightTimeOnlyLights)
482 {
483 light.SetVisibleDuringDaylight(enable);
484 }
485 }
486
488
490 {
492 return;
493
494 float value01 = m_AnimTimerLightBlend.GetValue();
495 float result = Easing.EaseInQuint(value01);
496 m_LightingLerp = result;
497
498 }
499
501 {
503 return;
504
505 float value01 = m_AnimTimerLightBlend.GetValue();
506 float result = Easing.EaseOutCubic(value01);
507 m_LightingLerp = result;
508 }
509
510 protected void PlayAmbientSound()
511 {
512 if (m_BestTrigger)
513 {
514 if (m_BestTrigger.m_Data.AmbientSoundType != string.Empty)
515 {
516 m_AmbientController = m_BestTrigger.m_Data.AmbientSoundType;
517 SetSoundControllerOverride(m_AmbientController, 1.0, SoundControllerAction.Overwrite);
518 }
519 if (m_BestTrigger.m_Data.AmbientSoundSet != string.Empty)
520 {
521 if (m_AmbientSound && m_BestTrigger.m_Data.AmbientSoundSet != m_AmbientSound.GetSoundSet())
523
524 m_Player.PlaySoundSetLoop(m_AmbientSound, m_BestTrigger.m_Data.AmbientSoundSet, 3, 3);
525 }
526
527 }
528 }
529
530 protected void StopAmbientSound()
531 {
532 if (m_AmbientController != string.Empty)
533 {
534 SetSoundControllerOverride(m_AmbientController, 0, SoundControllerAction.None);
535 m_AmbientController = string.Empty;
536 }
537 else if (m_AmbientSound)
538 m_Player.StopSoundSet(m_AmbientSound);
539 }
540
542 {
543 //Print("-----> On Undeground Presence update " + EnumTools.EnumToString(EUndergroundPresence, newPresence) + " " + EnumTools.EnumToString(EUndergroundPresence, oldPresence));
544 if (newPresence > EUndergroundPresence.NONE)
545 {
546 if (oldPresence == EUndergroundPresence.NONE)
547 {
548 EnableLights(true);
549 if (m_BestTrigger && m_BestTrigger.m_Data)
551 }
552 if (newPresence > EUndergroundPresence.OUTER && oldPresence <= EUndergroundPresence.OUTER)
553 {
554 g_Game.GetWeather().SuppressLightningSimulation(true);
556 }
557 if (newPresence == EUndergroundPresence.FULL)
558 {
560 m_AnimTimerLightBlend.Run(1.0, this, "OnUpdateTimerIn", "OnUpdateTimerEnd", m_LightingLerp, false, LIGHT_BLEND_SPEED_IN);
561 }
562 }
563 if (newPresence < EUndergroundPresence.FULL && oldPresence == EUndergroundPresence.FULL)
564 {
566 m_AnimTimerLightBlend.Run(0.0, this, "OnUpdateTimerOut", "OnUpdateTimerEnd", m_LightingLerp, false, LIGHT_BLEND_SPEED_OUT);
567 }
568 if (newPresence <= EUndergroundPresence.OUTER && oldPresence > EUndergroundPresence.OUTER)
569 {
570 g_Game.GetWeather().SuppressLightningSimulation(false);
571 }
572 if (newPresence == EUndergroundPresence.NONE)
573 {
575
576 if (oldPresence >= EUndergroundPresence.OUTER)
577 {
578 g_Game.GetWorld().SetUserLightingLerp(0);
579 EnableLights(false);
580 }
581 }
582 }
583
584 #ifdef DIAG_DEVELOPER
585 protected void DisplayDebugInfo(float acco, float lighting)
586 {
587 if (acco < 0.0001)
588 acco = 0;
589 DbgUI.Begin(String("Underground Areas"), 20, 20);
590 DbgUI.Text(String("Eye Accomodation: " + acco.ToString()));
591 DbgUI.Text(String("Lighting lerp: " + lighting.ToString()));
592 DbgUI.End();
593 }
594 #endif
595}
override void Tick()
Определения ContaminatedArea_Dynamic.c:106
DayZGame g_Game
Определения DayZGame.c:4074
DayZGame GetDayZGame()
Определения DayZGame.c:4076
PhxInteractionLayers
Определения DayZPhysics.c:2
float hitFraction
Определения DustKickupEffects.c:23
DiagMenuIDs
Определения EDiagMenuIDs.c:2
DayZPlayer m_Player
Определения Hand_Events.c:42
Empty
Определения Hand_States.c:14
void ProcessSound()
Определения HungerSoundHandler.c:28
enum ParticleAutoDestroyFlags FULL
Mode for GetParticle.
void BreadcrumbDoorStateController(TStringArray params)
Определения UndergroundAreaLoader.c:63
bool CalculateEyeAcco(float timeSlice)
Определения UndergroundHandlerClient.c:407
void ApplyEyeAcco()
Определения UndergroundHandlerClient.c:378
void StopAmbientSound()
Определения UndergroundHandlerClient.c:530
void UndergroundHandlerClient(PlayerBase player)
Определения UndergroundHandlerClient.c:37
ref AnimationTimer m_AnimTimerLightBlend
Определения UndergroundHandlerClient.c:19
const float DEFAULT_INTERPOLATION_SPEED
Определения UndergroundHandlerClient.c:17
const float DISTANCE_CUTOFF
Определения UndergroundHandlerClient.c:15
void OnTriggerLeave(UndergroundTrigger trigger)
Определения UndergroundHandlerClient.c:72
string m_AmbientController
Определения UndergroundHandlerClient.c:31
UndergroundTrigger m_TransitionalTrigger
Определения UndergroundHandlerClient.c:35
PPERUndergroundAcco m_Requester
Определения UndergroundHandlerClient.c:22
void UpdateNVGRequester(float value)
Определения UndergroundHandlerClient.c:402
const float ACCO_MODIFIER
Определения UndergroundHandlerClient.c:16
void CalculateEyeAccoTarget()
Определения UndergroundHandlerClient.c:81
ref set< UndergroundTrigger > m_InsideTriggers
Определения UndergroundHandlerClient.c:24
enum EUndergroundPresence LIGHT_BLEND_SPEED_IN
PPERUndergroundAcco GetRequester()
Определения UndergroundHandlerClient.c:56
EffectSound m_AmbientSound
Определения UndergroundHandlerClient.c:32
void CalculateLinePointFade()
Определения UndergroundHandlerClient.c:201
void OnTriggerInsiderUpdate()
Определения UndergroundHandlerClient.c:429
void OnUpdateTimerEnd()
UndergroundTrigger m_BestTrigger
Определения UndergroundHandlerClient.c:34
const float RATIO_CUTOFF
Определения UndergroundHandlerClient.c:14
float m_EyeAcco
Определения UndergroundHandlerClient.c:28
void CalculateBreadCrumbs()
Определения UndergroundHandlerClient.c:96
void ProcessLighting(float timeSlice)
Определения UndergroundHandlerClient.c:329
void EnableLights(bool enable)
Определения UndergroundHandlerClient.c:479
float m_LightingLerpTarget
Определения UndergroundHandlerClient.c:29
const float LIGHT_BLEND_SPEED_OUT
Определения UndergroundHandlerClient.c:12
void ~UndergroundHandlerClient()
Определения UndergroundHandlerClient.c:44
void OnUndergroundPresenceUpdate(EUndergroundPresence newPresence, EUndergroundPresence oldPresence)
Определения UndergroundHandlerClient.c:541
float m_EyeAccoTarget
Определения UndergroundHandlerClient.c:26
PPERequester_CameraNV m_NVRequester
Определения UndergroundHandlerClient.c:23
float m_AccoInterpolationSpeed
Определения UndergroundHandlerClient.c:27
void OnTriggerEnter(UndergroundTrigger trigger)
Определения UndergroundHandlerClient.c:66
void OnUpdateTimerIn()
Определения UndergroundHandlerClient.c:489
void OnUpdateTimerOut()
Определения UndergroundHandlerClient.c:500
void ProcessEyeAcco(float timeSlice)
Определения UndergroundHandlerClient.c:314
float m_LightingLerp
Определения UndergroundHandlerClient.c:30
const string UNDERGROUND_LIGHTING
Определения UndergroundHandlerClient.c:18
EUndergroundPresence
Определения UndergroundHandlerClient.c:2
@ TRANSITIONING
Определения UndergroundHandlerClient.c:5
@ OUTER
Определения UndergroundHandlerClient.c:4
void SetUndergroundPresence(UndergroundTrigger trigger)
Определения UndergroundHandlerClient.c:464
const float MAX_RATIO
Определения UndergroundHandlerClient.c:13
void PlayAmbientSound()
Определения UndergroundHandlerClient.c:510
AnimationTimer class. This timer is for animating float value. usage:
Определения 3_Game/DayZ/tools/tools.c:651
static proto bool RayCastBullet(vector begPos, vector endPos, PhxInteractionLayers layerMask, Object ignoreObj, out Object hitObject, out vector hitPosition, out vector hitNormal, out float hitFraction)
Определения DayZPhysics.c:124
Определения DbgUI.c:60
static Shape DrawSphere(vector pos, float size=1, int color=0x1fff7f7f, ShapeFlags flags=ShapeFlags.TRANSP|ShapeFlags.NOOUTLINE)
Определения 3_Game/DayZ/tools/Debug.c:395
static Shape DrawLine(vector from, vector to, int color=0xFFFFFFFF, int flags=0)
Определения 3_Game/DayZ/tools/Debug.c:474
Определения 3_Game/DayZ/tools/Debug.c:2
Определения EnDebug.c:241
static float EaseInQuint(float t)
Определения Easing.c:78
static float EaseInOutQuint(float t)
Определения Easing.c:89
static float EaseOutCubic(float t)
Определения Easing.c:42
Input value between 0 and 1, returns value adjusted by easing, no automatic clamping of input(do your...
Определения Easing.c:3
Wrapper class for managing sound through SEffectManager.
Определения EffectSound.c:5
Определения EnMath.c:7
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto string ToString(bool simple=true)
static proto native float DistanceSq(vector v1, vector v2)
Returns the square distance between tips of two 3D vectors.
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.
Определения EnConvert.c:119
const int COLOR_RED
Определения 1_Core/DayZ/constants.c:64
const int COLOR_YELLOW
Определения 1_Core/DayZ/constants.c:67
ShapeFlags
Определения EnDebug.c:126
static proto native void End()
static proto native void Begin(string windowTitle, float x=0, float y=0)
static proto native void Text(string label)
static proto bool GetBool(int id, bool reverse=false)
Get value as bool from the given script id.
string String(string s)
Helper for passing string expression to functions with void parameter. Example: Print(String("Hello "...
Определения EnScript.c:339
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 float Remap(float inputMin, float inputMax, float outputMin, float outputMax, float inputValue, bool clampedOutput=true)
Returns given value remaped from input range into output range.
Определения EnMath.c:740
static proto float AbsFloat(float f)
Returns absolute value.
@ NONE
body is not in simulation, nor in collision world
Определения SimulationState.c:15
SetSoundControllerOverride(string controllerName, float value, SoundControllerAction action)
int ARGB(int a, int r, int g, int b)
Определения proto.c:322