Merge pull request #172 from kwando/master

Move update logic into DefineList.
This commit is contained in:
shadowislord 2014-09-07 16:26:53 -04:00
commit 57d4dbb1b1
2 changed files with 24 additions and 16 deletions

View File

@ -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;
}
}

View File

@ -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;