DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ PPEMatClassParameterFloat()

void PPEMatClassParameterFloatSaturation::PPEMatClassParameterFloat ( int mat_idx,
int parameter_idx,
PPEClassBase parent )
protected

См. определение в файле PPEMatClassParameterFloat.c строка 252

253{
254 protected ref map<int,ref array<float,int>> m_LayerInfo; //<priority,<value,operator>>
255
257 protected float m_ValueDefault;
258 protected float m_ValueMin;
259 protected float m_ValueMax;
260
261 void PPEMatClassParameterFloat(int mat_idx, int parameter_idx, PPEClassBase parent)
262 {
264 }
265
266 override void InitDefaults()
267 {
268 Class.CastTo(m_Float,m_Defaults);
269 //m_Float = PPETemplateDefFloat.Cast(m_Defaults);
270 m_ValueDefault = m_Float.param2;
271 m_ValueMin = m_Float.param3;
272 m_ValueMax = m_Float.param4;
273 }
274
275 override void InitCuttent()
276 {
277 m_CurrentValues = new Param1<float>(m_ValueDefault);
278 }
279
280 override int GetParameterVarType()
281 {
282 return PPEConstants.VAR_TYPE_FLOAT;
283 }
284
285 override void Update(float timeslice, out Param p_total, out bool setting_defaults, int order)
286 {
287 super.Update(timeslice,p_total,setting_defaults,order);
288
289 int active_request_count = 0;
290
292
293 bool setting_value_zero = false;
294
295 float float_value_temp = 0.0;
296 float float_value_default = 0.0;
297 float float_value_total = 0.0;
298
299 if (p_total == null)
300 {
301 p_total = new Param1<float>(0.0);
302 }
303
304 if (m_RequestMap.Count() > 0)
305 {
306 m_LayerInfo.Clear();
307 }
308 else
309 {
310 //DbgPrnt("m_RequestMap.Count() is zero! Using default values. | mat/par: " + m_MaterialIndex + "/" + m_ParameterIndex);
312 m_Parent.ParamUpdateRemove(m_ParameterIndex);
313 return;
314 }
315
316 for ( int i = 0; i < m_RequestMap.Count(); i++ )
317 {
318 req_data = PPERequestParamDataFloat.Cast(m_RequestMap.GetElement(i));
319
320 if (req_data == null)
321 {
322 Error("Debug | PPEMatClassParameterFloat | req_data not found! | " + this + " | mat/par: " + m_MaterialIndex + "/" + m_ParameterIndex);
323 continue;
324 }
325
326 setting_value_zero = req_data.IsSettingDefaultValues();
327
328 if (setting_value_zero && !req_data.GetUpdatingDataValues() && !req_data.IsDataActive())
329 {
330 //DbgPrnt("Is Default, not updating | idx: " + i + " | mat/par/req: " + m_MaterialIndex + "/" + m_ParameterIndex + "/" + req_data.GetRequesterIDX());
331 continue;
332 }
333
334 if (setting_value_zero)
335 {
336 req_data.m_FloatTarget = 0;//min;
337 //DbgPrnt("PPEDebug | PPEMatClassParameterFloat - UpdateParameterValues | !data.m_DefaultTargetSet | mat/par/req: " + m_MaterialIndex + "/" + m_ParameterIndex + "/" + req_data.GetRequesterIDX() + " | req_data.m_FloatTarget: " + req_data.m_FloatTarget);
338 }
339 else
340 {
341 active_request_count++;
342 }
343
344 //evaluation
345 //--------------------------------
346 req_data.m_FloatLast = req_data.m_FloatCurrent;
347
348 if (!req_data.GetUpdatingDataValues() && req_data.IsDataActive()) //set to exact value, not updating anymore
349 {
350 float_value_temp = req_data.m_FloatCurrent;
351 PrepareLayerInfo(req_data.GetPriorityLayer(),float_value_temp,req_data.GetInteractionMask());
352 //DbgPrnt("PPEDebug | PPEMatClassParameterFloat - UpdateParameterValues | !req_data.m_UpdatingData | mat/par/req: " + m_MaterialIndex + "/" + m_ParameterIndex + "/" + req_data.GetRequesterIDX() + " | not updating, addaing current value into mix: " + float_value_temp);
353 continue;
354 }
355
356 float_value_temp = req_data.m_FloatTarget;
357
358 //DbgPrnt("PPEDebug | PPEMatClassParameterFloat - UpdateParameterValues | mat/par/req: " + m_MaterialIndex + "/" + m_ParameterIndex + "/" + req_data.GetRequesterIDX());
359 req_data.SetUpdatingDataValues(false);
360 if (setting_value_zero)
361 {
362 req_data.SetDataActive(false);
363 //RemovePriorityInfo(req_data.GetPriorityLayer()); //redundant?
364 }
365 else
366 {
367 float_value_temp = req_data.m_FloatTarget;
368 PrepareLayerInfo(req_data.GetPriorityLayer(),float_value_temp,req_data.GetInteractionMask());
369 }
370
371 req_data.m_FloatCurrent = float_value_temp;
372 }
373
374 //---------------------------
375 //MASK handling and calculation
376 float value;
377 int operator;
378 bool override_active = false;
379
380 if ( m_ValueMax == 0.0 )
381 float_value_total = m_ValueDefault; //?
382 else
383 float_value_total = m_ValueDefault / m_ValueMax;
384
385 //float_value_total = Math.InverseLerp(m_ValueMin,m_ValueMax,m_ValueDefault);
386 float_value_default = float_value_total;
387
388 for ( i = 0; i < m_LayerInfo.Count(); i++ )
389 {
390 if ( override_active )
391 break;
392
393 value = m_LayerInfo.Get(m_CommandLayersArray.Get(i)).Get(LAYER_INFO_VALUE);
394 operator = m_LayerInfo.Get(m_CommandLayersArray.Get(i)).Get(LAYER_INFO_OPERATOR);
395
396 switch (operator)
397 {
398 case PPOperators.LOWEST:
399 float_value_total = Math.Min(float_value_total,value);
400 break;
401
402 case PPOperators.HIGHEST:
403 float_value_total = Math.Max(float_value_total,value);
404 break;
405
406 case PPOperators.ADD:
407 //float_value_total = float_value_total + value - float_value_default;
408 float_value_total = float_value_total + value;
409 break;
410
411 case PPOperators.ADD_RELATIVE:
412 float_value_total = (1 - float_value_total) * value + float_value_total;
413 break;
414
415 case PPOperators.SUBSTRACT:
416 //float_value_total = float_value_total - value + float_value_default;
417 float_value_total = float_value_total - value;
418 break;
419
420 case PPOperators.SUBSTRACT_RELATIVE:
421 float_value_total = float_value_total - value * float_value_total;
422 break;
423
424 case PPOperators.SUBSTRACT_REVERSE:
425 //float_value_total = value - float_value_default - float_value_total;
426 float_value_total = value - float_value_total;
427 break;
428
429 case PPOperators.SUBSTRACT_REVERSE_RELATIVE:
430 float_value_total = value * float_value_total - float_value_total;
431 break;
432
433 case PPOperators.MULTIPLICATIVE:
434 //float_value_total = Math.Lerp(float_value_default, float_value_total, value);
435 float_value_total = float_value_total * value;
436 break;
437
438 case PPOperators.OVERRIDE:
439 float_value_total = value;
440 break;
441
442 case PPOperators.SET:
443 float_value_total = value;
444 break;
445 }
446
447 //DbgPrnt("m_LayerInfo | float_value_total pre-clamp: " + float_value_total + " | i: " + i);
448 float_value_total = Math.Clamp(float_value_total,0,1);
449
450 if ( operator == PPOperators.OVERRIDE )
451 {
452 //DbgPrnt("m_LayerInfo | PPOperators.OVERRIDE at: " + i);
453 override_active = true;
454 }
455
456 //RemovePriorityInfo(m_CommandLayersArray.Get(i));
457 }
458
459 m_CommandLayersArray.Clear();
460
461 //TODO - consider moving this up, if possible
462 if (active_request_count == 0)
463 {
465 }
466 else
467 {
468 float res = Math.Lerp(m_ValueMin,m_ValueMax,float_value_total);
469 Param1<float>.Cast(p_total).param1 = res; //converts back to absolute values
470 }
471
472 //DbgPrnt("PPEDebug | PPEMatClassParameterFloat - UpdateParameterValues | mat/par/req: " + m_MaterialIndex + "/" + m_ParameterIndex + "/" + req_data.GetRequesterIDX() + " | parameter update end, removing from queue");
473 m_Parent.ParamUpdateRemove(m_ParameterIndex);
474
475 m_CurrentValues = p_total;
476 }
477
478 void PrepareLayerInfo(int layer, float value, int operator)
479 {
480 m_LayerInfo.Set(layer,{value,operator});
481 AddPriorityInfo(layer);
482 }
483
485 override void SetParameterValueDefault(inout Param p_total)
486 {
487 p_total = new Param1<float>(PPETemplateDefFloat.Cast(m_Defaults).param2);
488 m_CurrentValues = p_total;
489 //DbgPrnt("PPEDebug | PPEMatClassParameterFloat - UpdateParameterValues | exit 3 - zero value");
490 }
491}
492
494{
495 void PPEMatClassParameterFloatSaturation(int mat_idx, int parameter_idx, PPEClassBase parent)
496 {
497 m_Dependencies = new map<int,ref array<int>>;
498 m_Dependencies.Set(PostProcessEffectType.Glow,{PPEGlow.PARAM_COLORIZATIONCOLOR, PPEGlow.PARAM_OVERLAYCOLOR});
499 }
500}
map
Определения ControlsXboxNew.c:4
PPOperators
PP operators, specify operation between subsequent layers.
Определения PPEConstants.c:53
Param4< string, float, float, float > PPETemplateDefFloat
Определения PPEConstants.c:87
ref map< int, ref ColorValuesData > m_LayerInfo
Определения PPEMatClassParameterColor.c:44
override void SetParameterValueDefault(inout Param p_total)
No active requests for the mat. parameter value change, sets the value to DEFAULT (zero?...
Определения PPEMatClassParameterFloat.c:476
class PPEMatClassParameterFloat extends PPEMatClassParameterCommandData PPEMatClassParameterFloatSaturation(int mat_idx, int parameter_idx, PPEClassBase parent)
Определения PPEMatClassParameterFloat.c:244
override void InitCuttent()
Определения PPEMatClassParameterFloat.c:266
override int GetParameterVarType()
Определения PPEMatClassParameterFloat.c:271
void PPEMatClassParameterFloat(int mat_idx, int parameter_idx, PPEClassBase parent)
Определения PPEMatClassParameterFloat.c:252
float m_ValueMax
Определения PPEMatClassParameterFloat.c:250
float m_ValueMin
Определения PPEMatClassParameterFloat.c:249
void PrepareLayerInfo(int layer, float value, int operator)
Определения PPEMatClassParameterFloat.c:469
float m_ValueDefault
Определения PPEMatClassParameterFloat.c:248
PPETemplateDefFloat m_Float
Определения PPEMatClassParameterFloat.c:247
override void InitDefaults()
Определения PPEMatClassParameterFloat.c:257
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)
Определения PPERequestData.c:142
Widget m_Parent
Определения SizeToChild.c:92
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения EnMath.c:7
Created once, on manager init. Script-side representation of C++ material class, separate handling.
Определения PPEMatClassesBase.c:3
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
PostProcessEffectType
Post-process effect type.
Определения EnWorld.c:72
void Error(string err)
Messagebox with error message.
Определения EnDebug.c:90
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
static proto float Max(float x, float y)
Returns bigger of two given values.
static proto float Lerp(float a, float b, float time)
Linearly interpolates between 'a' and 'b' given 'time'.
static proto float Min(float x, float y)
Returns smaller of two given values.
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'.
proto native volatile void Update()
Определения PlayerSoundManager.c:125

Используется в PPEMatClassParameterFloatSaturation(), PPEClassBase::RegisterParameterScalarFloat() и PPEClassBase::RegisterParameterScalarFloatEx().