DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
LightDimming.c
См. документацию.
8
9/* Enable and configure light dimming
10
11 Example setup in ScriptedLightBase constructor:
12
13 DimmingConfig dimCfg = new DimmingConfig();
14 // randomized
15 dimCfg.SetRandomBrigthnessLimits(10, 50);
16 dimCfg.SetRandomDimSpeedLimits(0.1, 1);
17 dimCfg.SetRandomDurationLimits(0.2, 1);
18 dimCfg.SetRandomBrightenSpeedLimits(0.1, 1);
19 dimCfg.SetRandomPauseDurationLimits(1, 2);
20
21 // custom patterns
22 float f = LightDimming.FLICKER_TIME;
23 dimCfg.AddDimmingPattern( {0, 0, 50}, {f, f, 0.1}, {f, f, 2}, {f, f, 0.1}, {0.1, 0.1, 4});
24 dimCfg.AddDimmingPattern( {0, 50, 0}, {f, 0.1, f}, {f, 1, f}, {f, 0.1, f}, {0.1, 0.1, 3});
25 dimCfg.SetPatternQueueRepeat(2);
26
27 EnableDimming(6.5, dimCfg);
28*/
29class LightDimming
30{
31 const float FLICKER_TIME = 0.05; // duration of a flicker -> when this speed is set in phase, DIM / BRIGHTEN phases are skipped, producing a quick flicker
32
33 protected float m_DimBrigthnessBase;
34 protected float m_DimBrigthnessSpeedCoef; // interp speed multiplier
35 protected float m_DimBrigthnessTarget; // brightness value we want to dim to
36 protected float m_DimDelta; // delta used for timing states
37
38 protected int m_CurrentPatternID;
39 protected int m_CurrentEntryID;
40
41 protected bool m_ToBeDestroyed;
46
47 void LightDimming(ScriptedLightBase light, float baseBrightness, DimmingConfig dimCfg)
48 {
49 m_Light = light;
50 m_DimBrigthnessBase = baseBrightness;
51 m_Configs.Insert(dimCfg);
52 m_ActiveCfg = dimCfg;
53 }
54
56 {
57 return m_DimState;
58 }
59
60 // load additional config for dimming to allow switches between multiple configurations
62 {
63 m_Configs.Insert(cfg);
64 }
65
66 protected void SetDimmingVal(float val)
67 {
68 m_Light.SetBrightnessTo(val);
69 }
70
71 protected void AdvanceState(ELightDimmingState lastState)
72 {
73 if (lastState == ELightDimmingState.PAUSED)
74 {
76
77 if (m_ActiveCfg.m_UsePatterns)
78 {
81 return;
82
84
86 if (m_DimDelta == FLICKER_TIME) // flicker, skip dim interp
87 {
89 return;
90 }
91 }
92 else
93 {
95 m_DimDelta = Math.RandomFloat(m_ActiveCfg.m_DimSpeedMin, m_ActiveCfg.m_DimSpeedMax);
96 }
97
99 }
100 else if (lastState == ELightDimmingState.DIMMING)
101 {
102 m_DimState = ELightDimmingState.PAUSED_DIMMED;
103 if (m_ActiveCfg.m_UsePatterns)
105 else
106 m_DimDelta = Math.RandomFloat(m_ActiveCfg.m_DimBrigthnessDurationMin,m_ActiveCfg. m_DimBrigthnessDurationMax);
107
109
110 }
111 else if (lastState == ELightDimmingState.PAUSED_DIMMED)
112 {
113 m_DimState = ELightDimmingState.BRIGHTENING;
114
115 if (m_ActiveCfg.m_UsePatterns)
116 {
117 m_DimDelta = m_ActiveCfg.m_BrightenSpeedPatterns[m_CurrentPatternID][m_CurrentEntryID];
118 if (m_DimDelta == FLICKER_TIME) // flicker, skip brighten interp
119 {
120 AdvanceState(ELightDimmingState.BRIGHTENING);
121 return;
122 }
123 }
124 else
125 m_DimDelta = Math.RandomFloat(m_ActiveCfg.m_BrightenSpeedMin, m_ActiveCfg.m_BrightenSpeedMax);
126
128 }
129 else if (lastState == ELightDimmingState.BRIGHTENING)
130 {
132
133 if (m_ActiveCfg.m_UsePatterns)
134 {
137 }
138 else
139 m_DimDelta = Math.RandomFloat(m_ActiveCfg.m_DimBrigthnessPauseMin, m_ActiveCfg.m_DimBrigthnessPauseMax);
140
142 }
143 }
144
145 protected void SelectPattern()
146 {
147 if (m_CurrentEntryID != m_ActiveCfg.m_BrightnessPatterns[m_CurrentPatternID].Count())
148 return; // pattern in progress
149
152
153 if (m_CurrentPatternID == m_ActiveCfg.m_PatternCount)
154 {
155 if (m_ActiveCfg.m_PatternRepeatCount == -1)
157 else if (m_ActiveCfg.m_PatternRepeatCount == 0)
158 {
159 m_ToBeDestroyed = true;
160 m_Light.StopDimming();
161 }
162 else
163 {
164 m_ActiveCfg.m_PatternRepeatCount--;
166 }
167 }
168 }
169
170 void SwapConfig(int index)
171 {
172 if (!m_Configs.IsValidIndex(index))
173 return;
174
175 m_ActiveCfg = m_Configs[index];
176
180 }
181
182 void HandleDimming(float timeSlice)
183 {
184 if (m_ToBeDestroyed)
185 return;
186
187 m_DimDelta -= timeSlice;
188 if (m_DimDelta < 0)
189 {
191 return;
192 }
193
194 if (m_DimState == ELightDimmingState.DIMMING || m_DimState == ELightDimmingState.BRIGHTENING)
195 {
196 if (m_DimState == ELightDimmingState.DIMMING)
198 else
200 }
201 }
202}
class Land_Buoy extends House m_Light
DimmingConfig m_ActiveCfg
Определения LightDimming.c:44
int m_CurrentPatternID
Определения LightDimming.c:38
ref array< ref DimmingConfig > m_Configs
Определения LightDimming.c:45
int m_CurrentEntryID
Определения LightDimming.c:39
void HandleDimming(float timeSlice)
Определения LightDimming.c:182
float m_DimBrigthnessBase
Определения LightDimming.c:33
bool m_ToBeDestroyed
Определения LightDimming.c:41
void SwapConfig(int index)
Определения LightDimming.c:170
void SelectPattern()
Определения LightDimming.c:145
void SetDimmingVal(float val)
Определения LightDimming.c:66
void LightDimming(ScriptedLightBase light, float baseBrightness, DimmingConfig dimCfg)
Определения LightDimming.c:47
void AdvanceState(ELightDimmingState lastState)
Определения LightDimming.c:71
ELightDimmingState
Определения LightDimming.c:2
@ DIMMING
Определения LightDimming.c:4
@ PAUSED_DIMMED
Определения LightDimming.c:5
@ BRIGHTENING
Определения LightDimming.c:6
float m_DimDelta
Определения LightDimming.c:36
void AddConfig(DimmingConfig cfg)
Определения LightDimming.c:61
enum ELightDimmingState FLICKER_TIME
float m_DimBrigthnessTarget
Определения LightDimming.c:35
ELightDimmingState m_DimState
Определения LightDimming.c:42
float m_DimBrigthnessSpeedCoef
Определения LightDimming.c:34
Определения DimmingConfig.c:2
Определения EnMath.c:7
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
static proto float Lerp(float a, float b, float time)
Linearly interpolates between 'a' and 'b' given 'time'.
static proto float RandomFloat(float min, float max)
Returns a random float number between and min[inclusive] and max[exclusive].
@ PAUSED
The video is paused.
Определения EnWidgets.c:523
proto native int GetState()
returns one of STATE_...
Определения StaminaHandler.c:31