Move update logic into DefineList.
This commit is contained in:
parent
068ab69ed9
commit
3d6656463e
@ -179,21 +179,7 @@ public class Technique /* implements Savable */ {
|
||||
}
|
||||
|
||||
if (techniqueSwitched) {
|
||||
// If the technique was switched, check if the define list changed
|
||||
// based on material parameters.
|
||||
|
||||
ListMap params = owner.getParamsMap();
|
||||
|
||||
if (!defines.equalsParams(params, def)) {
|
||||
// Defines were changed, update define list
|
||||
defines.clear();
|
||||
for(int i=0;i<params.size();i++) {
|
||||
MatParam param = (MatParam)params.getValue(i);
|
||||
String defineName = def.getShaderParamDefine(param.getName());
|
||||
if (defineName != null) {
|
||||
defines.set(defineName, param.getVarType(), param.getValue());
|
||||
}
|
||||
}
|
||||
if (defines.update(owner.getParamsMap(), def)) {
|
||||
needReload = true;
|
||||
}
|
||||
}
|
||||
|
@ -182,7 +182,29 @@ public class DefineList implements Savable, Cloneable {
|
||||
return defines.equals(other.defines);
|
||||
}
|
||||
|
||||
public boolean equalsParams(ListMap params, TechniqueDef def) {
|
||||
/**
|
||||
* Update defines if the define list changed based on material parameters.
|
||||
* @param params
|
||||
* @param def
|
||||
* @return true if defines was updated
|
||||
*/
|
||||
public boolean update(ListMap params, TechniqueDef def){
|
||||
if(equalsParams(params, def)){
|
||||
return false;
|
||||
}
|
||||
// Defines were changed, update define list
|
||||
clear();
|
||||
for(int i=0;i<params.size();i++) {
|
||||
MatParam param = (MatParam)params.getValue(i);
|
||||
String defineName = def.getShaderParamDefine(param.getName());
|
||||
if (defineName != null) {
|
||||
set(defineName, param.getVarType(), param.getValue());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean equalsParams(ListMap params, TechniqueDef def) {
|
||||
|
||||
int size = 0;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user