2
0
Эх сурвалжийг харах

Allow Version Explorer to pick up only legacy XML files (#8801)

* modifications to SC graph update system to make it only pick up object stream files

* configure scanner modifier to reveal legacy files

Signed-off-by: carlitosan <[email protected]>
carlitosan 3 жил өмнө
parent
commit
394f780dbc

+ 1 - 0
Gems/ScriptCanvas/Assets/RescanDCO.txt

@@ -0,0 +1 @@
+Forced pushed file to re-trigger DCO scan.

+ 1 - 0
Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Controller.cpp

@@ -131,6 +131,7 @@ namespace ScriptCanvasEditor
 
             ScanConfiguration config;
             config.reportFilteredGraphs = !m_view->onlyShowOutdated->isChecked();
+            config.onlyIncludeLegacyXML = m_view->onlyShowXMLFiles->isChecked();
             config.filter = isUpToDate;
 
             SetLoggingPreferences();

+ 1 - 0
Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/ModelTraits.h

@@ -47,6 +47,7 @@ namespace ScriptCanvasEditor
 
             AZStd::function<Filter(const SourceHandle&)> filter;
             bool reportFilteredGraphs = false;
+            bool onlyIncludeLegacyXML = false;
         };
 
         struct ScanResult

+ 18 - 9
Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Scanner.cpp

@@ -79,9 +79,10 @@ namespace ScriptCanvasEditor
             AZ::SystemTickBus::Handler::BusConnect();
         }
 
-        void Scanner::FilterAsset(SourceHandle asset)
+        void Scanner::FilterAsset(SourceHandle asset, bool isFromXMLSource)
         {
-            if (m_config.filter && m_config.filter(asset) == ScanConfiguration::Filter::Exclude)
+            if ((m_config.onlyIncludeLegacyXML && (!isFromXMLSource))
+            || (m_config.filter && m_config.filter(asset) == ScanConfiguration::Filter::Exclude))
             {
                 VE_LOG("Scanner: Excluded: %s ", ModCurrentAsset().RelativePath().c_str());
                 m_result.m_filteredAssets.push_back(ModCurrentAsset().Describe());
@@ -100,15 +101,19 @@ namespace ScriptCanvasEditor
             return m_result;
         }
 
-        SourceHandle Scanner::LoadAsset()
+        AZStd::pair<SourceHandle, bool> Scanner::LoadSource()
         {
-            auto result = ScriptCanvas::LoadFromFile(ModCurrentAsset().AbsolutePath().Native());
+            auto result = LoadFromFile
+                ( ModCurrentAsset().AbsolutePath().c_str()
+                , ScriptCanvas::MakeInternalGraphEntitiesUnique::Yes
+                , ScriptCanvas::LoadReferencedAssets::Yes);
+
             if (!result)
             {
-                return {};
+                return { {}, result.m_deserializeResult.m_fromObjectStreamXML };
             }
 
-            return result.m_handle;
+            return { result.m_handle, result.m_deserializeResult.m_fromObjectStreamXML };
         }
 
         SourceHandle& Scanner::ModCurrentAsset()
@@ -130,12 +135,16 @@ namespace ScriptCanvasEditor
             }
             else
             {
-                if (auto asset = LoadAsset(); asset.IsGraphValid())
+                auto sourceAndIsXML = LoadSource();
+                auto asset = sourceAndIsXML.first;
+                const bool isXML = sourceAndIsXML.second;
+
+                if (asset.IsGraphValid())
                 {
                     VE_LOG("Scanner: Loaded: %s ", ModCurrentAsset().RelativePath().c_str());
-                    FilterAsset(asset);
+                    FilterAsset(asset, isXML);
                 }
-                else
+                else if (!m_config.onlyIncludeLegacyXML || isXML)
                 {
                     VE_LOG("Scanner: Failed to load: %s ", ModCurrentAsset().RelativePath().c_str());
                     m_result.m_loadErrors.push_back(ModCurrentAsset().Describe());

+ 2 - 2
Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/Scanner.h

@@ -33,8 +33,8 @@ namespace ScriptCanvasEditor
             ScanConfiguration m_config;
             ScanResult m_result;
 
-            void FilterAsset(SourceHandle);
-            SourceHandle LoadAsset();
+            void FilterAsset(SourceHandle, bool isFromXMLSource);
+            AZStd::pair<SourceHandle, bool> LoadSource();
             SourceHandle& ModCurrentAsset();
             void OnSystemTick() override;
         };

+ 10 - 0
Gems/ScriptCanvas/Code/Editor/View/Windows/Tools/UpgradeTool/View.ui

@@ -351,6 +351,16 @@
              </property>
             </widget>
            </item>
+            <item row="6" column="1">
+              <widget class="QCheckBox" name="onlyShowXMLFiles">
+                <property name="text">
+                  <string>Only show graphs from legacy XML format</string>
+                </property>
+                <property name="checked">
+                  <bool>false</bool>
+                </property>
+              </widget>
+            </item>
            <item row="5" column="8">
             <widget class="QCheckBox" name="verbose">
              <property name="text">

+ 3 - 0
Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/GraphSerialization.cpp

@@ -134,9 +134,12 @@ namespace ScriptCanvas
             , source
             , result.m_jsonResults
             , &settings);
+
         if (!loadResult.IsSuccess())
         {
             // ...try legacy xml as a failsafe
+            result.m_fromObjectStreamXML = true;
+
             AZ::IO::MemoryStream stream(source.data(), source.length());
             if (!AZ::Utils::LoadObjectFromStreamInPlace
                 ( stream

+ 1 - 0
Gems/ScriptCanvas/Code/Include/ScriptCanvas/Core/GraphSerialization.h

@@ -49,6 +49,7 @@ namespace ScriptCanvas
     struct DeserializeResult
     {
         bool m_isSuccessful = false;
+        bool m_fromObjectStreamXML = false;
         AZStd::string m_jsonResults;
         AZStd::string m_errors;
         DataPtr m_graphDataPtr;