parse method
dynamic
parse(])
override
Parses a MTL file.
@param {String} text - Content of MTL file @return {MaterialCreator}
@see setPath setResourcePath
@note In order for relative texture references to resolve correctly you must call setResourcePath() explicitly prior to parse.
Implementation
@override
parse(text, [String? path, Function? onLoad, Function? onError]) {
var lines = text.split('\n');
var info = {};
var delimiterPattern = RegExp(r"\s+");
var materialsInfo = {};
for (var i = 0; i < lines.length; i++) {
var line = lines[i];
line = line.trim();
if (line.length == 0 || line[0] == '#') {
// Blank line or comment ignore
continue;
}
var pos = line.indexOf(' ');
var key = (pos >= 0) ? line.substring(0, pos) : line;
key = key.toLowerCase();
String value = (pos >= 0) ? line.substring(pos + 1) : '';
value = value.trim();
if (key == 'newmtl') {
// New material
info = {"name": value};
materialsInfo[value] = info;
} else {
if (key == 'ka' || key == 'kd' || key == 'ks' || key == 'ke') {
var ss = value.split(delimiterPattern);
info[key] = [parseFloat(ss[0]), parseFloat(ss[1]), parseFloat(ss[2])];
} else {
info[key] = value;
}
}
}
var materialCreator = MaterialCreator(resourcePath != "" ? resourcePath : path, materialOptions);
materialCreator.setCrossOrigin(crossOrigin);
materialCreator.setManager(manager);
materialCreator.setMaterials(materialsInfo);
return materialCreator;
}