Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
pperequestplatformsbase.c
Go to the documentation of this file.
3{
4 protected bool m_IsRunning; //helps determine if the requester has been stopped or not
5 protected bool m_ValuesSent;
6 protected int m_IDX;
7
8 protected bool m_Valid = false;
9
10 protected ref map<int,ref map<int,ref PPERequestParamDataBase>> m_RequestDataStructure; // <material<param_id,data>> // parameter data objects are singletons
11
12 void PPERequesterBase(int requester_IDX)
13 {
14 m_Valid = PPERequesterBank.VerifyRequester(this);
15
16 m_IDX = requester_IDX;
17 m_ValuesSent = true;
18 m_IsRunning = false;
20 }
21
23 void SetRequesterUpdating(bool state)
24 {
25 if (!m_Valid)
26 {
27 Debug.Log("" + this + " not valid!");
28 return;
29 }
30
31 PPEManagerStatic.GetPPEManager().SetRequestUpdating(this,state);
32
33 //TODO - separate into its own function?
34 if (state)
35 PPEManagerStatic.GetPPEManager().SetRequestActive(this,true);
36 }
37
38 void Start(Param par = null)
39 {
40 OnStart(par);
41 m_IsRunning = true;
42 }
43
44 void Stop(Param par = null)
45 {
47 return;
48
49 OnStop(par);
50 m_IsRunning = false;
51 }
52
54 {
55 return m_IsRunning;
56 }
57
59 void SetRequesterIDX(int idx)
60 {
61 m_IDX = idx;
62 }
63
66 {
67 return m_IDX;
68 }
69
72 {
73 return PPERequesterCategory.NONE;
74 }
75
76 //SETTERS//
77 //vvvvvvv//
78 protected void SetTargetValueBool(int mat_id, int param_idx, bool val, int priority_layer, int operator = PPOperators.SET)
79 {
81 return;
82
83 PPERequestParamDataBool data = PPERequestParamDataBool.Cast(GetRequestData(mat_id,param_idx,PPEConstants.VAR_TYPE_BOOL));
84 data.SetPriorityLayer(priority_layer);
85 data.SetInteractionMask(operator);
86
87 data.m_BoolTarget = val;
88 data.m_BoolLast = data.m_BoolCurrent;
89
90 if (data.m_BoolTarget != data.m_BoolCurrent || data.IsSettingDefaultValues())
91 {
92 data.SetSettingDefaultValues(false);
93 data.SetDataActive(true);
94
96 }
97 //DbgPrnt("PPEDebug | PPERequesterBase - SetTargetValueBool | mat/par/req: " + mat_id + "/" + param_idx + "/" + m_IDX + " | data: " + data);
98 }
99
100 protected void SetTargetValueBoolDefault(int mat_id, int param_idx)
101 {
102 //TODO - running check and cleanup rework (elsewhere!)
103 if ( !m_RequestDataStructure || !m_RequestDataStructure.Get(mat_id) || !m_RequestDataStructure.Get(mat_id).Get(param_idx))
104 return;
105
106 PPERequestParamDataBool data = PPERequestParamDataBool.Cast(GetRequestData(mat_id,param_idx,PPEConstants.VAR_TYPE_BOOL));
107 data.m_BoolLast = data.m_BoolCurrent;
108 if (!data.IsSettingDefaultValues())
109 {
110 data.SetSettingDefaultValues(true);
111
113 }
114 //DbgPrnt("PPEDebug | PPERequesterBase - SetTargetValueBoolDefault | mat/par/req: " + mat_id + "/" + param_idx + "/" + m_IDX + " | data: " + data);
115 }
116
117 protected void SetTargetValueInt(int mat_id, int param_idx, bool relative, int val, int priority_layer, int operator = PPOperators.SET)
118 {
120 return;
121
122 PPERequestParamDataInt data = PPERequestParamDataInt.Cast(GetRequestData(mat_id,param_idx,PPEConstants.VAR_TYPE_INT));
123 data.SetPriorityLayer(priority_layer);
124 data.SetInteractionMask(operator);
125
126 data.m_IntTarget = val;
127 data.m_IntLast = data.m_IntCurrent;
128 if (data.m_IntTarget != data.m_IntCurrent || data.IsSettingDefaultValues())
129 {
130 data.SetSettingDefaultValues(false);
131 data.SetDataActive(true);
132
134 }
135 //DbgPrnt("PPEDebug | PPERequesterBase - SetTargetValueInt | mat/par/req: " + mat_id + "/" + param_idx + "/" + m_IDX + " | data: " + data);
136 }
137
138 protected void SetTargetValueIntDefault(int mat_id, int param_idx)
139 {
140 //TODO - running check and cleanup rework (elsewhere!)
141 if ( !m_RequestDataStructure || !m_RequestDataStructure.Get(mat_id) || !m_RequestDataStructure.Get(mat_id).Get(param_idx))
142 return;
143
144 PPERequestParamDataInt data = PPERequestParamDataInt.Cast(GetRequestData(mat_id,param_idx,PPEConstants.VAR_TYPE_INT));
145 data.m_IntLast = data.m_IntCurrent;
146 if (!data.IsSettingDefaultValues())
147 {
148 data.SetSettingDefaultValues(true);
149
151 }
152 //DbgPrnt("PPEDebug | PPERequesterBase - SetTargetValueIntDefault | mat/par/req: " + mat_id + "/" + param_idx + "/" + m_IDX + " | data: " + data);
153 }
154
155 protected void SetTargetValueFloat(int mat_id, int param_idx, bool relative, float val, int priority_layer, int operator = PPOperators.ADD_RELATIVE)
156 {
158 return;
159
160 PPERequestParamDataFloat data = PPERequestParamDataFloat.Cast(GetRequestData(mat_id,param_idx,PPEConstants.VAR_TYPE_FLOAT));
161 data.SetPriorityLayer(priority_layer);
162 data.SetInteractionMask(operator);
163
164 data.m_FloatFormerTarget = data.m_FloatTarget;
165 data.m_FloatTarget = RelativizeValue(val,PPEConstants.VAR_TYPE_FLOAT,mat_id,param_idx,relative);
166 data.m_FloatLast = data.m_FloatCurrent;
167 data.m_FloatStart = data.m_FloatCurrent;
168 if (data.m_FloatTarget != data.m_FloatCurrent || data.IsSettingDefaultValues())
169 {
170 data.SetSettingDefaultValues(false);
171 data.SetDataActive(true);
172
174 }
175 //DbgPrnt("PPEDebug | PPERequesterBase - SetTargetValueFloat | mat/par/req: " + mat_id + "/" + param_idx + "/" + m_IDX + " | data: " + data);
176 }
177
178 protected void SetTargetValueFloatDefault(int mat_id, int param_idx)
179 {
180 //TODO - running check and cleanup rework (elsewhere!)
181 if ( !m_RequestDataStructure || !m_RequestDataStructure.Get(mat_id) || !m_RequestDataStructure.Get(mat_id).Get(param_idx))
182 return;
183
184 PPERequestParamDataFloat data = PPERequestParamDataFloat.Cast(GetRequestData(mat_id,param_idx,PPEConstants.VAR_TYPE_FLOAT));
185 data.m_FloatFormerTarget = data.m_FloatTarget;
186 data.m_FloatLast = data.m_FloatCurrent;
187 data.m_FloatStart = data.m_FloatCurrent;
188 if (!data.IsSettingDefaultValues())
189 {
190 data.SetSettingDefaultValues(true);
191
193 }
194 //DbgPrnt("PPEDebug | PPERequesterBase - SetTargetValueFloatDefault | mat/par/req: " + mat_id + "/" + param_idx + "/" + m_IDX + " | data: " + data);
195 }
196
197 protected void SetTargetValueColor(int mat_id, int param_idx, array<float> val, int priority_layer, int operator = PPOperators.ADD_RELATIVE)
198 {
200 return;
201
202 PPERequestParamDataColor data = PPERequestParamDataColor.Cast(GetRequestData(mat_id,param_idx,PPEConstants.VAR_TYPE_COLOR));
203 data.SetPriorityLayer(priority_layer);
204 data.SetInteractionMask(operator);
205 data.m_ColorFormerTarget = data.m_ColorTarget;
206
207 data.m_ColorTarget.Copy(val);
208
209 data.m_ColorLast = data.m_ColorCurrent;
210 data.m_ColorStart = data.m_ColorCurrent;
211 //if (data.m_ColorTarget != data.m_ColorCurrent)
212 {
213 data.SetSettingDefaultValues(false);
214 data.SetDataActive(true);
215
217 }
218 //DbgPrnt("PPEDebug | PPERequesterBase - SetTargetValueColor | mat/par/req: " + mat_id + "/" + param_idx + "/" + m_IDX + " | data: " + data);
219 }
220
221 protected void SetTargetValueColorDefault(int mat_id, int param_idx)
222 {
223 //TODO - running check and cleanup rework (elsewhere!)
224 if ( !m_RequestDataStructure || !m_RequestDataStructure.Get(mat_id) || !m_RequestDataStructure.Get(mat_id).Get(param_idx))
225 return;
226
227 PPERequestParamDataColor data = PPERequestParamDataColor.Cast(GetRequestData(mat_id,param_idx,PPEConstants.VAR_TYPE_COLOR));
228 data.m_ColorFormerTarget = data.m_ColorTarget;
229 data.m_ColorLast = data.m_ColorCurrent;
230 data.m_ColorStart = data.m_ColorCurrent;
231 if (!data.IsSettingDefaultValues())
232 {
233 data.SetSettingDefaultValues(true);
234
236 }
237 //DbgPrnt("PPEDebug | PPERequesterBase - SetTargetValueColorDefault | mat/par/req: " + mat_id + "/" + param_idx + "/" + m_IDX + " | data: " + data);
238 }
239
240 /*protected void SetTargetValueVector(int mat_id, int param_idx, bool relative, vector val, int priority_layer, int operator = PPOperators.ADD_RELATIVE)
241 {
242 }
243
244 void SetTargetValueTexture(int mat_id, int param_idx, string val, int priority_layer, int mask, bool override_priority = false)
245 {
246 }*/
247
248 /*void SetTargetValueResource(int mat_id, int param_idx, string val, int priority_layer, int mask, bool override_priority = false)
249 {
250 }*/
251
253 protected void QueueValuesSend()
254 {
255 m_ValuesSent = false;
256 //m_IsRunning = true;
258 }
259
261 PPERequestParamDataBase GetRequestData(int mat_id, int param_idx, int type)
262 {
264 if ( m_RequestDataStructure.Get(mat_id) )
265 {
266 if (m_RequestDataStructure.Get(mat_id).Get(param_idx))
267 {
268 data = m_RequestDataStructure.Get(mat_id).Get(param_idx);
269 }
270 else
271 {
272 data = PrepareData(mat_id,param_idx,type);
273 m_RequestDataStructure.Get(mat_id).Set(param_idx,data);
274 }
275 }
276 else
277 {
278 data = PrepareData(mat_id,param_idx,type);
280 temp_map.Set(param_idx,data);
281 m_RequestDataStructure.Set(mat_id, temp_map);
282 }
283
284 if (!data)
285 {
286 Error("GetRequestData | no data found in the structure");
287 }
288
289 data.m_Requester = this;
290
291 return data;
292 }
293
294 protected PPERequestParamDataBase PrepareData(int mat_id, int param_idx, int type)
295 {
297 switch (type)
298 {
299 case PPEConstants.VAR_TYPE_BOOL:
300 data = new PPERequestParamDataBool(m_IDX, mat_id, param_idx);
301 break;
302
303 case PPEConstants.VAR_TYPE_INT:
304 data = new PPERequestParamDataInt(m_IDX, mat_id, param_idx);
305 break;
306
307 case PPEConstants.VAR_TYPE_FLOAT:
308 data = new PPERequestParamDataFloat(m_IDX, mat_id, param_idx);
309 break;
310
311 case PPEConstants.VAR_TYPE_COLOR:
312 data = new PPERequestParamDataColor(m_IDX, mat_id, param_idx);
313 break;
314 }
315 return data;
316 }
317
318 // unused?
323
324 protected void ClearRequesterData()
325 {
327 }
328
330 {
331 PPEManagerStatic.GetPPEManager().SendMaterialValueData(data);
332 }
333
334 //EVENTS//
335 //vvvvvv//
336 void OnUpdate(float delta)
337 {
338 //DbgPrnt("PPEDebug | PPERequesterBase | OnUpdate");
339
340 if ( !m_ValuesSent )
341 {
342 for (int i = 0; i < m_RequestDataStructure.Count(); i++)
343 {
344 for (int j = 0; j < m_RequestDataStructure.GetElement(i).Count(); j++)
345 {
346 SendCurrentValueData(m_RequestDataStructure.GetElement(i).GetElement(j)); //map<int,ref map<int,PPERequestParamDataBase>> //<material<param,data>>
347 }
348 }
349 m_ValuesSent = true;
350 }
352 }
353
354 protected void OnStart(Param par = null)
355 {
357 }
358
360 protected void OnStop(Param par = null)
361 {
362 //DbgPrnt("PPEDebug | " + this + " | OnStop");
365 }
366
368 protected float RelativizeValue(float value, int var_type, int mat_id, int param_id, bool relative)
369 {
370 float ret = value;
371 if (!relative) //if not already relative...
372 {
373 switch (var_type)
374 {
375 case PPEConstants.VAR_TYPE_FLOAT:
376 PPETemplateDefFloat p_float = PPETemplateDefFloat.Cast(PPEManagerStatic.GetPPEManager().GetPostProcessDefaultValues(mat_id,param_id));
377 ret = Math.InverseLerp(p_float.param3, p_float.param4, ret);
378 ret = Math.Clamp(ret,0.0,1.0);
379 break;
380 }
381 }
382 //Print("RelativizeValue: " + ret);
383
384 return ret;
385 }
386
388 protected void SetDefaultValuesAll()
389 {
390 //<material<param_id,data>>
392
393 for (int i = 0; i < m_RequestDataStructure.Count(); i++)
394 {
395 for (int j = 0; j < m_RequestDataStructure.GetElement(i).Count(); j++)
396 {
397 req_data = m_RequestDataStructure.GetElement(i).GetElement(j);
398
399 if (!req_data.IsDataActive())
400 continue;
401
402 switch (req_data.GetVarType())
403 {
404 case PPEConstants.VAR_TYPE_BOOL:
406 break;
407
408 case PPEConstants.VAR_TYPE_INT:
410 break;
411
412 case PPEConstants.VAR_TYPE_FLOAT:
414 break;
415
416 case PPEConstants.VAR_TYPE_COLOR:
418 break;
419 }
420 }
421 }
422 }
423
424 void DbgPrnt(string text)
425 {
426 //Debug.Log(""+text);
427 }
428}
429
431// Base requester platforms //
433
435{
436 override int GetCategoryMask()
438 return PPERequesterCategory.GAMEPLAY_EFFECTS;
440}
444 override int GetCategoryMask()
446 return PPERequesterCategory.MENU_EFFECTS;
447 }
448}
Definition debug.c:2
Definition enmath.c:7
Static component of PPE manager, used to hold the instance.
Definition ppemanager.c:3
Data for one material parameter, requester side.
base, not to be used directly, would lead to layering collisions!
void DbgPrnt(string text)
void SetTargetValueIntDefault(int mat_id, int param_idx)
int GetRequesterIDX()
Returns requester index.
void OnUpdate(float delta)
void SetTargetValueFloatDefault(int mat_id, int param_idx)
void Stop(Param par=null)
ref map< int, ref map< int, ref PPERequestParamDataBase > > m_RequestDataStructure
void SetDefaultValuesAll()
Sets all requested values to default, ignoring them in further calculations.
void QueueValuesSend()
Sets this requester to update in the manager.
void PPERequesterBase(int requester_IDX)
void SetTargetValueColorDefault(int mat_id, int param_idx)
void SetTargetValueFloat(int mat_id, int param_idx, bool relative, float val, int priority_layer, int operator=PPOperators.ADD_RELATIVE)
PPERequestParamDataBase GetRequestData(int mat_id, int param_idx, int type)
returns request data for specific parameter, or creates one if one does not exist in this request yet...
void OnStop(Param par=null)
automatically resets all material parameters of this requester to defaults
void SendCurrentValueData(PPERequestParamDataBase data)
void SetTargetValueBoolDefault(int mat_id, int param_idx)
map< int, ref map< int, ref PPERequestParamDataBase > > GetActiveRequestStructure()
PPERequestParamDataBase PrepareData(int mat_id, int param_idx, int type)
void SetTargetValueInt(int mat_id, int param_idx, bool relative, int val, int priority_layer, int operator=PPOperators.SET)
int GetCategoryMask()
mask for mass-handling methods like 'StopAllEffects'
void SetRequesterUpdating(bool state)
Has to be set for the requester to be handled.
void SetTargetValueBool(int mat_id, int param_idx, bool val, int priority_layer, int operator=PPOperators.SET)
void SetTargetValueColor(int mat_id, int param_idx, array< float > val, int priority_layer, int operator=PPOperators.ADD_RELATIVE)
void SetRequesterIDX(int idx)
automatically assigned by PPERequesterBank
float RelativizeValue(float value, int var_type, int mat_id, int param_id, bool relative)
converts all values used to relative values (if not relative already)
void Start(Param par=null)
void OnStart(Param par=null)
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Definition param.c:12
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
void Error(string err)
Messagebox with error message.
Definition endebug.c:90
void OnStop()
Definition sound.c:211
PPOperators
PP operators, specify operation between subsequent layers.
PPERequesterCategory
Param4< string, float, float, float > PPETemplateDefFloat
void PPERequestParamDataBool(int requester_idx, int mat_id, int param_id, int data_type=0, int priority=0, int mask=PPOperators.SET, bool relative=false)
void PPERequestParamDataFloat(int requester_idx, int mat_id, int param_id, int data_type=0, int priority=0, int mask=PPOperators.SET, bool relative=false)
class PPERequesterBase GetCategoryMask()
mask for mass-handling methods like 'StopAllEffects'