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

◆ SetParameterValueDefault()

override void PPEMatClassParameterFloatSaturation::SetParameterValueDefault ( inout Param p_total)
protected

No active requests for the mat. parameter value change, sets the value to DEFAULT (zero?)

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

477{
478 protected ref map<int,ref array<float,int>> m_LayerInfo; //<priority,<value,operator>>
479
481 protected float m_ValueDefault;
482 protected float m_ValueMin;
483 protected float m_ValueMax;
484
485 void PPEMatClassParameterFloat(int mat_idx, int parameter_idx, PPEClassBase parent)
486 {
488 }
489
490 override void InitDefaults()
491 {
492 Class.CastTo(m_Float,m_Defaults);
493 //m_Float = PPETemplateDefFloat.Cast(m_Defaults);
494 m_ValueDefault = m_Float.param2;
495 m_ValueMin = m_Float.param3;
496 m_ValueMax = m_Float.param4;
497 }
498
499 override void InitCuttent()
500 {
501 m_CurrentValues = new Param1<float>(m_ValueDefault);
502 }
503
504 override int GetParameterVarType()
505 {
506 return PPEConstants.VAR_TYPE_FLOAT;
507 }
508
509 override void Update(float timeslice, out Param p_total, out bool setting_defaults, int order)
510 {
511 super.Update(timeslice,p_total,setting_defaults,order);
512
513 int active_request_count = 0;
514
516
517 bool setting_value_zero = false;
518
519 float float_value_temp = 0.0;
520 float float_value_default = 0.0;
521 float float_value_total = 0.0;
522
523 if (p_total == null)
524 {
525 p_total = new Param1<float>(0.0);
526 }
527
528 if (m_RequestMap.Count() > 0)
529 {
530 m_LayerInfo.Clear();
531 }
532 else
533 {
534 //DbgPrnt("m_RequestMap.Count() is zero! Using default values. | mat/par: " + m_MaterialIndex + "/" + m_ParameterIndex);
536 m_Parent.ParamUpdateRemove(m_ParameterIndex);
537 return;
538 }
539
540 for ( int i = 0; i < m_RequestMap.Count(); i++ )
541 {
542 req_data = PPERequestParamDataFloat.Cast(m_RequestMap.GetElement(i));
543
544 if (req_data == null)
545 {
546 Error("Debug | PPEMatClassParameterFloat | req_data not found! | " + this + " | mat/par: " + m_MaterialIndex + "/" + m_ParameterIndex);
547 continue;
548 }
549
550 setting_value_zero = req_data.IsSettingDefaultValues();
551
552 if (setting_value_zero && !req_data.GetUpdatingDataValues() && !req_data.IsDataActive())
553 {
554 //DbgPrnt("Is Default, not updating | idx: " + i + " | mat/par/req: " + m_MaterialIndex + "/" + m_ParameterIndex + "/" + req_data.GetRequesterIDX());
555 continue;
556 }
557
558 if (setting_value_zero)
559 {
560 req_data.m_FloatTarget = 0;//min;
561 //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);
562 }
563 else
564 {
565 active_request_count++;
566 }
567
568 //evaluation
569 //--------------------------------
570 req_data.m_FloatLast = req_data.m_FloatCurrent;
571
572 if (!req_data.GetUpdatingDataValues() && req_data.IsDataActive()) //set to exact value, not updating anymore
573 {
574 float_value_temp = req_data.m_FloatCurrent;
575 PrepareLayerInfo(req_data.GetPriorityLayer(),float_value_temp,req_data.GetInteractionMask());
576 //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);
577 continue;
578 }
579
580 float_value_temp = req_data.m_FloatTarget;
581
582 //DbgPrnt("PPEDebug | PPEMatClassParameterFloat - UpdateParameterValues | mat/par/req: " + m_MaterialIndex + "/" + m_ParameterIndex + "/" + req_data.GetRequesterIDX());
583 req_data.SetUpdatingDataValues(false);
584 if (setting_value_zero)
585 {
586 req_data.SetDataActive(false);
587 //RemovePriorityInfo(req_data.GetPriorityLayer()); //redundant?
588 }
589 else
590 {
591 float_value_temp = req_data.m_FloatTarget;
592 PrepareLayerInfo(req_data.GetPriorityLayer(),float_value_temp,req_data.GetInteractionMask());
593 }
594
595 req_data.m_FloatCurrent = float_value_temp;
596 }
597
598 //---------------------------
599 //MASK handling and calculation
600 float value;
601 int operator;
602 bool override_active = false;
603
604 if ( m_ValueMax == 0.0 )
605 float_value_total = m_ValueDefault; //?
606 else
607 float_value_total = m_ValueDefault / m_ValueMax;
608
609 //float_value_total = Math.InverseLerp(m_ValueMin,m_ValueMax,m_ValueDefault);
610 float_value_default = float_value_total;
611
612 for ( i = 0; i < m_LayerInfo.Count(); i++ )
613 {
614 if ( override_active )
615 break;
616
617 value = m_LayerInfo.Get(m_CommandLayersArray.Get(i)).Get(LAYER_INFO_VALUE);
618 operator = m_LayerInfo.Get(m_CommandLayersArray.Get(i)).Get(LAYER_INFO_OPERATOR);
619
620 switch (operator)
621 {
622 case PPOperators.LOWEST:
623 float_value_total = Math.Min(float_value_total,value);
624 break;
625
626 case PPOperators.HIGHEST:
627 float_value_total = Math.Max(float_value_total,value);
628 break;
629
630 case PPOperators.ADD:
631 //float_value_total = float_value_total + value - float_value_default;
632 float_value_total = float_value_total + value;
633 break;
634
635 case PPOperators.ADD_RELATIVE:
636 float_value_total = (1 - float_value_total) * value + float_value_total;
637 break;
638
639 case PPOperators.SUBSTRACT:
640 //float_value_total = float_value_total - value + float_value_default;
641 float_value_total = float_value_total - value;
642 break;
643
644 case PPOperators.SUBSTRACT_RELATIVE:
645 float_value_total = float_value_total - value * float_value_total;
646 break;
647
648 case PPOperators.SUBSTRACT_REVERSE:
649 //float_value_total = value - float_value_default - float_value_total;
650 float_value_total = value - float_value_total;
651 break;
652
653 case PPOperators.SUBSTRACT_REVERSE_RELATIVE:
654 float_value_total = value * float_value_total - float_value_total;
655 break;
656
657 case PPOperators.MULTIPLICATIVE:
658 //float_value_total = Math.Lerp(float_value_default, float_value_total, value);
659 float_value_total = float_value_total * value;
660 break;
661
662 case PPOperators.OVERRIDE:
663 float_value_total = value;
664 break;
665
666 case PPOperators.SET:
667 float_value_total = value;
668 break;
669 }
670
671 //DbgPrnt("m_LayerInfo | float_value_total pre-clamp: " + float_value_total + " | i: " + i);
672 float_value_total = Math.Clamp(float_value_total,0,1);
673
674 if ( operator == PPOperators.OVERRIDE )
675 {
676 //DbgPrnt("m_LayerInfo | PPOperators.OVERRIDE at: " + i);
677 override_active = true;
678 }
679
680 //RemovePriorityInfo(m_CommandLayersArray.Get(i));
681 }
682
683 m_CommandLayersArray.Clear();
684
685 //TODO - consider moving this up, if possible
686 if (active_request_count == 0)
687 {
689 }
690 else
691 {
692 float res = Math.Lerp(m_ValueMin,m_ValueMax,float_value_total);
693 Param1<float>.Cast(p_total).param1 = res; //converts back to absolute values
694 }
695
696 //DbgPrnt("PPEDebug | PPEMatClassParameterFloat - UpdateParameterValues | mat/par/req: " + m_MaterialIndex + "/" + m_ParameterIndex + "/" + req_data.GetRequesterIDX() + " | parameter update end, removing from queue");
697 m_Parent.ParamUpdateRemove(m_ParameterIndex);
698
699 m_CurrentValues = p_total;
700 }
701
702 void PrepareLayerInfo(int layer, float value, int operator)
703 {
704 m_LayerInfo.Set(layer,{value,operator});
705 AddPriorityInfo(layer);
706 }
707
709 override void SetParameterValueDefault(inout Param p_total)
710 {
711 p_total = new Param1<float>(PPETemplateDefFloat.Cast(m_Defaults).param2);
712 m_CurrentValues = p_total;
713 //DbgPrnt("PPEDebug | PPEMatClassParameterFloat - UpdateParameterValues | exit 3 - zero value");
714 }
715}
716
718{
719 void PPEMatClassParameterFloatSaturation(int mat_idx, int parameter_idx, PPEClassBase parent)
720 {
721 m_Dependencies = new map<int,ref array<int>>;
722 m_Dependencies.Set(PostProcessEffectType.Glow,{PPEGlow.PARAM_COLORIZATIONCOLOR, PPEGlow.PARAM_OVERLAYCOLOR});
723 }
724}
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