|
|
@@ -26,41 +26,8 @@ namespace AtomToolsFramework
|
|
|
|
|
|
void AtomToolsDocumentInspector::SetDocumentId(const AZ::Uuid& documentId)
|
|
|
{
|
|
|
- AddGroupsBegin();
|
|
|
-
|
|
|
m_documentId = documentId;
|
|
|
-
|
|
|
- AtomToolsDocumentRequestBus::Event(
|
|
|
- m_documentId,
|
|
|
- [&](AtomToolsDocumentRequests* documentRequests)
|
|
|
- {
|
|
|
- if (documentRequests->IsOpen())
|
|
|
- {
|
|
|
- // Create a unique settings prefix string per document using a CRC of the document path
|
|
|
- const AZStd::string groupSettingsPrefix = m_documentSettingsPrefix +
|
|
|
- AZStd::string::format("/%08x/GroupSettings", aznumeric_cast<AZ::u32>(AZ::Crc32(documentRequests->GetAbsolutePath())));
|
|
|
- SetGroupSettingsPrefix(groupSettingsPrefix);
|
|
|
-
|
|
|
- // This will automatically expose all document contents to an inspector with a collapsible group per object.
|
|
|
- // In the case of the material editor, this will be one inspector group per property group.
|
|
|
- for (auto& objectInfo : documentRequests->GetObjectInfo())
|
|
|
- {
|
|
|
- // Passing in same main and comparison instance to enable custom value comparison
|
|
|
- const AZ::Crc32 groupSaveStateKey(
|
|
|
- AZStd::string::format("%s/%s", groupSettingsPrefix.c_str(), objectInfo.m_name.c_str()));
|
|
|
- auto propertyGroupWidget = new InspectorPropertyGroupWidget(
|
|
|
- objectInfo.m_objectPtr, objectInfo.m_objectPtr, objectInfo.m_objectType, this, this, groupSaveStateKey, {},
|
|
|
- objectInfo.m_nodeIndicatorFunction, 0);
|
|
|
-
|
|
|
- AddGroup(objectInfo.m_name, objectInfo.m_displayName, objectInfo.m_description, propertyGroupWidget);
|
|
|
- SetGroupVisible(objectInfo.m_name, objectInfo.m_visible);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- InspectorRequestBus::Handler::BusConnect(m_documentId);
|
|
|
- });
|
|
|
-
|
|
|
- AddGroupsEnd();
|
|
|
+ Populate();
|
|
|
}
|
|
|
|
|
|
void AtomToolsDocumentInspector::SetDocumentSettingsPrefix(const AZStd::string& prefix)
|
|
|
@@ -70,9 +37,7 @@ namespace AtomToolsFramework
|
|
|
|
|
|
void AtomToolsDocumentInspector::Reset()
|
|
|
{
|
|
|
- m_documentId = AZ::Uuid::CreateNull();
|
|
|
m_editInProgress = false;
|
|
|
-
|
|
|
InspectorWidget::Reset();
|
|
|
}
|
|
|
|
|
|
@@ -97,7 +62,7 @@ namespace AtomToolsFramework
|
|
|
{
|
|
|
if (m_documentId == documentId)
|
|
|
{
|
|
|
- RebuildAll();
|
|
|
+ Populate();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -136,4 +101,48 @@ namespace AtomToolsFramework
|
|
|
m_editInProgress = false;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ void AtomToolsDocumentInspector::Populate()
|
|
|
+ {
|
|
|
+ AddGroupsBegin();
|
|
|
+
|
|
|
+ AtomToolsDocumentRequestBus::Event(
|
|
|
+ m_documentId,
|
|
|
+ [&](AtomToolsDocumentRequests* documentRequests)
|
|
|
+ {
|
|
|
+ if (documentRequests->IsOpen())
|
|
|
+ {
|
|
|
+ // Create a unique settings prefix string per document using a CRC of the document path
|
|
|
+ const AZStd::string groupSettingsPrefix = m_documentSettingsPrefix +
|
|
|
+ AZStd::string::format("/%08x/GroupSettings", aznumeric_cast<AZ::u32>(AZ::Crc32(documentRequests->GetAbsolutePath())));
|
|
|
+ SetGroupSettingsPrefix(groupSettingsPrefix);
|
|
|
+
|
|
|
+ // This will automatically expose all document contents to an inspector with a collapsible group per object.
|
|
|
+ // In the case of the material editor, this will be one inspector group per property group.
|
|
|
+ for (auto& objectInfo : documentRequests->GetObjectInfo())
|
|
|
+ {
|
|
|
+ // Passing in same main and comparison instance to enable custom value comparison
|
|
|
+ const AZ::Crc32 groupSaveStateKey(
|
|
|
+ AZStd::string::format("%s/%s", groupSettingsPrefix.c_str(), objectInfo.m_name.c_str()));
|
|
|
+ auto propertyGroupWidget = new InspectorPropertyGroupWidget(
|
|
|
+ objectInfo.m_objectPtr,
|
|
|
+ objectInfo.m_objectPtr,
|
|
|
+ objectInfo.m_objectType,
|
|
|
+ this,
|
|
|
+ this,
|
|
|
+ groupSaveStateKey,
|
|
|
+ {},
|
|
|
+ objectInfo.m_nodeIndicatorFunction,
|
|
|
+ 0);
|
|
|
+
|
|
|
+ AddGroup(objectInfo.m_name, objectInfo.m_displayName, objectInfo.m_description, propertyGroupWidget);
|
|
|
+ SetGroupVisible(objectInfo.m_name, objectInfo.m_visible);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ InspectorRequestBus::Handler::BusConnect(m_documentId);
|
|
|
+ });
|
|
|
+
|
|
|
+ AddGroupsEnd();
|
|
|
+ }
|
|
|
} // namespace AtomToolsFramework
|