|
@@ -45,6 +45,10 @@ class MaterialDatabase {
|
|
if( p == null ) return p;
|
|
if( p == null ) return p;
|
|
p = Reflect.field(p, setup.name);
|
|
p = Reflect.field(p, setup.name);
|
|
if( p == null ) return p;
|
|
if( p == null ) return p;
|
|
|
|
+ if ( material.model != null ) {
|
|
|
|
+ var specData = Reflect.field(p, material.name + "/" + material.model.name);
|
|
|
|
+ if ( specData != null ) return specData;
|
|
|
|
+ }
|
|
return Reflect.field(p, material.name);
|
|
return Reflect.field(p, material.name);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -64,10 +68,15 @@ class MaterialDatabase {
|
|
prevs.push(root);
|
|
prevs.push(root);
|
|
root = next;
|
|
root = next;
|
|
}
|
|
}
|
|
- var name = path.pop();
|
|
|
|
- Reflect.deleteField(root, name);
|
|
|
|
|
|
|
|
var currentProps = material.props;
|
|
var currentProps = material.props;
|
|
|
|
+ var modelSpec = (currentProps:Dynamic).__refMode == "modelSpec";
|
|
|
|
+ var name = path.pop();
|
|
|
|
+ if ( !modelSpec )
|
|
|
|
+ Reflect.deleteField(root, name);
|
|
|
|
+ var specName = name + "/" + (material.model != null ? material.model.name : "");
|
|
|
|
+ Reflect.deleteField(root, specName);
|
|
|
|
+
|
|
if ( defaultProps == null ) defaultProps = material.getDefaultProps();
|
|
if ( defaultProps == null ) defaultProps = material.getDefaultProps();
|
|
if( currentProps == null || Std.string(defaultProps) == Std.string(currentProps) ) {
|
|
if( currentProps == null || Std.string(defaultProps) == Std.string(currentProps) ) {
|
|
// cleanup
|
|
// cleanup
|
|
@@ -79,7 +88,7 @@ class MaterialDatabase {
|
|
Reflect.deleteField(root, name);
|
|
Reflect.deleteField(root, name);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- Reflect.setField(root, name, currentProps);
|
|
|
|
|
|
+ Reflect.setField(root, modelSpec ? specName : name, currentProps);
|
|
}
|
|
}
|
|
|
|
|
|
var file = getFilePath(material.model);
|
|
var file = getFilePath(material.model);
|