From 69b5c04b7f8c6a73f010a3b7623873a26f3b7a89 Mon Sep 17 00:00:00 2001 From: AMZN-stankowi <4838196+AMZN-stankowi@users.noreply.github.com> Date: Tue, 20 Jul 2021 10:11:09 -0700 Subject: [PATCH] Cleared m_scriptFilename between scene files. (#2278) This fixes a bug where a Python script file would be run on a scene file that didn't have a script file set. Added a general case version to SceneBuilderWorker.cpp, to make it easy to mark all scene files as dirty. Automated tests for this will come in a separate pull request. Signed-off-by: stankowi <4838196+AMZN-stankowi@users.noreply.github.com> --- .../SceneData/Behaviors/ScriptProcessorRuleBehavior.cpp | 5 +++++ .../Code/Source/SceneBuilder/SceneBuilderWorker.cpp | 2 ++ 2 files changed, 7 insertions(+) diff --git a/Code/Tools/SceneAPI/SceneData/Behaviors/ScriptProcessorRuleBehavior.cpp b/Code/Tools/SceneAPI/SceneData/Behaviors/ScriptProcessorRuleBehavior.cpp index 2bec5a10c7..8924f10115 100644 --- a/Code/Tools/SceneAPI/SceneData/Behaviors/ScriptProcessorRuleBehavior.cpp +++ b/Code/Tools/SceneAPI/SceneData/Behaviors/ScriptProcessorRuleBehavior.cpp @@ -305,6 +305,11 @@ namespace AZ::SceneAPI::Behaviors { using namespace AzToolsFramework; + // This behavior persists on the same AssetBuilder. Clear the script file name so that if + // this builder processes a scene file with a script file name, and then later processes + // a scene without a script file name, it won't run the old script on the new scene. + m_scriptFilename.clear(); + if (action != ManifestAction::Update) { return Events::ProcessingResult::Ignored; diff --git a/Gems/SceneProcessing/Code/Source/SceneBuilder/SceneBuilderWorker.cpp b/Gems/SceneProcessing/Code/Source/SceneBuilder/SceneBuilderWorker.cpp index f43f1c7965..18ee0285b8 100644 --- a/Gems/SceneProcessing/Code/Source/SceneBuilder/SceneBuilderWorker.cpp +++ b/Gems/SceneProcessing/Code/Source/SceneBuilder/SceneBuilderWorker.cpp @@ -74,6 +74,8 @@ namespace SceneBuilder { m_cachedFingerprint.append(element); } + // A general catch all version fingerprint. Update this to force all FBX files to recompile. + m_cachedFingerprint.append("Version 1"); } return m_cachedFingerprint.c_str();