31 return PPEConstants.VAR_TYPE_FLOAT;
34 override void Update(
float timeslice, out
Param p_total, out
bool setting_defaults,
int order)
36 super.Update(timeslice,p_total,setting_defaults,order);
38 int active_request_count = 0;
42 bool setting_value_zero =
false;
44 float float_value_temp = 0.0;
45 float float_value_default = 0.0;
46 float float_value_total = 0.0;
50 p_total =
new Param1<float>(0.0);
75 setting_value_zero = req_data.IsSettingDefaultValues();
77 if (setting_value_zero && !req_data.GetUpdatingDataValues() && !req_data.IsDataActive())
83 if (setting_value_zero)
85 req_data.m_FloatTarget = 0;
90 active_request_count++;
95 req_data.m_FloatLast = req_data.m_FloatCurrent;
97 if (!req_data.GetUpdatingDataValues() && req_data.IsDataActive())
99 float_value_temp = req_data.m_FloatCurrent;
100 PrepareLayerInfo(req_data.GetPriorityLayer(),float_value_temp,req_data.GetInteractionMask());
105 float_value_temp = req_data.m_FloatTarget;
108 req_data.SetUpdatingDataValues(
false);
109 if (setting_value_zero)
111 req_data.SetDataActive(
false);
116 float_value_temp = req_data.m_FloatTarget;
117 PrepareLayerInfo(req_data.GetPriorityLayer(),float_value_temp,req_data.GetInteractionMask());
120 req_data.m_FloatCurrent = float_value_temp;
127 bool override_active =
false;
135 float_value_default = float_value_total;
139 if ( override_active )
148 float_value_total =
Math.
Min(float_value_total,value);
152 float_value_total =
Math.
Max(float_value_total,value);
157 float_value_total = float_value_total + value;
161 float_value_total = (1 - float_value_total) * value + float_value_total;
166 float_value_total = float_value_total - value;
170 float_value_total = float_value_total - value * float_value_total;
175 float_value_total = value - float_value_total;
179 float_value_total = value * float_value_total - float_value_total;
184 float_value_total = float_value_total * value;
188 float_value_total = value;
192 float_value_total = value;
197 float_value_total =
Math.
Clamp(float_value_total,0,1);
202 override_active =
true;
211 if (active_request_count == 0)
218 Param1<float>.Cast(p_total).param1 = res;
PPOperators
PP operators, specify operation between subsequent layers.
Param4< string, float, float, float > PPETemplateDefFloat
class PPEMatClassParameterFloat extends PPEMatClassParameterCommandData PPEMatClassParameterFloatSaturation(int mat_idx, int parameter_idx, PPEClassBase parent)
void PPEMatClassParameterFloat(int mat_idx, int parameter_idx, PPEClassBase parent)
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)
Super root of all classes in Enforce script.
Created once, on manager init. Script-side representation of C++ material class, separate handling.
ref Param m_CurrentValues
void PrepareLayerInfo(int layer, float value, int operator)
void AddPriorityInfo(int priority)
Adds 'layers' to be iterated throug.
const int LAYER_INFO_VALUE
override int GetParameterVarType()
PPETemplateDefFloat m_Float
override void InitDefaults()
const int LAYER_INFO_OPERATOR
override void Update(float timeslice, out Param p_total, out bool setting_defaults, int order)
override void InitCuttent()
void PrepareLayerInfo(int layer, bool value, int operator)
ref ActiveParameterRequestsMap m_RequestMap
ref map< int, ref array< bool, int > > m_LayerInfo
override void SetParameterValueDefault(inout Param p_total)
No active requests for the mat. parameter value change, sets the value to DEFAULT.
void PPEMatClassParameterFloat(int mat_idx, int parameter_idx, PPEClassBase parent)
ref array< int > m_CommandLayersArray
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
PostProcessEffectType
Post-process effect type.
void Error(string err)
Messagebox with error message.
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'.