|
|
|
@ -658,8 +658,8 @@ namespace MaterialEditor
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// We must also always load the material type data for a complete, ordered set of the
|
|
|
|
// We always need the absolute path for the material type and parent material to load source data and resolving
|
|
|
|
// groups and properties that will be needed for comparison and building the inspector
|
|
|
|
// relative paths when saving. This will convert and store them as absolute paths for use within the document.
|
|
|
|
if (!m_materialSourceData.m_parentMaterial.empty())
|
|
|
|
if (!m_materialSourceData.m_parentMaterial.empty())
|
|
|
|
{
|
|
|
|
{
|
|
|
|
m_materialSourceData.m_parentMaterial =
|
|
|
|
m_materialSourceData.m_parentMaterial =
|
|
|
|
@ -671,6 +671,7 @@ namespace MaterialEditor
|
|
|
|
m_materialSourceData.m_materialType = AssetUtils::ResolvePathReference(m_absolutePath, m_materialSourceData.m_materialType);
|
|
|
|
m_materialSourceData.m_materialType = AssetUtils::ResolvePathReference(m_absolutePath, m_materialSourceData.m_materialType);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Load the material type source data which provides the layout and default values of all of the properties
|
|
|
|
auto materialTypeOutcome = MaterialUtils::LoadMaterialTypeSourceData(m_materialSourceData.m_materialType);
|
|
|
|
auto materialTypeOutcome = MaterialUtils::LoadMaterialTypeSourceData(m_materialSourceData.m_materialType);
|
|
|
|
if (!materialTypeOutcome.IsSuccess())
|
|
|
|
if (!materialTypeOutcome.IsSuccess())
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -687,7 +688,9 @@ namespace MaterialEditor
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (AzFramework::StringFunc::Path::IsExtension(m_absolutePath.c_str(), MaterialTypeSourceData::Extension))
|
|
|
|
else if (AzFramework::StringFunc::Path::IsExtension(m_absolutePath.c_str(), MaterialTypeSourceData::Extension))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// Load the material type source data, which will be used for enumerating properties and building material source data
|
|
|
|
// A material document can be created or loaded from material or material type source data. If we are attempting to load
|
|
|
|
|
|
|
|
// material type source data then the material source data object can be created just by referencing the document path as the
|
|
|
|
|
|
|
|
// material type path.
|
|
|
|
auto materialTypeOutcome = MaterialUtils::LoadMaterialTypeSourceData(m_absolutePath);
|
|
|
|
auto materialTypeOutcome = MaterialUtils::LoadMaterialTypeSourceData(m_absolutePath);
|
|
|
|
if (!materialTypeOutcome.IsSuccess())
|
|
|
|
if (!materialTypeOutcome.IsSuccess())
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -696,8 +699,7 @@ namespace MaterialEditor
|
|
|
|
}
|
|
|
|
}
|
|
|
|
m_materialTypeSourceData = materialTypeOutcome.GetValue();
|
|
|
|
m_materialTypeSourceData = materialTypeOutcome.GetValue();
|
|
|
|
|
|
|
|
|
|
|
|
// The document represents a material, not a material type.
|
|
|
|
// We are storing absolute paths in the loaded version of the source data so that the files can be resolved at all times.
|
|
|
|
// If the input data is a material type file we have to generate the material source data by referencing it.
|
|
|
|
|
|
|
|
m_materialSourceData.m_materialType = m_absolutePath;
|
|
|
|
m_materialSourceData.m_materialType = m_absolutePath;
|
|
|
|
m_materialSourceData.m_parentMaterial.clear();
|
|
|
|
m_materialSourceData.m_parentMaterial.clear();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|