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

◆ Update() [4/4]

override void PPEMatClassParameterCommandData::Update ( float timeslice,
out Param p_total,
out bool setting_defaults,
int order )
inlineprotected

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

30 {
31 super.Update(timeslice,p_total,setting_defaults,order);
32
33 int active_request_count = 0;
34
35 PPERequestParamDataInt req_data;
36
37 bool setting_value_zero = false;
38
39 bool int_value_temp = false;
40 bool int_value_total = m_ValueDefault;
41
42 if (p_total == null)
43 {
44 p_total = new Param1<int>(0);
45 }
46
47 if (m_RequestMap.Count() > 0)
48 {
49 m_LayerInfo.Clear();
50 }
51 else
52 {
53 //DbgPrnt("m_RequestMap.Count() is zero! Using default values. | mat/par: " + m_MaterialIndex + "/" + m_ParameterIndex);
55 m_Parent.ParamUpdateRemove(m_ParameterIndex);
56 return;
57 }
58
59 for ( int i = 0; i < m_RequestMap.Count(); i++ )
60 {
61 req_data = PPERequestParamDataInt.Cast(m_RequestMap.GetElement(i));
62
63 if (req_data == null)
64 {
65 Error("Debug | PPEMatClassParameterInt | req_data not found! | " + this + " | mat/par: " + m_MaterialIndex + "/" + m_ParameterIndex);
66 continue;
67 }
68
69 setting_value_zero = req_data.IsSettingDefaultValues();
70
71 if (setting_value_zero && !req_data.GetUpdatingDataValues() && !req_data.IsDataActive())
72 {
73 //DbgPrnt("Is Default, not updating | idx: " + i + " | mat/par/req: " + m_MaterialIndex + "/" + m_ParameterIndex + "/" + req_data.GetRequesterIDX());
74 continue;
75 }
76
77 if (setting_value_zero)
78 {
79 req_data.m_IntTarget = false;
80 //DbgPrnt("PPEDebug | PPEMatClassParameterInt - UpdateParameterValues | !data.m_DefaultTargetSet | mat/par/req: " + m_MaterialIndex + "/" + m_ParameterIndex + "/" + req_data.GetRequesterIDX() + " | req_data.m_IntTarget: " + req_data.m_IntTarget);
81 }
82 else
83 {
84 active_request_count++;
85 }
86
87 //evaluation
88 //--------------------------------
89 req_data.m_IntLast = req_data.m_IntCurrent;
90
91 if (!req_data.GetUpdatingDataValues() && req_data.IsDataActive()) //set to exact value, not updating anymore
92 {
93 int_value_temp = req_data.m_IntCurrent;
94 PrepareLayerInfo(req_data.GetPriorityLayer(),int_value_temp,req_data.GetInteractionMask());
95 //DbgPrnt("PPEDebug | PPEMatClassParameterInt - UpdateParameterValues | !req_data.m_UpdatingData | mat/par/req: " + m_MaterialIndex + "/" + m_ParameterIndex + "/" + req_data.GetRequesterIDX() + " | not updating, addaing current value into mix: " + int_value_temp);
96 continue;
97 }
98
99 int_value_temp = req_data.m_IntTarget;
100
101 //DbgPrnt("PPEDebug | PPEMatClassParameterInt - UpdateParameterValues | mat/par/req: " + m_MaterialIndex + "/" + m_ParameterIndex + "/" + req_data.GetRequesterIDX());
102 req_data.SetUpdatingDataValues(false);
103 if (setting_value_zero)
104 {
105 req_data.SetDataActive(false);
106 //RemovePriorityInfo(req_data.GetPriorityLayer()); //redundant?
107 }
108 else
109 {
110 int_value_temp = req_data.m_IntTarget;
111 PrepareLayerInfo(req_data.GetPriorityLayer(),int_value_temp,req_data.GetInteractionMask());
112 }
113
114 req_data.m_IntCurrent = int_value_temp;
115 }
116
117 if (active_request_count == 0)
118 {
120 }
121 else
122 {
123 //---------------------------
124 //MASK handling and calculation
125 int value;
126 int operator;
127 bool override_active = false;
128
129 for ( i = 0; i < m_LayerInfo.Count(); i++ )
130 {
131 if ( override_active )
132 break;
133
134 value = m_LayerInfo.Get(m_CommandLayersArray.Get(i)).Get(LAYER_INFO_VALUE);
135 operator = m_LayerInfo.Get(m_CommandLayersArray.Get(i)).Get(LAYER_INFO_OPERATOR);
136
137 switch (operator)
138 {
139 case PPOperators.LOWEST:
140 int_value_total = Math.Min(int_value_total,value);
141 break;
142
143 case PPOperators.HIGHEST:
144 int_value_total = Math.Max(int_value_total,value);
145 break;
146
147 case PPOperators.OVERRIDE:
148 int_value_total = value;
149 break;
150
151 case PPOperators.SET:
152 int_value_total = value;
153 break;
154
155 default:
156 Error("PPEMatClassParameterInt | Invalid operator " + operator + " in mat/par: " + m_MaterialIndex + "/" + m_ParameterIndex);
157 break;
158 }
159
160 if ( operator == PPOperators.OVERRIDE )
161 {
162 //DbgPrnt("m_LayerInfo | PPOperators.OVERRIDE at: " + i);
163 override_active = true;
164 }
165 }
166
167 m_CommandLayersArray.Clear();
168
169 Param1<int>.Cast(p_total).param1 = int_value_total;
170 }
171
172 //DbgPrnt("PPEDebug | PPEMatClassParameterInt - UpdateParameterValues | mat/par/req: " + m_MaterialIndex + "/" + m_ParameterIndex + "/" + req_data.GetRequesterIDX() + " | parameter update end, removing from queue");
173 m_Parent.ParamUpdateRemove(m_ParameterIndex);
174
175 m_CurrentValues = p_total;
176 }
PPOperators
PP operators, specify operation between subsequent layers.
Определения PPEConstants.c:53
void PrepareLayerInfo(int layer, bool value, int operator)
Определения PPEMatClassParameterBool.c:178
ref ActiveParameterRequestsMap m_RequestMap
ref map< int, ref array< bool, int > > m_LayerInfo
Определения PPEMatClassParameterBool.c:3
override void SetParameterValueDefault(inout Param p_total)
No active requests for the mat. parameter value change, sets the value to DEFAULT.
Определения PPEMatClassParameterBool.c:185
ref array< int > m_CommandLayersArray
void Error(string err)
Messagebox with error message.
Определения EnDebug.c:90

Перекрестные ссылки Error(), LAYER_INFO_OPERATOR, LAYER_INFO_VALUE, m_CommandLayersArray, m_CurrentValues, m_LayerInfo, m_MaterialIndex, m_ParameterIndex, m_Parent, m_RequestMap, m_ValueDefault, Math::Max(), Math::Min(), PrepareLayerInfo() и SetParameterValueDefault().