Material: Compatibility with older FCMat files
Provides compatibility loading older files outside the context of a library. Older material files were loaded by specifying a path. The new material system used the path to associated the material with a library, which may not be appropriate for legacy files. This change allows the use of materials outside of a library. Additionally, legacy files often have name/value pairs not part of the standard list of properties. Since these were unable to be mapped to a model property they were ignored. Materials now maintain a legacy map to hold properties not associated with a property model. These properties are considered transient and will not be saved. It is not intended for this feature to be used as a generic container for properties not mapped to an appropriate model. Fixes #13302
This commit is contained in:
committed by
Yorik van Havre
parent
0056038ff4
commit
f950a0c086
@@ -196,6 +196,17 @@ std::shared_ptr<Material> MaterialManager::getMaterialByPath(const QString& path
|
||||
}
|
||||
}
|
||||
|
||||
// Older workbenches may try files outside the context of a library
|
||||
{
|
||||
QMutexLocker locker(&_mutex);
|
||||
|
||||
if (MaterialConfigLoader::isConfigStyle(path)) {
|
||||
auto material = MaterialConfigLoader::getMaterialFromPath(nullptr, path);
|
||||
|
||||
return material;
|
||||
}
|
||||
}
|
||||
|
||||
throw MaterialNotFound();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user