Procházet zdrojové kódy

Improved job dependency of OpenXRActionSetsAsset
to OpenXRInteractionProfilesAsset by UUID instead
of absolute path.

Signed-off-by: galibzon <[email protected]>

galibzon před 1 rokem
rodič
revize
26ccf98ba5

+ 23 - 23
Gems/OpenXRVk/Code/Source/Builders/OpenXRVkAssetsBuilder.cpp

@@ -144,25 +144,6 @@ namespace OpenXRVkBuilders
     /////////////////////////////////////////////////////////////////////////////////////
 
 
-    static AZStd::string GetInteractionProfileAssetSourcePath(const OpenXRVk::OpenXRActionSetsAsset& actionSetsAsset)
-    {
-        const auto& sourceUuid = actionSetsAsset.m_interactionProfilesAsset.GetId().m_guid;
-        bool foundSource = false;
-        AZ::Data::AssetInfo sourceAssetInfo;
-        AZStd::string sourceWatchFolder;
-        AzToolsFramework::AssetSystemRequestBus::BroadcastResult(foundSource, &AzToolsFramework::AssetSystemRequestBus::Events::GetSourceInfoBySourceUUID,
-            sourceUuid, sourceAssetInfo, sourceWatchFolder);
-        AZStd::string sourcePath;
-        if (foundSource)
-        {
-            constexpr bool caseInsensitive = false;
-            constexpr bool normalize = true;
-            AZ::StringFunc::Path::Join(sourceWatchFolder.c_str(), sourceAssetInfo.m_relativePath.c_str(), sourcePath, caseInsensitive, normalize);
-        }
-        return sourcePath;
-    }
-
-
     void OpenXRAssetsBuilder::CreateActionSetsAssetJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const
     {
         // Make sure the InteractionProfiles asset referenced in this ActionSets asset exists. and if so,
@@ -179,10 +160,9 @@ namespace OpenXRVkBuilders
             return;
         }
 
-        auto interactionProfileSourcePath = GetInteractionProfileAssetSourcePath(*actionSetsAssetPtr.get());
-        if (interactionProfileSourcePath.empty())
+        if (!actionSetsAssetPtr->m_interactionProfilesAsset.GetId().IsValid())
         {
-            AZ_Error(LogName, false, "An ActionSets source asset requires a valid InteractionProfiles source asset.");
+            AZ_Error(LogName, false, "Need a valid InteractionPRofile Asset UUID to setup the job dependency.");
             response.m_result = AssetBuilderSDK::CreateJobsResultCode::Failed;
             return;
         }
@@ -198,7 +178,7 @@ namespace OpenXRVkBuilders
             jobDescriptor.SetPlatformIdentifier(platformInfo.m_identifier.c_str());
 
             AssetBuilderSDK::SourceFileDependency sourceFileDependency{};
-            sourceFileDependency.m_sourceFileDependencyPath = interactionProfileSourcePath;
+            sourceFileDependency.m_sourceFileDependencyUUID = actionSetsAssetPtr->m_interactionProfilesAsset.GetId().m_guid;
             auto jobDependency = AssetBuilderSDK::JobDependency(InteractionProfilesAssetJobKey, platformInfo.m_identifier,
                 AssetBuilderSDK::JobDependencyType::Order, sourceFileDependency);
             jobDescriptor.m_jobDependencyList.emplace_back(AZStd::move(jobDependency));
@@ -234,6 +214,26 @@ namespace OpenXRVkBuilders
     }
 
 
+    static AZStd::string GetInteractionProfileAssetSourcePath(const OpenXRVk::OpenXRActionSetsAsset& actionSetsAsset)
+    {
+        const auto& sourceUuid = actionSetsAsset.m_interactionProfilesAsset.GetId().m_guid;
+        bool foundSource = false;
+        AZ::Data::AssetInfo sourceAssetInfo;
+        AZStd::string sourceWatchFolder;
+        AzToolsFramework::AssetSystemRequestBus::BroadcastResult(foundSource, &AzToolsFramework::AssetSystemRequestBus::Events::GetSourceInfoBySourceUUID,
+            sourceUuid, sourceAssetInfo, sourceWatchFolder);
+        AZStd::string sourcePath;
+        if (foundSource)
+        {
+            constexpr bool caseInsensitive = false;
+            constexpr bool normalize = true;
+            AZ::StringFunc::Path::Join(sourceWatchFolder.c_str(), sourceAssetInfo.m_relativePath.c_str(), sourcePath, caseInsensitive, normalize);
+        }
+
+        return sourcePath;
+    }
+
+
     void OpenXRAssetsBuilder::ProcessActionSetsAssetJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const
     {
         auto actionSetsAssetPtr = LoadAssetAsUniquePtr<OpenXRVk::OpenXRActionSetsAsset>(request.m_fullPath);