5 protected string m_MaterialPath =
"";
9 protected ref
array<int> m_ParameterRemovalQueue;
16 Init(mat_path_override);
18 CreateDataStructure();
19 RegisterMaterialParameters();
22 protected void Init(
string mat_path_override =
"")
24 if (mat_path_override !=
"")
26 m_MaterialPath = mat_path_override;
30 m_MaterialPath = GetDefaultMaterialPath();
35 protected void CreateMaterial()
37 if (m_MaterialPath !=
"")
38 m_Material =
GetGame().GetWorld().GetMaterial(m_MaterialPath);
47 protected void CreateDataStructure()
57 protected void RegisterMaterialParameters();
59 protected void RegisterParameterScalarBool(
int idx,
string parameter_name,
bool default_value)
62 PPEMatClassParameterBool parameter_data =
new PPEMatClassParameterBool(GetPostProcessEffectID(),idx,
this);
63 parameter_data.RegisterDefaults(p);
64 m_MaterialParamMapStructure.Set(idx, parameter_data);
67 protected void RegisterParameterScalarInt(
int idx,
string parameter_name,
int default_value,
int min,
int max)
71 PPEMatClassParameterInt parameter_data =
new PPEMatClassParameterInt(GetPostProcessEffectID(),idx,
this);
72 parameter_data.RegisterDefaults(p);
73 m_MaterialParamMapStructure.Set(idx, parameter_data);
77 protected void RegisterParameterScalarFloat(
int idx,
string parameter_name,
float default_value,
float min,
float max)
82 parameter_data.RegisterDefaults(p);
83 m_MaterialParamMapStructure.Set(idx, parameter_data);
87 protected void RegisterParameterScalarFloatEx(
int idx,
string parameter_name,
float default_value,
float min,
float max,
typename type)
92 bool boo =
Class.CastTo(parameter_data,type.Spawn());
94 parameter_data.RegisterDefaults(p);
95 parameter_data.SetMaterialIndex(GetPostProcessEffectID());
96 parameter_data.SetParameterIndex(idx);
97 parameter_data.SetParent(
this);
98 m_MaterialParamMapStructure.Set(idx, parameter_data);
102 protected void RegisterParameterColor(
int idx,
string parameter_name,
float r,
float g,
float b,
float a)
106 parameter_data.RegisterDefaults(p);
107 m_MaterialParamMapStructure.Set(idx, parameter_data);
111 protected void RegisterParameterColorEx(
int idx,
string parameter_name,
float r,
float g,
float b,
float a,
typename type)
115 bool boo =
Class.CastTo(parameter_data,type.Spawn());
117 parameter_data.RegisterDefaults(p);
118 parameter_data.SetMaterialIndex(GetPostProcessEffectID());
119 parameter_data.SetParameterIndex(idx);
120 parameter_data.SetParent(
this);
121 m_MaterialParamMapStructure.Set(idx, parameter_data);
124 protected void RegisterParameterVector(
int idx,
string parameter_name,
array<float> default_values)
127 PPEMatClassParameterVector parameter_data =
new PPEMatClassParameterVector(GetPostProcessEffectID(),idx,
this);
128 parameter_data.RegisterDefaults(p);
129 m_MaterialParamMapStructure.Set(idx, parameter_data);
133 protected void RegisterParameterTexture(
int idx,
string parameter_name,
string default_path)
136 PPEMatClassParameterTexture parameter_data =
new PPEMatClassParameterTexture(GetPostProcessEffectID(),idx,
this);
137 parameter_data.RegisterDefaults(p);
138 m_MaterialParamMapStructure.Set(idx, parameter_data);
141 protected void RegisterParameterResource(
int idx,
string parameter_name,
string default_path)
144 PPEMatClassParameterResource parameter_data =
new PPEMatClassParameterResource(GetPostProcessEffectID(),idx,
this);
145 parameter_data.RegisterDefaults(p);
146 m_MaterialParamMapStructure.Set(idx, parameter_data);
154 bool exists = m_MaterialParamMapStructure.Find(request_data.GetParameterID(),param_data);
157 Error(
"PPEClassBase | InsertParamValueData | mat/par/req: " + GetPostProcessEffectID() +
"/" + request_data.GetParameterID() +
"/" + request_data.GetRequesterIDX() +
" not registered in m_MaterialParamMapStructure!");
161 request_data.SetDataActive(
true);
162 request_data.SetUpdatingDataValues(
true);
163 param_data.InsertRequestData(request_data);
170 void RemoveRequest(
int req_idx)
201 void OnUpdate(
float timeslice,
int order)
203 int parameter_idx = -1;
206 if ( m_ParameterUpdateQueueMap.Contains(order) )
209 for (
int i = 0; i < m_ParameterUpdateQueueMap.Get(order).
Count(); i++ )
213 bool setting_defaults =
false;
214 parameter_idx = m_ParameterUpdateQueueMap.Get(order).Get(i);
215 m_MaterialParamMapStructure.Get(parameter_idx).Update(timeslice,p_values,setting_defaults,order);
217 InsertUpdatedParameter(parameter_idx);
219 m_Manager.InsertUpdatedMaterial(GetPostProcessEffectID());
221 ParamUpdateQueueCleanup(order);
228 void SetFinalParameterValue(
int parameter_idx)
230 int var_type = GetParameterCommandData(parameter_idx).GetParameterVarType();
231 Param values = GetParameterCommandData(parameter_idx).GetCurrentValues();
235 case PPEConstants.VAR_TYPE_BOOL:
236 bool value_var_bool = Param1<bool>.Cast(values).param1;
238 m_Material.SetParamByIndex(parameter_idx,value_var_bool);
242 case PPEConstants.VAR_TYPE_INT:
243 int value_var_int = Param1<int>.Cast(values).param1;
245 m_Material.SetParamByIndex(parameter_idx,value_var_int);
249 case PPEConstants.VAR_TYPE_FLOAT:
250 float value_var_float = Param1<float>.Cast(values).param1;
252 m_Material.SetParamByIndex(parameter_idx,value_var_float);
256 case PPEConstants.VAR_TYPE_COLOR:
257 float color[4] = {0,0,0,0};
258 color[0] = Param4<float,float,float,float>.Cast(values).param1;
259 color[1] = Param4<float,float,float,float>.Cast(values).param2;
260 color[2] = Param4<float,float,float,float>.Cast(values).param3;
261 color[3] = Param4<float,float,float,float>.Cast(values).param4;
263 m_Material.SetParamByIndex(parameter_idx,color);
269 void ApplyValueChanges()
272 for (
int i = 0; i < m_UpdatedParameters.Count(); i++)
274 parameter_id = m_UpdatedParameters.Get(i);
275 SetFinalParameterValue(parameter_id);
278 m_UpdatedParameters.Clear();
281 protected void InsertUpdatedParameter(
int mat_id)
283 if ( m_UpdatedParameters.Find(mat_id) == -1 )
284 m_UpdatedParameters.Insert(mat_id);
288 void ParamUpdateRemove(
int parameter_idx)
290 if ( m_ParameterRemovalQueue.Find(parameter_idx) == -1 )
291 m_ParameterRemovalQueue.Insert(parameter_idx);
295 void SetParameterUpdating(
int order,
int parameter_id)
297 if ( !m_ParameterUpdateQueueMap.Contains(order) )
299 m_ParameterUpdateQueueMap.Set(order,
new array<int>);
302 if ( m_ParameterUpdateQueueMap.Get(order).Find(parameter_id) == -1 )
304 m_ParameterUpdateQueueMap.Get(order).Insert(parameter_id);
308 protected void ParamUpdateQueueCleanup(
int order)
312 for (
int i = 0; i < m_ParameterUpdateQueueMap.Get(order).
Count(); i++ )
314 if ( m_ParameterRemovalQueue.Find(m_ParameterUpdateQueueMap.Get(order).Get(i)) != -1 )
320 m_ParameterUpdateQueueMap.Get(order).Clear();
324 string GetDefaultMaterialPath();
326 void ChangeMaterialPathUsed(
string path)
328 m_MaterialPath =
path;
333 string GetCurrentMaterialPath()
335 return m_MaterialPath;
339 int GetPostProcessEffectID()
352 return m_MaterialParamMapStructure.Get(parameter_idx);
380 void DbgPrnt(
string text)