Hello! I was wondering if it’s possible to filter / parse material files in order to find if a specific property is set? Either through a code plugin or similar way. How difficult would it be to write a parser to find all materials with a specific option set? For example, find all materials with a tessellation mode enabled.
You can quite easily do that in c++, here’s a quick mock up of some code that can load a material plus a few MaterialInstance function examples of getting material properties:
UPackage* package=FindPackage(NULL,*path);
if(package) {
UMaterial* mat=FindObject<UMaterial>(package,*name,true);
if(mat) {
mat.MaterialInterface->GetAllTextureParameterInfo(parmInfoList,parmGuidList);
mat.MaterialInterface->GetUsedTextures(texList,EMaterialQualityLevel::Medium,true,ERHIFeatureLevel::ES2,true);
mat.MaterialInterface->GetTexturesInPropertyChain(EMaterialProperty::MP_BaseColor,txLst,&txParmNames,NULL);
}
}
If you look into those methods, you should be able to find all the methods available for working with them.