Made StandardMultilayerPBR hide a layer's property groups when that layer is disabled.
ATOM-14688 Disable Individual Layers - Added new SetMaterialPropertyGroupVisibility functions to the material functors. - Updated the MaterialFunctor::EditorContext to include parameters for handling material property group metadata. - Updated the material inspector(s) to apply the property group visiblity changes from the material functor, to hide or show the property groups. - Moved some code from MaterialPropertyDescriptor.h/cpp to a new MaterialDynamicMetadata.h/cpp, since these aren't really related to the MaterialPropertyDescriptor code. It's more for material functors to use. - Also fixed the casing for the "GetMaterialPropertyValue_Image" lua function, since I was already in this code (ATOM-14793 "Fix Inconsistent Casing For LuaMaterialFunctorRuntimeContext") Tested in MaterialEditor and in in the main Editor's MaterialComponent property override inspector.
This commit is contained in:
+18
-7
@@ -288,15 +288,17 @@ namespace AZ
|
||||
void MaterialPropertyInspector::RunEditorMaterialFunctors()
|
||||
{
|
||||
AZStd::unordered_set<AZ::Name> changedPropertyNames;
|
||||
AZStd::unordered_set<AZ::Name> changedPropertyGroupNames;
|
||||
|
||||
// Convert editor property configuration data into material property meta data so that it can be used to execute functors
|
||||
AZStd::unordered_map<AZ::Name, AZ::RPI::MaterialPropertyDynamicMetadata> propertyDynamicMetadata;
|
||||
for (auto& group : m_groups)
|
||||
AZStd::unordered_map<AZ::Name, AZ::RPI::MaterialPropertyGroupDynamicMetadata> propertyGroupDynamicMetadata;
|
||||
for (auto& groupPair : m_groups)
|
||||
{
|
||||
for (auto& property : group.second.m_properties)
|
||||
{
|
||||
AtomToolsFramework::ConvertToPropertyMetaData(propertyDynamicMetadata[property.GetId()], property.GetConfig());
|
||||
}
|
||||
AZ::RPI::MaterialPropertyGroupDynamicMetadata& metadata = propertyGroupDynamicMetadata[AZ::Name{groupPair.first}];
|
||||
|
||||
metadata.m_visibility = IsGroupVisible(groupPair.first) ?
|
||||
AZ::RPI::MaterialPropertyGroupVisibility::Enabled : AZ::RPI::MaterialPropertyGroupVisibility::Hidden;
|
||||
}
|
||||
|
||||
for (AZ::RPI::Ptr<AZ::RPI::MaterialFunctor>& functor : m_editorFunctors)
|
||||
@@ -310,7 +312,9 @@ namespace AZ
|
||||
m_materialInstance->GetPropertyValues(),
|
||||
m_materialInstance->GetMaterialPropertiesLayout(),
|
||||
propertyDynamicMetadata,
|
||||
propertyGroupDynamicMetadata,
|
||||
changedPropertyNames,
|
||||
changedPropertyGroupNames,
|
||||
&materialPropertyDependencies
|
||||
);
|
||||
functor->Process(context);
|
||||
@@ -319,9 +323,16 @@ namespace AZ
|
||||
m_dirtyPropertyFlags.reset();
|
||||
|
||||
// Apply any changes to material property meta data back to the editor property configurations
|
||||
for (auto& group : m_groups)
|
||||
for (auto& groupPair : m_groups)
|
||||
{
|
||||
for (auto& property : group.second.m_properties)
|
||||
AZ::Name groupName{groupPair.first};
|
||||
|
||||
if (changedPropertyGroupNames.find(groupName) != changedPropertyGroupNames.end())
|
||||
{
|
||||
SetGroupVisible(groupPair.first, propertyGroupDynamicMetadata[groupName].m_visibility == AZ::RPI::MaterialPropertyGroupVisibility::Enabled);
|
||||
}
|
||||
|
||||
for (auto& property : groupPair.second.m_properties)
|
||||
{
|
||||
AtomToolsFramework::DynamicPropertyConfig propertyConfig = property.GetConfig();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user