From 6d2fbacda51372fd4c482f28a100be569c6da798 Mon Sep 17 00:00:00 2001 From: scspaldi Date: Mon, 12 Jul 2021 13:43:41 -0700 Subject: [PATCH 01/16] Added Lua Editor window to kill process list. Signed-off-by: scspaldi --- Tools/LyTestTools/ly_test_tools/o3de/asset_processor_utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Tools/LyTestTools/ly_test_tools/o3de/asset_processor_utils.py b/Tools/LyTestTools/ly_test_tools/o3de/asset_processor_utils.py index 2b6ff8292e..d108140977 100644 --- a/Tools/LyTestTools/ly_test_tools/o3de/asset_processor_utils.py +++ b/Tools/LyTestTools/ly_test_tools/o3de/asset_processor_utils.py @@ -45,4 +45,5 @@ def kill_asset_processor(): kill_processes_named('AssetProcessorBatch', ignore_extensions=True) kill_processes_named('AssetBuilder', ignore_extensions=True) kill_processes_named('rc', ignore_extensions=True) + kill_processes_named('Lua Editor', ignore_extensions=True) From afd97abdcfc08b463e248ba4a035fc2d4c3ad470 Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Fri, 9 Jul 2021 08:07:47 -0700 Subject: [PATCH 02/16] Move files to AzFramework/Test and AzToolsFramework/Test accordingly Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- Code/Framework/{ => AzFramework}/Tests/Application.cpp | 0 .../Framework/{ => AzFramework}/Tests/ArchiveCompressionTests.cpp | 0 Code/Framework/{ => AzFramework}/Tests/ArchiveTests.cpp | 0 Code/Framework/{ => AzFramework}/Tests/AssetCatalog.cpp | 0 .../{ => AzFramework}/Tests/AssetProcessorConnection.cpp | 0 Code/Framework/{ => AzFramework}/Tests/BehaviorEntityTests.cpp | 0 Code/Framework/{ => AzFramework}/Tests/BinToTextEncode.cpp | 0 Code/Framework/{ => AzFramework}/Tests/CMakeLists.txt | 0 Code/Framework/{ => AzFramework}/Tests/CameraInputTests.cpp | 0 Code/Framework/{ => AzFramework}/Tests/CameraState.cpp | 0 Code/Framework/{ => AzFramework}/Tests/ClickDetectorTests.cpp | 0 Code/Framework/{ => AzFramework}/Tests/CursorStateTests.cpp | 0 Code/Framework/{ => AzFramework}/Tests/EntityContext.cpp | 0 Code/Framework/{ => AzFramework}/Tests/FileIO.cpp | 0 Code/Framework/{ => AzFramework}/Tests/FileTagTests.cpp | 0 .../{ => AzFramework}/Tests/FrameworkApplicationFixture.h | 0 Code/Framework/{ => AzFramework}/Tests/GenAppDescriptors.cpp | 0 Code/Framework/{ => AzFramework}/Tests/InputTests.cpp | 0 .../Tests/Mocks/MockSpawnableEntitiesInterface.h | 0 Code/Framework/{ => AzFramework}/Tests/NativeWindow.cpp | 0 Code/Framework/{ => AzFramework}/Tests/OctreePerformanceTests.cpp | 0 Code/Framework/{ => AzFramework}/Tests/OctreeTests.cpp | 0 .../Tests/Platform/Android/AzFrameworkTests_Traits_Android.h | 0 .../Tests/Platform/Android/AzFrameworkTests_Traits_Platform.h | 0 .../Tests/Platform/Android/platform_android_files.cmake | 0 .../Tests/Platform/Linux/AzFrameworkTests_Traits_Linux.h | 0 .../Tests/Platform/Linux/AzFrameworkTests_Traits_Platform.h | 0 .../Tests/Platform/Linux/platform_linux_files.cmake | 0 .../Tests/Platform/Mac/AzFrameworkTests_Traits_Mac.h | 0 .../Tests/Platform/Mac/AzFrameworkTests_Traits_Platform.h | 0 .../{ => AzFramework}/Tests/Platform/Mac/platform_mac_files.cmake | 0 .../Tests/Platform/Windows/AzFrameworkTests_Traits_Platform.h | 0 .../Tests/Platform/Windows/AzFrameworkTests_Traits_Windows.h | 0 .../Tests/Platform/Windows/platform_windows_files.cmake | 0 .../Tests/Platform/iOS/AzFrameworkTests_Traits_Platform.h | 0 .../Tests/Platform/iOS/AzFrameworkTests_Traits_iOS.h | 0 .../{ => AzFramework}/Tests/Platform/iOS/platform_ios_files.cmake | 0 Code/Framework/{ => AzFramework}/Tests/PlatformHelper.cpp | 0 Code/Framework/{ => AzFramework}/Tests/ProcessLaunchMain.cpp | 0 .../Framework/{ => AzFramework}/Tests/ProcessLaunchParseTests.cpp | 0 Code/Framework/{ => AzFramework}/Tests/Scene.cpp | 0 .../Tests/Spawnable/SpawnableEntitiesManagerTests.cpp | 0 Code/Framework/{ => AzFramework}/Tests/Utils/Utils.cpp | 0 Code/Framework/{ => AzFramework}/Tests/Utils/Utils.h | 0 .../{ => AzFramework}/Tests/framework_shared_tests_files.cmake | 0 Code/Framework/{ => AzFramework}/Tests/frameworktests_files.cmake | 0 .../{ => AzFramework}/Tests/process_launch_test_files.cmake | 0 .../{ => AzToolsFramework}/Tests/ComponentAdapterTests.cpp | 0 .../Framework/{ => AzToolsFramework}/Tests/ComponentAddRemove.cpp | 0 .../EntityOwnershipService/EntityOwnershipServiceTestFixture.cpp | 0 .../EntityOwnershipService/EntityOwnershipServiceTestFixture.h | 0 .../EntityOwnershipService/SliceEditorEntityOwnershipTests.cpp | 0 .../Tests/EntityOwnershipService/SliceEntityOwnershipTests.cpp | 0 Code/Framework/{ => AzToolsFramework}/Tests/EntityTestbed.h | 0 Code/Framework/{ => AzToolsFramework}/Tests/FileFunc.cpp | 0 .../{ => AzToolsFramework}/Tests/GenericComponentWrapperTest.cpp | 0 .../{ => AzToolsFramework}/Tests/InstanceDataHierarchy.cpp | 0 .../{ => AzToolsFramework}/Tests/SQLiteConnectionTests.cpp | 0 .../{ => AzToolsFramework}/Tests/Script/ScriptComponentTests.cpp | 0 .../{ => AzToolsFramework}/Tests/Script/ScriptEntityTests.cpp | 0 Code/Framework/{ => AzToolsFramework}/Tests/Slices.cpp | 0 .../Framework/{ => AzToolsFramework}/Tests/TransformComponent.cpp | 0 62 files changed, 0 insertions(+), 0 deletions(-) rename Code/Framework/{ => AzFramework}/Tests/Application.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/ArchiveCompressionTests.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/ArchiveTests.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/AssetCatalog.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/AssetProcessorConnection.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/BehaviorEntityTests.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/BinToTextEncode.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/CMakeLists.txt (100%) rename Code/Framework/{ => AzFramework}/Tests/CameraInputTests.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/CameraState.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/ClickDetectorTests.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/CursorStateTests.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/EntityContext.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/FileIO.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/FileTagTests.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/FrameworkApplicationFixture.h (100%) rename Code/Framework/{ => AzFramework}/Tests/GenAppDescriptors.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/InputTests.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/Mocks/MockSpawnableEntitiesInterface.h (100%) rename Code/Framework/{ => AzFramework}/Tests/NativeWindow.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/OctreePerformanceTests.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/OctreeTests.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/Android/AzFrameworkTests_Traits_Android.h (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/Android/AzFrameworkTests_Traits_Platform.h (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/Android/platform_android_files.cmake (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/Linux/AzFrameworkTests_Traits_Linux.h (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/Linux/AzFrameworkTests_Traits_Platform.h (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/Linux/platform_linux_files.cmake (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/Mac/AzFrameworkTests_Traits_Mac.h (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/Mac/AzFrameworkTests_Traits_Platform.h (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/Mac/platform_mac_files.cmake (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/Windows/AzFrameworkTests_Traits_Platform.h (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/Windows/AzFrameworkTests_Traits_Windows.h (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/Windows/platform_windows_files.cmake (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/iOS/AzFrameworkTests_Traits_Platform.h (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/iOS/AzFrameworkTests_Traits_iOS.h (100%) rename Code/Framework/{ => AzFramework}/Tests/Platform/iOS/platform_ios_files.cmake (100%) rename Code/Framework/{ => AzFramework}/Tests/PlatformHelper.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/ProcessLaunchMain.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/ProcessLaunchParseTests.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/Scene.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/Spawnable/SpawnableEntitiesManagerTests.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/Utils/Utils.cpp (100%) rename Code/Framework/{ => AzFramework}/Tests/Utils/Utils.h (100%) rename Code/Framework/{ => AzFramework}/Tests/framework_shared_tests_files.cmake (100%) rename Code/Framework/{ => AzFramework}/Tests/frameworktests_files.cmake (100%) rename Code/Framework/{ => AzFramework}/Tests/process_launch_test_files.cmake (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/ComponentAdapterTests.cpp (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/ComponentAddRemove.cpp (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/EntityOwnershipService/EntityOwnershipServiceTestFixture.cpp (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/EntityOwnershipService/EntityOwnershipServiceTestFixture.h (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/EntityOwnershipService/SliceEditorEntityOwnershipTests.cpp (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/EntityOwnershipService/SliceEntityOwnershipTests.cpp (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/EntityTestbed.h (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/FileFunc.cpp (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/GenericComponentWrapperTest.cpp (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/InstanceDataHierarchy.cpp (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/SQLiteConnectionTests.cpp (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/Script/ScriptComponentTests.cpp (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/Script/ScriptEntityTests.cpp (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/Slices.cpp (100%) rename Code/Framework/{ => AzToolsFramework}/Tests/TransformComponent.cpp (100%) diff --git a/Code/Framework/Tests/Application.cpp b/Code/Framework/AzFramework/Tests/Application.cpp similarity index 100% rename from Code/Framework/Tests/Application.cpp rename to Code/Framework/AzFramework/Tests/Application.cpp diff --git a/Code/Framework/Tests/ArchiveCompressionTests.cpp b/Code/Framework/AzFramework/Tests/ArchiveCompressionTests.cpp similarity index 100% rename from Code/Framework/Tests/ArchiveCompressionTests.cpp rename to Code/Framework/AzFramework/Tests/ArchiveCompressionTests.cpp diff --git a/Code/Framework/Tests/ArchiveTests.cpp b/Code/Framework/AzFramework/Tests/ArchiveTests.cpp similarity index 100% rename from Code/Framework/Tests/ArchiveTests.cpp rename to Code/Framework/AzFramework/Tests/ArchiveTests.cpp diff --git a/Code/Framework/Tests/AssetCatalog.cpp b/Code/Framework/AzFramework/Tests/AssetCatalog.cpp similarity index 100% rename from Code/Framework/Tests/AssetCatalog.cpp rename to Code/Framework/AzFramework/Tests/AssetCatalog.cpp diff --git a/Code/Framework/Tests/AssetProcessorConnection.cpp b/Code/Framework/AzFramework/Tests/AssetProcessorConnection.cpp similarity index 100% rename from Code/Framework/Tests/AssetProcessorConnection.cpp rename to Code/Framework/AzFramework/Tests/AssetProcessorConnection.cpp diff --git a/Code/Framework/Tests/BehaviorEntityTests.cpp b/Code/Framework/AzFramework/Tests/BehaviorEntityTests.cpp similarity index 100% rename from Code/Framework/Tests/BehaviorEntityTests.cpp rename to Code/Framework/AzFramework/Tests/BehaviorEntityTests.cpp diff --git a/Code/Framework/Tests/BinToTextEncode.cpp b/Code/Framework/AzFramework/Tests/BinToTextEncode.cpp similarity index 100% rename from Code/Framework/Tests/BinToTextEncode.cpp rename to Code/Framework/AzFramework/Tests/BinToTextEncode.cpp diff --git a/Code/Framework/Tests/CMakeLists.txt b/Code/Framework/AzFramework/Tests/CMakeLists.txt similarity index 100% rename from Code/Framework/Tests/CMakeLists.txt rename to Code/Framework/AzFramework/Tests/CMakeLists.txt diff --git a/Code/Framework/Tests/CameraInputTests.cpp b/Code/Framework/AzFramework/Tests/CameraInputTests.cpp similarity index 100% rename from Code/Framework/Tests/CameraInputTests.cpp rename to Code/Framework/AzFramework/Tests/CameraInputTests.cpp diff --git a/Code/Framework/Tests/CameraState.cpp b/Code/Framework/AzFramework/Tests/CameraState.cpp similarity index 100% rename from Code/Framework/Tests/CameraState.cpp rename to Code/Framework/AzFramework/Tests/CameraState.cpp diff --git a/Code/Framework/Tests/ClickDetectorTests.cpp b/Code/Framework/AzFramework/Tests/ClickDetectorTests.cpp similarity index 100% rename from Code/Framework/Tests/ClickDetectorTests.cpp rename to Code/Framework/AzFramework/Tests/ClickDetectorTests.cpp diff --git a/Code/Framework/Tests/CursorStateTests.cpp b/Code/Framework/AzFramework/Tests/CursorStateTests.cpp similarity index 100% rename from Code/Framework/Tests/CursorStateTests.cpp rename to Code/Framework/AzFramework/Tests/CursorStateTests.cpp diff --git a/Code/Framework/Tests/EntityContext.cpp b/Code/Framework/AzFramework/Tests/EntityContext.cpp similarity index 100% rename from Code/Framework/Tests/EntityContext.cpp rename to Code/Framework/AzFramework/Tests/EntityContext.cpp diff --git a/Code/Framework/Tests/FileIO.cpp b/Code/Framework/AzFramework/Tests/FileIO.cpp similarity index 100% rename from Code/Framework/Tests/FileIO.cpp rename to Code/Framework/AzFramework/Tests/FileIO.cpp diff --git a/Code/Framework/Tests/FileTagTests.cpp b/Code/Framework/AzFramework/Tests/FileTagTests.cpp similarity index 100% rename from Code/Framework/Tests/FileTagTests.cpp rename to Code/Framework/AzFramework/Tests/FileTagTests.cpp diff --git a/Code/Framework/Tests/FrameworkApplicationFixture.h b/Code/Framework/AzFramework/Tests/FrameworkApplicationFixture.h similarity index 100% rename from Code/Framework/Tests/FrameworkApplicationFixture.h rename to Code/Framework/AzFramework/Tests/FrameworkApplicationFixture.h diff --git a/Code/Framework/Tests/GenAppDescriptors.cpp b/Code/Framework/AzFramework/Tests/GenAppDescriptors.cpp similarity index 100% rename from Code/Framework/Tests/GenAppDescriptors.cpp rename to Code/Framework/AzFramework/Tests/GenAppDescriptors.cpp diff --git a/Code/Framework/Tests/InputTests.cpp b/Code/Framework/AzFramework/Tests/InputTests.cpp similarity index 100% rename from Code/Framework/Tests/InputTests.cpp rename to Code/Framework/AzFramework/Tests/InputTests.cpp diff --git a/Code/Framework/Tests/Mocks/MockSpawnableEntitiesInterface.h b/Code/Framework/AzFramework/Tests/Mocks/MockSpawnableEntitiesInterface.h similarity index 100% rename from Code/Framework/Tests/Mocks/MockSpawnableEntitiesInterface.h rename to Code/Framework/AzFramework/Tests/Mocks/MockSpawnableEntitiesInterface.h diff --git a/Code/Framework/Tests/NativeWindow.cpp b/Code/Framework/AzFramework/Tests/NativeWindow.cpp similarity index 100% rename from Code/Framework/Tests/NativeWindow.cpp rename to Code/Framework/AzFramework/Tests/NativeWindow.cpp diff --git a/Code/Framework/Tests/OctreePerformanceTests.cpp b/Code/Framework/AzFramework/Tests/OctreePerformanceTests.cpp similarity index 100% rename from Code/Framework/Tests/OctreePerformanceTests.cpp rename to Code/Framework/AzFramework/Tests/OctreePerformanceTests.cpp diff --git a/Code/Framework/Tests/OctreeTests.cpp b/Code/Framework/AzFramework/Tests/OctreeTests.cpp similarity index 100% rename from Code/Framework/Tests/OctreeTests.cpp rename to Code/Framework/AzFramework/Tests/OctreeTests.cpp diff --git a/Code/Framework/Tests/Platform/Android/AzFrameworkTests_Traits_Android.h b/Code/Framework/AzFramework/Tests/Platform/Android/AzFrameworkTests_Traits_Android.h similarity index 100% rename from Code/Framework/Tests/Platform/Android/AzFrameworkTests_Traits_Android.h rename to Code/Framework/AzFramework/Tests/Platform/Android/AzFrameworkTests_Traits_Android.h diff --git a/Code/Framework/Tests/Platform/Android/AzFrameworkTests_Traits_Platform.h b/Code/Framework/AzFramework/Tests/Platform/Android/AzFrameworkTests_Traits_Platform.h similarity index 100% rename from Code/Framework/Tests/Platform/Android/AzFrameworkTests_Traits_Platform.h rename to Code/Framework/AzFramework/Tests/Platform/Android/AzFrameworkTests_Traits_Platform.h diff --git a/Code/Framework/Tests/Platform/Android/platform_android_files.cmake b/Code/Framework/AzFramework/Tests/Platform/Android/platform_android_files.cmake similarity index 100% rename from Code/Framework/Tests/Platform/Android/platform_android_files.cmake rename to Code/Framework/AzFramework/Tests/Platform/Android/platform_android_files.cmake diff --git a/Code/Framework/Tests/Platform/Linux/AzFrameworkTests_Traits_Linux.h b/Code/Framework/AzFramework/Tests/Platform/Linux/AzFrameworkTests_Traits_Linux.h similarity index 100% rename from Code/Framework/Tests/Platform/Linux/AzFrameworkTests_Traits_Linux.h rename to Code/Framework/AzFramework/Tests/Platform/Linux/AzFrameworkTests_Traits_Linux.h diff --git a/Code/Framework/Tests/Platform/Linux/AzFrameworkTests_Traits_Platform.h b/Code/Framework/AzFramework/Tests/Platform/Linux/AzFrameworkTests_Traits_Platform.h similarity index 100% rename from Code/Framework/Tests/Platform/Linux/AzFrameworkTests_Traits_Platform.h rename to Code/Framework/AzFramework/Tests/Platform/Linux/AzFrameworkTests_Traits_Platform.h diff --git a/Code/Framework/Tests/Platform/Linux/platform_linux_files.cmake b/Code/Framework/AzFramework/Tests/Platform/Linux/platform_linux_files.cmake similarity index 100% rename from Code/Framework/Tests/Platform/Linux/platform_linux_files.cmake rename to Code/Framework/AzFramework/Tests/Platform/Linux/platform_linux_files.cmake diff --git a/Code/Framework/Tests/Platform/Mac/AzFrameworkTests_Traits_Mac.h b/Code/Framework/AzFramework/Tests/Platform/Mac/AzFrameworkTests_Traits_Mac.h similarity index 100% rename from Code/Framework/Tests/Platform/Mac/AzFrameworkTests_Traits_Mac.h rename to Code/Framework/AzFramework/Tests/Platform/Mac/AzFrameworkTests_Traits_Mac.h diff --git a/Code/Framework/Tests/Platform/Mac/AzFrameworkTests_Traits_Platform.h b/Code/Framework/AzFramework/Tests/Platform/Mac/AzFrameworkTests_Traits_Platform.h similarity index 100% rename from Code/Framework/Tests/Platform/Mac/AzFrameworkTests_Traits_Platform.h rename to Code/Framework/AzFramework/Tests/Platform/Mac/AzFrameworkTests_Traits_Platform.h diff --git a/Code/Framework/Tests/Platform/Mac/platform_mac_files.cmake b/Code/Framework/AzFramework/Tests/Platform/Mac/platform_mac_files.cmake similarity index 100% rename from Code/Framework/Tests/Platform/Mac/platform_mac_files.cmake rename to Code/Framework/AzFramework/Tests/Platform/Mac/platform_mac_files.cmake diff --git a/Code/Framework/Tests/Platform/Windows/AzFrameworkTests_Traits_Platform.h b/Code/Framework/AzFramework/Tests/Platform/Windows/AzFrameworkTests_Traits_Platform.h similarity index 100% rename from Code/Framework/Tests/Platform/Windows/AzFrameworkTests_Traits_Platform.h rename to Code/Framework/AzFramework/Tests/Platform/Windows/AzFrameworkTests_Traits_Platform.h diff --git a/Code/Framework/Tests/Platform/Windows/AzFrameworkTests_Traits_Windows.h b/Code/Framework/AzFramework/Tests/Platform/Windows/AzFrameworkTests_Traits_Windows.h similarity index 100% rename from Code/Framework/Tests/Platform/Windows/AzFrameworkTests_Traits_Windows.h rename to Code/Framework/AzFramework/Tests/Platform/Windows/AzFrameworkTests_Traits_Windows.h diff --git a/Code/Framework/Tests/Platform/Windows/platform_windows_files.cmake b/Code/Framework/AzFramework/Tests/Platform/Windows/platform_windows_files.cmake similarity index 100% rename from Code/Framework/Tests/Platform/Windows/platform_windows_files.cmake rename to Code/Framework/AzFramework/Tests/Platform/Windows/platform_windows_files.cmake diff --git a/Code/Framework/Tests/Platform/iOS/AzFrameworkTests_Traits_Platform.h b/Code/Framework/AzFramework/Tests/Platform/iOS/AzFrameworkTests_Traits_Platform.h similarity index 100% rename from Code/Framework/Tests/Platform/iOS/AzFrameworkTests_Traits_Platform.h rename to Code/Framework/AzFramework/Tests/Platform/iOS/AzFrameworkTests_Traits_Platform.h diff --git a/Code/Framework/Tests/Platform/iOS/AzFrameworkTests_Traits_iOS.h b/Code/Framework/AzFramework/Tests/Platform/iOS/AzFrameworkTests_Traits_iOS.h similarity index 100% rename from Code/Framework/Tests/Platform/iOS/AzFrameworkTests_Traits_iOS.h rename to Code/Framework/AzFramework/Tests/Platform/iOS/AzFrameworkTests_Traits_iOS.h diff --git a/Code/Framework/Tests/Platform/iOS/platform_ios_files.cmake b/Code/Framework/AzFramework/Tests/Platform/iOS/platform_ios_files.cmake similarity index 100% rename from Code/Framework/Tests/Platform/iOS/platform_ios_files.cmake rename to Code/Framework/AzFramework/Tests/Platform/iOS/platform_ios_files.cmake diff --git a/Code/Framework/Tests/PlatformHelper.cpp b/Code/Framework/AzFramework/Tests/PlatformHelper.cpp similarity index 100% rename from Code/Framework/Tests/PlatformHelper.cpp rename to Code/Framework/AzFramework/Tests/PlatformHelper.cpp diff --git a/Code/Framework/Tests/ProcessLaunchMain.cpp b/Code/Framework/AzFramework/Tests/ProcessLaunchMain.cpp similarity index 100% rename from Code/Framework/Tests/ProcessLaunchMain.cpp rename to Code/Framework/AzFramework/Tests/ProcessLaunchMain.cpp diff --git a/Code/Framework/Tests/ProcessLaunchParseTests.cpp b/Code/Framework/AzFramework/Tests/ProcessLaunchParseTests.cpp similarity index 100% rename from Code/Framework/Tests/ProcessLaunchParseTests.cpp rename to Code/Framework/AzFramework/Tests/ProcessLaunchParseTests.cpp diff --git a/Code/Framework/Tests/Scene.cpp b/Code/Framework/AzFramework/Tests/Scene.cpp similarity index 100% rename from Code/Framework/Tests/Scene.cpp rename to Code/Framework/AzFramework/Tests/Scene.cpp diff --git a/Code/Framework/Tests/Spawnable/SpawnableEntitiesManagerTests.cpp b/Code/Framework/AzFramework/Tests/Spawnable/SpawnableEntitiesManagerTests.cpp similarity index 100% rename from Code/Framework/Tests/Spawnable/SpawnableEntitiesManagerTests.cpp rename to Code/Framework/AzFramework/Tests/Spawnable/SpawnableEntitiesManagerTests.cpp diff --git a/Code/Framework/Tests/Utils/Utils.cpp b/Code/Framework/AzFramework/Tests/Utils/Utils.cpp similarity index 100% rename from Code/Framework/Tests/Utils/Utils.cpp rename to Code/Framework/AzFramework/Tests/Utils/Utils.cpp diff --git a/Code/Framework/Tests/Utils/Utils.h b/Code/Framework/AzFramework/Tests/Utils/Utils.h similarity index 100% rename from Code/Framework/Tests/Utils/Utils.h rename to Code/Framework/AzFramework/Tests/Utils/Utils.h diff --git a/Code/Framework/Tests/framework_shared_tests_files.cmake b/Code/Framework/AzFramework/Tests/framework_shared_tests_files.cmake similarity index 100% rename from Code/Framework/Tests/framework_shared_tests_files.cmake rename to Code/Framework/AzFramework/Tests/framework_shared_tests_files.cmake diff --git a/Code/Framework/Tests/frameworktests_files.cmake b/Code/Framework/AzFramework/Tests/frameworktests_files.cmake similarity index 100% rename from Code/Framework/Tests/frameworktests_files.cmake rename to Code/Framework/AzFramework/Tests/frameworktests_files.cmake diff --git a/Code/Framework/Tests/process_launch_test_files.cmake b/Code/Framework/AzFramework/Tests/process_launch_test_files.cmake similarity index 100% rename from Code/Framework/Tests/process_launch_test_files.cmake rename to Code/Framework/AzFramework/Tests/process_launch_test_files.cmake diff --git a/Code/Framework/Tests/ComponentAdapterTests.cpp b/Code/Framework/AzToolsFramework/Tests/ComponentAdapterTests.cpp similarity index 100% rename from Code/Framework/Tests/ComponentAdapterTests.cpp rename to Code/Framework/AzToolsFramework/Tests/ComponentAdapterTests.cpp diff --git a/Code/Framework/Tests/ComponentAddRemove.cpp b/Code/Framework/AzToolsFramework/Tests/ComponentAddRemove.cpp similarity index 100% rename from Code/Framework/Tests/ComponentAddRemove.cpp rename to Code/Framework/AzToolsFramework/Tests/ComponentAddRemove.cpp diff --git a/Code/Framework/Tests/EntityOwnershipService/EntityOwnershipServiceTestFixture.cpp b/Code/Framework/AzToolsFramework/Tests/EntityOwnershipService/EntityOwnershipServiceTestFixture.cpp similarity index 100% rename from Code/Framework/Tests/EntityOwnershipService/EntityOwnershipServiceTestFixture.cpp rename to Code/Framework/AzToolsFramework/Tests/EntityOwnershipService/EntityOwnershipServiceTestFixture.cpp diff --git a/Code/Framework/Tests/EntityOwnershipService/EntityOwnershipServiceTestFixture.h b/Code/Framework/AzToolsFramework/Tests/EntityOwnershipService/EntityOwnershipServiceTestFixture.h similarity index 100% rename from Code/Framework/Tests/EntityOwnershipService/EntityOwnershipServiceTestFixture.h rename to Code/Framework/AzToolsFramework/Tests/EntityOwnershipService/EntityOwnershipServiceTestFixture.h diff --git a/Code/Framework/Tests/EntityOwnershipService/SliceEditorEntityOwnershipTests.cpp b/Code/Framework/AzToolsFramework/Tests/EntityOwnershipService/SliceEditorEntityOwnershipTests.cpp similarity index 100% rename from Code/Framework/Tests/EntityOwnershipService/SliceEditorEntityOwnershipTests.cpp rename to Code/Framework/AzToolsFramework/Tests/EntityOwnershipService/SliceEditorEntityOwnershipTests.cpp diff --git a/Code/Framework/Tests/EntityOwnershipService/SliceEntityOwnershipTests.cpp b/Code/Framework/AzToolsFramework/Tests/EntityOwnershipService/SliceEntityOwnershipTests.cpp similarity index 100% rename from Code/Framework/Tests/EntityOwnershipService/SliceEntityOwnershipTests.cpp rename to Code/Framework/AzToolsFramework/Tests/EntityOwnershipService/SliceEntityOwnershipTests.cpp diff --git a/Code/Framework/Tests/EntityTestbed.h b/Code/Framework/AzToolsFramework/Tests/EntityTestbed.h similarity index 100% rename from Code/Framework/Tests/EntityTestbed.h rename to Code/Framework/AzToolsFramework/Tests/EntityTestbed.h diff --git a/Code/Framework/Tests/FileFunc.cpp b/Code/Framework/AzToolsFramework/Tests/FileFunc.cpp similarity index 100% rename from Code/Framework/Tests/FileFunc.cpp rename to Code/Framework/AzToolsFramework/Tests/FileFunc.cpp diff --git a/Code/Framework/Tests/GenericComponentWrapperTest.cpp b/Code/Framework/AzToolsFramework/Tests/GenericComponentWrapperTest.cpp similarity index 100% rename from Code/Framework/Tests/GenericComponentWrapperTest.cpp rename to Code/Framework/AzToolsFramework/Tests/GenericComponentWrapperTest.cpp diff --git a/Code/Framework/Tests/InstanceDataHierarchy.cpp b/Code/Framework/AzToolsFramework/Tests/InstanceDataHierarchy.cpp similarity index 100% rename from Code/Framework/Tests/InstanceDataHierarchy.cpp rename to Code/Framework/AzToolsFramework/Tests/InstanceDataHierarchy.cpp diff --git a/Code/Framework/Tests/SQLiteConnectionTests.cpp b/Code/Framework/AzToolsFramework/Tests/SQLiteConnectionTests.cpp similarity index 100% rename from Code/Framework/Tests/SQLiteConnectionTests.cpp rename to Code/Framework/AzToolsFramework/Tests/SQLiteConnectionTests.cpp diff --git a/Code/Framework/Tests/Script/ScriptComponentTests.cpp b/Code/Framework/AzToolsFramework/Tests/Script/ScriptComponentTests.cpp similarity index 100% rename from Code/Framework/Tests/Script/ScriptComponentTests.cpp rename to Code/Framework/AzToolsFramework/Tests/Script/ScriptComponentTests.cpp diff --git a/Code/Framework/Tests/Script/ScriptEntityTests.cpp b/Code/Framework/AzToolsFramework/Tests/Script/ScriptEntityTests.cpp similarity index 100% rename from Code/Framework/Tests/Script/ScriptEntityTests.cpp rename to Code/Framework/AzToolsFramework/Tests/Script/ScriptEntityTests.cpp diff --git a/Code/Framework/Tests/Slices.cpp b/Code/Framework/AzToolsFramework/Tests/Slices.cpp similarity index 100% rename from Code/Framework/Tests/Slices.cpp rename to Code/Framework/AzToolsFramework/Tests/Slices.cpp diff --git a/Code/Framework/Tests/TransformComponent.cpp b/Code/Framework/AzToolsFramework/Tests/TransformComponent.cpp similarity index 100% rename from Code/Framework/Tests/TransformComponent.cpp rename to Code/Framework/AzToolsFramework/Tests/TransformComponent.cpp From c13720e255163d4ea994ab41003be17eaddfec1b Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Fri, 9 Jul 2021 08:09:00 -0700 Subject: [PATCH 03/16] fixes and cmake changes to get it to compile Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- Code/Framework/AzFramework/CMakeLists.txt | 60 +++++++++++++++++ .../AzFramework/Tests/CMakeLists.txt | 64 ------------------- .../AzFramework/Tests/GenAppDescriptors.cpp | 8 +-- Code/Framework/AzFramework/Tests/Scene.cpp | 1 - .../Tests/framework_shared_tests_files.cmake | 1 + .../Tests/frameworktests_files.cmake | 18 +----- .../Framework/AzToolsFramework/CMakeLists.txt | 1 + .../AzToolsFramework/Tests/FileFunc.cpp | 4 +- .../AzToolsFramework/Tests/Slices.cpp | 38 +++++------ .../Tests/aztoolsframeworktests_files.cmake | 15 +++++ Code/Framework/CMakeLists.txt | 1 - 11 files changed, 103 insertions(+), 108 deletions(-) delete mode 100644 Code/Framework/AzFramework/Tests/CMakeLists.txt diff --git a/Code/Framework/AzFramework/CMakeLists.txt b/Code/Framework/AzFramework/CMakeLists.txt index 1f53472ff8..2cfc5e4b89 100644 --- a/Code/Framework/AzFramework/CMakeLists.txt +++ b/Code/Framework/AzFramework/CMakeLists.txt @@ -52,3 +52,63 @@ ly_add_source_properties( PROPERTY COMPILE_DEFINITIONS VALUES TOUCHBENDING_LAYER_BIT=${LY_TOUCHBENDING_LAYER_BIT} ) + +if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) + + ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Tests/Platform/${PAL_PLATFORM_NAME}) + + ly_add_target( + NAME AzFrameworkTestShared STATIC + NAMESPACE AZ + FILES_CMAKE + Tests/framework_shared_tests_files.cmake + INCLUDE_DIRECTORIES + PUBLIC + Tests + BUILD_DEPENDENCIES + PRIVATE + AZ::AzCore + AZ::AzFramework + ) + + if(PAL_TRAIT_BUILD_HOST_TOOLS) + + ly_add_target( + NAME ProcessLaunchTest EXECUTABLE + NAMESPACE AZ + FILES_CMAKE + Tests/process_launch_test_files.cmake + INCLUDE_DIRECTORIES + PRIVATE + Tests + BUILD_DEPENDENCIES + PRIVATE + AZ::AzCore + AZ::AzFramework + ) + + ly_add_target( + NAME AzFramework.Tests ${PAL_TRAIT_TEST_TARGET_TYPE} + NAMESPACE AZ + FILES_CMAKE + Tests/frameworktests_files.cmake + INCLUDE_DIRECTORIES + PRIVATE + Tests + ${pal_dir} + BUILD_DEPENDENCIES + PRIVATE + AZ::AzFramework + AZ::AzTest + AZ::AzTestShared + AZ::AzFrameworkTestShared + RUNTIME_DEPENDENCIES + AZ::ProcessLaunchTest + ) + ly_add_googletest( + NAME AZ::AzFramework.Tests + ) + + endif() + +endif() \ No newline at end of file diff --git a/Code/Framework/AzFramework/Tests/CMakeLists.txt b/Code/Framework/AzFramework/Tests/CMakeLists.txt deleted file mode 100644 index 6781466413..0000000000 --- a/Code/Framework/AzFramework/Tests/CMakeLists.txt +++ /dev/null @@ -1,64 +0,0 @@ -# -# Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. -# -# SPDX-License-Identifier: Apache-2.0 OR MIT -# -# - -if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) - - ly_get_list_relative_pal_filename(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME}) - - ly_add_target( - NAME AzFrameworkTestShared STATIC - NAMESPACE AZ - FILES_CMAKE - framework_shared_tests_files.cmake - INCLUDE_DIRECTORIES - PUBLIC - . - BUILD_DEPENDENCIES - PRIVATE - AZ::AzCore - AZ::AzFramework - ) - - if(PAL_TRAIT_BUILD_HOST_TOOLS) - ly_add_target( - NAME ProcessLaunchTest EXECUTABLE - NAMESPACE AZ - FILES_CMAKE - process_launch_test_files.cmake - INCLUDE_DIRECTORIES - PRIVATE - . - BUILD_DEPENDENCIES - PRIVATE - AZ::AzCore - AZ::AzFramework - ) - - ly_add_target( - NAME Framework.Tests ${PAL_TRAIT_TEST_TARGET_TYPE} - NAMESPACE AZ - FILES_CMAKE - frameworktests_files.cmake - INCLUDE_DIRECTORIES - PRIVATE - . - ${pal_dir} - BUILD_DEPENDENCIES - PRIVATE - AZ::AzTest - AZ::AzToolsFramework - AZ::AzTestShared - AZ::AzFrameworkTestShared - RUNTIME_DEPENDENCIES - AZ::ProcessLaunchTest - ) - ly_add_googletest( - NAME AZ::Framework.Tests - ) - endif() - -endif() diff --git a/Code/Framework/AzFramework/Tests/GenAppDescriptors.cpp b/Code/Framework/AzFramework/Tests/GenAppDescriptors.cpp index dde3800895..069d3b35f2 100644 --- a/Code/Framework/AzFramework/Tests/GenAppDescriptors.cpp +++ b/Code/Framework/AzFramework/Tests/GenAppDescriptors.cpp @@ -15,16 +15,16 @@ namespace UnitTest { using namespace AZ; - class SetRestoreFileIOBaseRAII + class FileIOBaseRAII { public: - SetRestoreFileIOBaseRAII(AZ::IO::FileIOBase& fileIO) + FileIOBaseRAII(AZ::IO::FileIOBase& fileIO) : m_prevFileIO(AZ::IO::FileIOBase::GetInstance()) { AZ::IO::FileIOBase::SetInstance(&fileIO); } - ~SetRestoreFileIOBaseRAII() + ~FileIOBaseRAII() { AZ::IO::FileIOBase::SetInstance(m_prevFileIO); } @@ -102,7 +102,7 @@ namespace UnitTest TEST_F(GenAppDescriptors, Test) { AZ::IO::LocalFileIO fileIO; - SetRestoreFileIOBaseRAII restoreFileIOScope(fileIO); + FileIOBaseRAII restoreFileIOScope(fileIO); run(); } } diff --git a/Code/Framework/AzFramework/Tests/Scene.cpp b/Code/Framework/AzFramework/Tests/Scene.cpp index 32a0958692..57293c9d77 100644 --- a/Code/Framework/AzFramework/Tests/Scene.cpp +++ b/Code/Framework/AzFramework/Tests/Scene.cpp @@ -9,7 +9,6 @@ AZ_PUSH_DISABLE_WARNING(, "-Wdelete-non-virtual-dtor") -#include #include #include #include diff --git a/Code/Framework/AzFramework/Tests/framework_shared_tests_files.cmake b/Code/Framework/AzFramework/Tests/framework_shared_tests_files.cmake index 72ffdf0043..5ee7ff644b 100644 --- a/Code/Framework/AzFramework/Tests/framework_shared_tests_files.cmake +++ b/Code/Framework/AzFramework/Tests/framework_shared_tests_files.cmake @@ -9,4 +9,5 @@ set(FILES Mocks/MockSpawnableEntitiesInterface.h Utils/Utils.h Utils/Utils.cpp + FrameworkApplicationFixture.h ) diff --git a/Code/Framework/AzFramework/Tests/frameworktests_files.cmake b/Code/Framework/AzFramework/Tests/frameworktests_files.cmake index 398bb8f45b..25c56f5a71 100644 --- a/Code/Framework/AzFramework/Tests/frameworktests_files.cmake +++ b/Code/Framework/AzFramework/Tests/frameworktests_files.cmake @@ -6,44 +6,28 @@ # set(FILES - ../AzCore/Tests/Main.cpp + ../../AzCore/Tests/Main.cpp Spawnable/SpawnableEntitiesManagerTests.cpp ArchiveCompressionTests.cpp ArchiveTests.cpp BehaviorEntityTests.cpp BinToTextEncode.cpp - ComponentAddRemove.cpp - ComponentAdapterTests.cpp CameraInputTests.cpp ClickDetectorTests.cpp CursorStateTests.cpp EntityContext.cpp - EntityTestbed.h - FileFunc.cpp FileIO.cpp FileTagTests.cpp - FrameworkApplicationFixture.h GenAppDescriptors.cpp - GenericComponentWrapperTest.cpp - InstanceDataHierarchy.cpp OctreePerformanceTests.cpp OctreeTests.cpp - Slices.cpp - Script/ScriptComponentTests.cpp - Script/ScriptEntityTests.cpp AssetCatalog.cpp AssetProcessorConnection.cpp NativeWindow.cpp - TransformComponent.cpp - SQLiteConnectionTests.cpp ProcessLaunchParseTests.cpp Application.cpp PlatformHelper.cpp Scene.cpp - EntityOwnershipService/EntityOwnershipServiceTestFixture.h - EntityOwnershipService/EntityOwnershipServiceTestFixture.cpp - EntityOwnershipService/SliceEditorEntityOwnershipTests.cpp - EntityOwnershipService/SliceEntityOwnershipTests.cpp CameraState.cpp InputTests.cpp ) diff --git a/Code/Framework/AzToolsFramework/CMakeLists.txt b/Code/Framework/AzToolsFramework/CMakeLists.txt index b2a9690948..9a54ee5226 100644 --- a/Code/Framework/AzToolsFramework/CMakeLists.txt +++ b/Code/Framework/AzToolsFramework/CMakeLists.txt @@ -76,6 +76,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) PRIVATE AZ::AzTestShared 3rdParty::Qt::Test + AZ::AzFrameworkTestShared AZ::AzToolsFramework AZ::AzToolsFrameworkTestCommon AZ::AzManipulatorTestFramework.Static diff --git a/Code/Framework/AzToolsFramework/Tests/FileFunc.cpp b/Code/Framework/AzToolsFramework/Tests/FileFunc.cpp index 4edb91164c..420caa0f55 100644 --- a/Code/Framework/AzToolsFramework/Tests/FileFunc.cpp +++ b/Code/Framework/AzToolsFramework/Tests/FileFunc.cpp @@ -5,8 +5,8 @@ * */ -#include "FrameworkApplicationFixture.h" -#include "Utils/Utils.h" +#include +#include #include #include #include diff --git a/Code/Framework/AzToolsFramework/Tests/Slices.cpp b/Code/Framework/AzToolsFramework/Tests/Slices.cpp index ba413eb727..a8c98d2a85 100644 --- a/Code/Framework/AzToolsFramework/Tests/Slices.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Slices.cpp @@ -972,11 +972,11 @@ namespace UnitTest }; - class TestExportEditorComponent + class SliceTestExportEditorComponent : public AzToolsFramework::Components::EditorComponentBase { public: - AZ_COMPONENT(TestExportEditorComponent, "{8FA877A2-38E6-49AD-B31E-71B86DC8BB03}", AzToolsFramework::Components::EditorComponentBase); + AZ_COMPONENT(SliceTestExportEditorComponent, "{8FA877A2-38E6-49AD-B31E-71B86DC8BB03}", AzToolsFramework::Components::EditorComponentBase); enum ExportComponentType { @@ -986,9 +986,9 @@ namespace UnitTest EXPORT_NULL_COMPONENT }; - TestExportEditorComponent() {} + SliceTestExportEditorComponent() {} - TestExportEditorComponent(ExportComponentType exportType, bool exportHandled) : + SliceTestExportEditorComponent(ExportComponentType exportType, bool exportHandled) : m_exportType(exportType), m_exportHandled(exportHandled) {} @@ -1000,15 +1000,15 @@ namespace UnitTest { if (AZ::SerializeContext* serializeContext = azrtti_cast(context)) { - serializeContext->Class() + serializeContext->Class() ; if (AZ::EditContext* editContext = serializeContext->GetEditContext()) { - editContext->Class( + editContext->Class( "Test Export Editor Component", "Validate different options for exporting editor components") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") - ->Attribute(AZ::Edit::Attributes::RuntimeExportCallback, &TestExportEditorComponent::ExportComponent) + ->Attribute(AZ::Edit::Attributes::RuntimeExportCallback, &SliceTestExportEditorComponent::ExportComponent) ; } } @@ -1070,7 +1070,7 @@ namespace UnitTest m_app.RegisterComponentDescriptor(TestExportRuntimeComponent::CreateDescriptor()); m_app.RegisterComponentDescriptor(TestExportOtherRuntimeComponent::CreateDescriptor()); - m_app.RegisterComponentDescriptor(TestExportEditorComponent::CreateDescriptor()); + m_app.RegisterComponentDescriptor(SliceTestExportEditorComponent::CreateDescriptor()); m_editorSliceAsset = Data::AssetManager::Instance().CreateAsset(Data::AssetId(Uuid::CreateRandom())); @@ -1125,11 +1125,11 @@ namespace UnitTest } // create entity containing the EditorOnly component in the editor slice - void CreateTestExportEditorEntity(const char* name, TestExportEditorComponent::ExportComponentType exportType, bool exportHandled) + void CreateTestExportEditorEntity(const char* name, SliceTestExportEditorComponent::ExportComponentType exportType, bool exportHandled) { AZ::Entity* entity = aznew AZ::Entity(name); entity->CreateComponent(); - entity->CreateComponent(exportType, exportHandled); + entity->CreateComponent(exportType, exportHandled); m_editorSliceComponent->AddEntity(entity); } @@ -1314,7 +1314,7 @@ namespace UnitTest TEST_F(SliceCompilerTest, RuntimeExportCallback_EditorComponentExportedSuccessfully) { // Create an editor component that has a RuntimeExportCallback and successfully exports itself - CreateTestExportEditorEntity("EntityWithEditorComponent", TestExportEditorComponent::ExportComponentType::EXPORT_OTHER_RUNTIME_COMPONENT, true); + CreateTestExportEditorEntity("EntityWithEditorComponent", SliceTestExportEditorComponent::ExportComponentType::EXPORT_OTHER_RUNTIME_COMPONENT, true); if (!CompileSlice()) { @@ -1325,7 +1325,7 @@ namespace UnitTest // (A result of Runtime component means BuildGameEntity() ran instead) AZ::Entity* entity = GetCompiledEntity("EntityWithEditorComponent"); EXPECT_TRUE(entity); - EXPECT_FALSE(entity->FindComponent()); + EXPECT_FALSE(entity->FindComponent()); EXPECT_FALSE(entity->FindComponent()); EXPECT_TRUE(entity->FindComponent()); } @@ -1333,7 +1333,7 @@ namespace UnitTest TEST_F(SliceCompilerTest, RuntimeExportCallback_EditorComponentExportSuppressed) { // Create an editor component that has a RuntimeExportCallback and successfully suppresses itself from exporting - CreateTestExportEditorEntity("EntityWithEditorComponent", TestExportEditorComponent::ExportComponentType::EXPORT_NULL_COMPONENT, true); + CreateTestExportEditorEntity("EntityWithEditorComponent", SliceTestExportEditorComponent::ExportComponentType::EXPORT_NULL_COMPONENT, true); if (!CompileSlice()) { @@ -1343,7 +1343,7 @@ namespace UnitTest // Expected result: exported slice does NOT contain either component. AZ::Entity* entity = GetCompiledEntity("EntityWithEditorComponent"); EXPECT_TRUE(entity); - EXPECT_FALSE(entity->FindComponent()); + EXPECT_FALSE(entity->FindComponent()); EXPECT_FALSE(entity->FindComponent()); EXPECT_FALSE(entity->FindComponent()); } @@ -1351,7 +1351,7 @@ namespace UnitTest TEST_F(SliceCompilerTest, RuntimeExportCallback_EditorComponentExportUnhandledFallbackToBuildGameEntity) { // Create an editor component that has a RuntimeExportCallback, returns a pointer to itself, but says it wasn't handled. - CreateTestExportEditorEntity("EntityWithEditorComponent", TestExportEditorComponent::ExportComponentType::EXPORT_EDITOR_COMPONENT, false); + CreateTestExportEditorEntity("EntityWithEditorComponent", SliceTestExportEditorComponent::ExportComponentType::EXPORT_EDITOR_COMPONENT, false); if (!CompileSlice()) { @@ -1362,7 +1362,7 @@ namespace UnitTest // produced a runtime component. AZ::Entity* entity = GetCompiledEntity("EntityWithEditorComponent"); EXPECT_TRUE(entity); - EXPECT_FALSE(entity->FindComponent()); + EXPECT_FALSE(entity->FindComponent()); EXPECT_TRUE(entity->FindComponent()); EXPECT_FALSE(entity->FindComponent()); } @@ -1370,7 +1370,7 @@ namespace UnitTest TEST_F(SliceCompilerTest, RuntimeExportCallback_EditorComponentExportSuppressedAndUnhandledFallbackToBuildGameEntity) { // Create an editor component that has a RuntimeExportCallback and suppresses itself from exporting, but says it wasn't handled - CreateTestExportEditorEntity("EntityWithEditorComponent", TestExportEditorComponent::ExportComponentType::EXPORT_NULL_COMPONENT, false); + CreateTestExportEditorEntity("EntityWithEditorComponent", SliceTestExportEditorComponent::ExportComponentType::EXPORT_NULL_COMPONENT, false); if (!CompileSlice()) { @@ -1381,7 +1381,7 @@ namespace UnitTest // produced a runtime component. AZ::Entity* entity = GetCompiledEntity("EntityWithEditorComponent"); EXPECT_TRUE(entity); - EXPECT_FALSE(entity->FindComponent()); + EXPECT_FALSE(entity->FindComponent()); EXPECT_TRUE(entity->FindComponent()); EXPECT_FALSE(entity->FindComponent()); } @@ -1389,7 +1389,7 @@ namespace UnitTest TEST_F(SliceCompilerTest, RuntimeExportCallback_EditorComponentFailsToExportItself) { // Create an editor component that has a RuntimeExportCallback and suppresses itself from exporting, but says it wasn't handled - CreateTestExportEditorEntity("EntityWithEditorComponent", TestExportEditorComponent::ExportComponentType::EXPORT_EDITOR_COMPONENT, true); + CreateTestExportEditorEntity("EntityWithEditorComponent", SliceTestExportEditorComponent::ExportComponentType::EXPORT_EDITOR_COMPONENT, true); // We expect the slice compilation to fail, since an editor component is being exported as a game component CompileSlice(false); diff --git a/Code/Framework/AzToolsFramework/Tests/aztoolsframeworktests_files.cmake b/Code/Framework/AzToolsFramework/Tests/aztoolsframeworktests_files.cmake index 2e2be6f921..573de25d42 100644 --- a/Code/Framework/AzToolsFramework/Tests/aztoolsframeworktests_files.cmake +++ b/Code/Framework/AzToolsFramework/Tests/aztoolsframeworktests_files.cmake @@ -100,4 +100,19 @@ set(FILES Viewport/ClusterTests.cpp Viewport/ViewportUiWidgetManagerTests.cpp Visibility/EditorVisibilityTests.cpp + ComponentAdapterTests.cpp + ComponentAddRemove.cpp + EntityTestbed.h + GenericComponentWrapperTest.cpp + InstanceDataHierarchy.cpp + Slices.cpp + SQLiteConnectionTests.cpp + TransformComponent.cpp + EntityOwnershipService/EntityOwnershipServiceTestFixture.h + EntityOwnershipService/EntityOwnershipServiceTestFixture.cpp + EntityOwnershipService/SliceEditorEntityOwnershipTests.cpp + EntityOwnershipService/SliceEntityOwnershipTests.cpp + Script/ScriptComponentTests.cpp + Script/ScriptEntityTests.cpp + FileFunc.cpp ) diff --git a/Code/Framework/CMakeLists.txt b/Code/Framework/CMakeLists.txt index e12a8f4cab..880751632c 100644 --- a/Code/Framework/CMakeLists.txt +++ b/Code/Framework/CMakeLists.txt @@ -18,4 +18,3 @@ add_subdirectory(AzNetworking) add_subdirectory(Crcfix) add_subdirectory(GFxFramework) add_subdirectory(GridMate) -add_subdirectory(Tests) From 1dec9d4a9a07f631f96f23f9ee37f2e3ab279799 Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Mon, 12 Jul 2021 18:03:10 -0700 Subject: [PATCH 04/16] Fix tests in AzToolsFramework now that the Trace bus is hooked Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- .../Tests/AssetFileInfoListComparison.cpp | 2 ++ .../Tests/AssetSeedManager.cpp | 6 ++++ .../Tests/ComponentModeTests.cpp | 3 ++ .../Tests/EntityInspectorTests.cpp | 1 - .../Framework/AzToolsFramework/Tests/Main.cpp | 2 +- .../Tests/PerforceComponentTests.cpp | 6 +--- .../PlatformAddressedAssetCatalogTests.cpp | 2 ++ .../Tests/Prefab/PrefabInstantiateTests.cpp | 2 ++ .../Tests/Prefab/PrefabLoadTemplateTests.cpp | 22 +++++++++++++-- .../Tests/Prefab/PrefabTestDomUtils.cpp | 28 +++++++++++++++---- .../Tests/Prefab/PrefabTestFixture.h | 3 +- .../Tests/PropertyTreeEditorTests.cpp | 8 ++++++ .../Tests/SliceUpgradeTests.cpp | 5 ++++ .../Tests/ThumbnailerTests.cpp | 5 ---- .../EditorLayerComponentTests.cpp | 2 -- .../Tests/TransformComponent.cpp | 4 +-- .../Tests/UI/EntityPropertyEditorTests.cpp | 7 ----- .../Viewport/ViewportUiWidgetManagerTests.cpp | 15 ++-------- 18 files changed, 77 insertions(+), 46 deletions(-) diff --git a/Code/Framework/AzToolsFramework/Tests/AssetFileInfoListComparison.cpp b/Code/Framework/AzToolsFramework/Tests/AssetFileInfoListComparison.cpp index f950f43abc..2e4641d818 100644 --- a/Code/Framework/AzToolsFramework/Tests/AssetFileInfoListComparison.cpp +++ b/Code/Framework/AzToolsFramework/Tests/AssetFileInfoListComparison.cpp @@ -54,6 +54,7 @@ namespace UnitTest m_localFileIO = aznew AZ::IO::LocalFileIO(); m_priorFileIO = AZ::IO::FileIOBase::GetInstance(); + AZ::IO::FileIOBase::SetInstance(nullptr); AZ::IO::FileIOBase::SetInstance(m_localFileIO); AZ::IO::FileIOBase::GetInstance()->SetAlias("@assets@", GetTestFolderPath().c_str()); @@ -175,6 +176,7 @@ namespace UnitTest delete m_pcCatalog; delete m_localFileIO; m_localFileIO = nullptr; + AZ::IO::FileIOBase::SetInstance(nullptr); AZ::IO::FileIOBase::SetInstance(m_priorFileIO); m_application->Stop(); delete m_application; diff --git a/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp b/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp index 71e4184eb6..52b8cc6a52 100644 --- a/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp +++ b/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp @@ -266,7 +266,9 @@ namespace UnitTest AZ::IO::SystemFile::SetWritable(filePath.c_str(), false); // Attempt to save to the same file. Should not be allowed. + AZ_TEST_START_TRACE_SUPPRESSION; EXPECT_FALSE(m_assetSeedManager->Save(filePath)); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // Clean up the test environment AZ::IO::SystemFile::SetWritable(filePath.c_str(), true); @@ -290,7 +292,9 @@ namespace UnitTest AZ::IO::SystemFile::SetWritable(filePath.c_str(), false); // Attempt to save to the same file. Should not be allowed. + AZ_TEST_START_TRACE_SUPPRESSION; EXPECT_FALSE(m_assetSeedManager->SaveAssetFileInfo(filePath, AzFramework::PlatformFlags::Platform_PC, {})); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // Clean up the test environment AZ::IO::SystemFile::SetWritable(filePath.c_str(), true); @@ -357,7 +361,9 @@ namespace UnitTest m_assetSeedManager->AddSeedAsset(assets[2], AzFramework::PlatformFlags::Platform_PC); // Step we are testing + AZ_TEST_START_TRACE_SUPPRESSION; m_assetSeedManager->AddPlatformToAllSeeds(AzFramework::PlatformId::ANDROID_ID); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // Verification AzFramework::PlatformFlags expectedPlatformFlags = AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ANDROID; diff --git a/Code/Framework/AzToolsFramework/Tests/ComponentModeTests.cpp b/Code/Framework/AzToolsFramework/Tests/ComponentModeTests.cpp index 775c771a8a..9ee75408e6 100644 --- a/Code/Framework/AzToolsFramework/Tests/ComponentModeTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/ComponentModeTests.cpp @@ -493,7 +493,10 @@ namespace UnitTest // Add placeholder component which implements component mode. entity->CreateComponent(); + AZ_TEST_START_TRACE_SUPPRESSION; entity->Activate(); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); + /////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/Code/Framework/AzToolsFramework/Tests/EntityInspectorTests.cpp b/Code/Framework/AzToolsFramework/Tests/EntityInspectorTests.cpp index 3bc4c092dc..c15034ee33 100644 --- a/Code/Framework/AzToolsFramework/Tests/EntityInspectorTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/EntityInspectorTests.cpp @@ -348,7 +348,6 @@ namespace UnitTest EXPECT_FALSE(AzToolsFramework::ComponentPaletteUtil::ContainsEditableComponents(context, &Filter_IsTestComponent2, AZ::ComponentDescriptor::DependencyArrayType())); // Reflect Test Component 2 for subsequent tests - Inspector_TestComponent2::Reflect(context); m_application->RegisterComponentDescriptor(Inspector_TestComponent2Descriptor); // Verify that there is now a component that satisfies the AppearsInGameComponentMenu filter without service dependency conditions diff --git a/Code/Framework/AzToolsFramework/Tests/Main.cpp b/Code/Framework/AzToolsFramework/Tests/Main.cpp index ff94f9af5c..21aac978b3 100644 --- a/Code/Framework/AzToolsFramework/Tests/Main.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Main.cpp @@ -46,7 +46,7 @@ AZTEST_EXPORT int AZ_UNIT_TEST_HOOK_NAME(int argc, char** argv) } styleManager->initialize(&app, engineRootPath); AZ::Test::printUnusedParametersWarning(argc, argv); - AZ::Test::addTestEnvironments({ new ToolsFrameworkHook }); + AZ::Test::addTestEnvironments({ DEFAULT_UNIT_TEST_ENV, new ToolsFrameworkHook }); int result = RUN_ALL_TESTS(); styleManager.release(); return result; diff --git a/Code/Framework/AzToolsFramework/Tests/PerforceComponentTests.cpp b/Code/Framework/AzToolsFramework/Tests/PerforceComponentTests.cpp index db7430085b..46f9a9fa3a 100644 --- a/Code/Framework/AzToolsFramework/Tests/PerforceComponentTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/PerforceComponentTests.cpp @@ -23,8 +23,7 @@ namespace UnitTest }; struct PerforceComponentFixture - : ::testing::Test - , TraceBusRedirector + : ScopedAllocatorSetupFixture , SourceControlTest { @@ -40,7 +39,6 @@ namespace UnitTest m_jobContext = aznew AZ::JobContext(*m_jobManager); AZ::JobContext::SetGlobalContext(m_jobContext); - AZ::Debug::TraceMessageBus::Handler::BusConnect(); AZ::TickBus::AllowFunctionQueuing(true); m_perforceComponent = AZStd::make_unique(); @@ -52,8 +50,6 @@ namespace UnitTest void TearDown() override { - AZ::Debug::TraceMessageBus::Handler::BusDisconnect(); - AZ::TickBus::AllowFunctionQueuing(false); AZ::TickBus::ClearQueuedEvents(); diff --git a/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp b/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp index e581f4fac7..2ac66564df 100644 --- a/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp @@ -246,7 +246,9 @@ namespace UnitTest AzFramework::AssetSystem::NetworkAssetUpdateInterface* notificationInterface = AZ::Interface::Get(); EXPECT_NE(notificationInterface, nullptr); + AZ_TEST_START_TRACE_SUPPRESSION; auto* mockCatalog = new ::testing::NiceMock(AzFramework::PlatformId::ANDROID_ID); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; AZStd::unique_ptr< ::testing::NiceMock> catalogHolder; catalogHolder.reset(mockCatalog); diff --git a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabInstantiateTests.cpp b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabInstantiateTests.cpp index a08de99d3e..81d44d7426 100644 --- a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabInstantiateTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabInstantiateTests.cpp @@ -13,7 +13,9 @@ namespace UnitTest TEST_F(PrefabInstantiateTest, PrefabInstantiate_InstantiateInvalidTemplate_InstantiateFails) { + AZ_TEST_START_TRACE_SUPPRESSION; EXPECT_FALSE(m_prefabSystemComponent->InstantiatePrefab(AzToolsFramework::Prefab::InvalidTemplateId)); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; } TEST_F(PrefabInstantiateTest, PrefabInstantiate_NoNestingTemplate_InstantiateSucceeds) diff --git a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabLoadTemplateTests.cpp b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabLoadTemplateTests.cpp index 9cf1194834..db7640916d 100644 --- a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabLoadTemplateTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabLoadTemplateTests.cpp @@ -68,8 +68,10 @@ namespace UnitTest MockPrefabFileIOActionValidator mockIOActionValidator; mockIOActionValidator.ReadPrefabDom(templateData.m_filePath, templatePrefabDom); - + + AZ_TEST_START_TRACE_SUPPRESSION; templateData.m_id = m_prefabLoaderInterface->LoadTemplateFromFile(templateData.m_filePath); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; templateData.m_isLoadedWithErrors = true; PrefabTestDataUtils::ValidateTemplateLoad(templateData); @@ -115,7 +117,9 @@ namespace UnitTest targetTemplateData.m_filePath, targetTemplatePrefabDom); // Load target and source Templates and get their Ids. + AZ_TEST_START_TRACE_SUPPRESSION; targetTemplateData.m_id = m_prefabLoaderInterface->LoadTemplateFromFile(targetTemplateData.m_filePath); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; sourceTemplateData.m_id = m_prefabSystemComponent->GetTemplateIdFromFilePath(sourceTemplateData.m_filePath); // Because of cyclical dependency, the two Templates should be loaded with errors. @@ -144,7 +148,9 @@ namespace UnitTest MockPrefabFileIOActionValidator mockIOActionValidator; mockIOActionValidator.ReadPrefabDom(templateData.m_filePath, templatePrefabDom); + AZ_TEST_START_TRACE_SUPPRESSION; templateData.m_id = m_prefabLoaderInterface->LoadTemplateFromFile(templateData.m_filePath); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; PrefabTestDataUtils::ValidateTemplateLoad(templateData); } @@ -161,7 +167,9 @@ namespace UnitTest MockPrefabFileIOActionValidator mockIOActionValidator; mockIOActionValidator.ReadPrefabDom(templateData.m_filePath, templatePrefabDom); + AZ_TEST_START_TRACE_SUPPRESSION; templateData.m_id = m_prefabLoaderInterface->LoadTemplateFromFile(templateData.m_filePath); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; PrefabTestDataUtils::ValidateTemplateLoad(templateData); } @@ -183,7 +191,9 @@ namespace UnitTest templateInstanceData.m_source, PrefabTestDomUtils::CreatePrefabDom(), AZ::IO::ResultCode::Success, AZ::IO::ResultCode::Error); + AZ_TEST_START_TRACE_SUPPRESSION; templateData.m_id = m_prefabLoaderInterface->LoadTemplateFromFile(templateData.m_filePath); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; PrefabTestDataUtils::ValidateTemplateLoad(templateData); } @@ -279,8 +289,10 @@ namespace UnitTest MockPrefabFileIOActionValidator mockIOActionValidator; mockIOActionValidator.ReadPrefabDom(pathToCorruptedPrefab, corruptedPrefabContent); - + + AZ_TEST_START_TRACE_SUPPRESSION; TemplateId templateId = m_prefabLoaderInterface->LoadTemplateFromFile(pathToCorruptedPrefab); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; EXPECT_EQ(templateId, AzToolsFramework::Prefab::InvalidTemplateId); } @@ -289,8 +301,10 @@ namespace UnitTest { PrefabDom emptyPrefabDom = PrefabTestDomUtils::CreatePrefabDom(); AZStd::string emptyPrefabDomStr = PrefabTestDomUtils::DomToString(emptyPrefabDom); + AZ_TEST_START_TRACE_SUPPRESSION; EXPECT_EQ(m_prefabLoaderInterface->LoadTemplateFromString(emptyPrefabDomStr, "|?<>"), AzToolsFramework::Prefab::InvalidTemplateId); EXPECT_EQ(m_prefabLoaderInterface->LoadTemplateFromString(emptyPrefabDomStr, "notAFile/"), AzToolsFramework::Prefab::InvalidTemplateId); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; } TEST_F(PrefabLoadTemplateTest, LoadTemplate_LoadFromString_LoadsEmptyPrefab) @@ -318,9 +332,11 @@ namespace UnitTest ); AZStd::string selfDependentPrefabStr = PrefabTestDomUtils::DomToString(selfDependentPrefab); + AZ_TEST_START_TRACE_SUPPRESSION; templateData.m_id = m_prefabLoaderInterface->LoadTemplateFromString( selfDependentPrefabStr, templateData.m_filePath); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; templateData.m_isLoadedWithErrors = true; @@ -330,7 +346,9 @@ namespace UnitTest TEST_F(PrefabLoadTemplateTest, LoadTemplate_LoadFromString_CorruptedReturnsInvalidTemplateId) { AZStd::string corruptPrefab = "{ Corrupted PrefabDom"; + AZ_TEST_START_TRACE_SUPPRESSION; TemplateId templateId = m_prefabLoaderInterface->LoadTemplateFromString(corruptPrefab); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; EXPECT_EQ(templateId, AzToolsFramework::Prefab::InvalidTemplateId); } } diff --git a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabTestDomUtils.cpp b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabTestDomUtils.cpp index 34cff98a73..413e3ea0b4 100644 --- a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabTestDomUtils.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabTestDomUtils.cpp @@ -166,13 +166,29 @@ namespace UnitTest if (expectedNestedInstanceDomInstances.has_value()) { ASSERT_TRUE(actualNestedInstanceDomInstances.has_value()); - for (auto instanceIterator = expectedNestedInstanceDomInstances->get().MemberBegin(); - instanceIterator != expectedNestedInstanceDomInstances->get().MemberEnd(); ++instanceIterator) + if (expectedNestedInstanceDomInstances->get().IsArray()) { - ComparePrefabDoms( - instanceIterator->value, - PrefabDomUtils::FindPrefabDomValue(actualNestedInstanceDomInstances->get(), instanceIterator->name.GetString()), - shouldCompareLinkIds, shouldCompareContainerEntities); + ASSERT_TRUE(actualNestedInstanceDomInstances->get().IsArray()); + const size_t arraySize = expectedNestedInstanceDomInstances->get().GetArray().Size(); + for(size_t i = 0; i < arraySize; ++i) + { + ComparePrefabDoms( + expectedNestedInstanceDomInstances->get().GetArray()[i], + actualNestedInstanceDomInstances->get().GetArray()[i], + shouldCompareLinkIds, shouldCompareContainerEntities); + } + } + if (expectedNestedInstanceDomInstances->get().IsObject()) + { + ASSERT_TRUE(actualNestedInstanceDomInstances->get().IsObject()); + for (auto instanceIterator = expectedNestedInstanceDomInstances->get().MemberBegin(); + instanceIterator != expectedNestedInstanceDomInstances->get().MemberEnd(); ++instanceIterator) + { + ComparePrefabDoms( + instanceIterator->value, + PrefabDomUtils::FindPrefabDomValue(actualNestedInstanceDomInstances->get(), instanceIterator->name.GetString()), + shouldCompareLinkIds, shouldCompareContainerEntities); + } } } } diff --git a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabTestFixture.h b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabTestFixture.h index 763d3bec1f..b438f9f28d 100644 --- a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabTestFixture.h +++ b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabTestFixture.h @@ -37,8 +37,7 @@ namespace UnitTest }; class PrefabTestFixture - : public ToolsApplicationFixture, - public UnitTest::TraceBusRedirector + : public ToolsApplicationFixture { protected: diff --git a/Code/Framework/AzToolsFramework/Tests/PropertyTreeEditorTests.cpp b/Code/Framework/AzToolsFramework/Tests/PropertyTreeEditorTests.cpp index 99cf334dc9..006dd5a656 100644 --- a/Code/Framework/AzToolsFramework/Tests/PropertyTreeEditorTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/PropertyTreeEditorTests.cpp @@ -426,7 +426,9 @@ namespace UnitTest AZStd::any keyString = AZStd::make_any("0"); EXPECT_FALSE(propertyTree.GetContainerItem("My New Int", key).IsSuccess()); + AZ_TEST_START_TRACE_SUPPRESSION; EXPECT_FALSE(propertyTree.GetContainerItem("My New List", keyString).IsSuccess()); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); PropertyTreeEditor::PropertyAccessOutcome outcome = propertyTree.GetContainerItem("My New List", key); EXPECT_TRUE(outcome.IsSuccess()); @@ -446,7 +448,9 @@ namespace UnitTest AZStd::any value = AZStd::make_any(testUpdate); EXPECT_FALSE(propertyTree.UpdateContainerItem("My New Int", key, value).IsSuccess()); + AZ_TEST_START_TRACE_SUPPRESSION; EXPECT_FALSE(propertyTree.UpdateContainerItem("My New List", keyString, value).IsSuccess()); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); EXPECT_TRUE(propertyTree.UpdateContainerItem("My New List", key, value).IsSuccess()); PropertyTreeEditor::PropertyAccessOutcome outcome = propertyTree.GetContainerItem("My New List", key); @@ -464,7 +468,9 @@ namespace UnitTest AZStd::any keyString = AZStd::make_any("0"); EXPECT_FALSE(propertyTree.RemoveContainerItem("My New Int", key).IsSuccess()); + AZ_TEST_START_TRACE_SUPPRESSION; EXPECT_FALSE(propertyTree.RemoveContainerItem("My New List", keyString).IsSuccess()); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); PropertyTreeEditor::PropertyAccessOutcome outcomeAdd1 = propertyTree.RemoveContainerItem("My New List", key); EXPECT_TRUE(outcomeAdd1.IsSuccess()); @@ -755,7 +761,9 @@ namespace UnitTest EXPECT_TRUE(propertyTree.SetProperty("My Int", anEmpty).IsSuccess()); EXPECT_TRUE(propertyTree.SetProperty("My Negative Short", anEmpty).IsSuccess()); EXPECT_TRUE(propertyTree.SetProperty("My New List", anEmpty).IsSuccess()); + AZ_TEST_START_TRACE_SUPPRESSION; EXPECT_TRUE(propertyTree.SetProperty("My Asset Data", anEmpty).IsSuccess()); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); EXPECT_TRUE(propertyTree.SetProperty("My Test Simple Asset", anEmpty).IsSuccess()); } diff --git a/Code/Framework/AzToolsFramework/Tests/SliceUpgradeTests.cpp b/Code/Framework/AzToolsFramework/Tests/SliceUpgradeTests.cpp index 98b004feba..f8acf7d224 100644 --- a/Code/Framework/AzToolsFramework/Tests/SliceUpgradeTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/SliceUpgradeTests.cpp @@ -275,6 +275,7 @@ namespace UnitTest TEST_F(SliceUpgradeTest, IntermmediateDataTypeChange) { TestDataA::Reflect(m_serializeContext.get()); + AzToolsFramework::Components::EditorComponentBase::Reflect(m_serializeContext.get()); TestComponentA_V0::Reflect(m_serializeContext.get()); AZ::Entity* entityA = aznew AZ::Entity(); TestComponentA_V0* component = entityA->CreateComponent(); @@ -320,6 +321,7 @@ namespace UnitTest TEST_F(SliceUpgradeTest, TypeChangeInUnorderedMap) { TestDataB_V0::Reflect(m_serializeContext.get()); + AzToolsFramework::Components::EditorComponentBase::Reflect(m_serializeContext.get()); TestComponentB_V0::Reflect(m_serializeContext.get()); AZ::Entity* entityA = aznew AZ::Entity(); TestComponentB_V0* componentB = entityA->CreateComponent(); @@ -395,6 +397,7 @@ namespace UnitTest TEST_F(SliceUpgradeTest, TypeChangeInVector) { TestDataB_V0::Reflect(m_serializeContext.get()); + AzToolsFramework::Components::EditorComponentBase::Reflect(m_serializeContext.get()); TestComponentC_V0::Reflect(m_serializeContext.get()); AZ::Entity* entityA = aznew AZ::Entity(); TestComponentC_V0* componentC = entityA->CreateComponent(); @@ -452,6 +455,7 @@ namespace UnitTest TEST_F(SliceUpgradeTest, UpgradeSkipVersion_TypeChange_FloatToDouble) { // 1. Create an entity with a TestComponentE_V4 with the default value for m_data + AzToolsFramework::Components::EditorComponentBase::Reflect(m_serializeContext.get()); TestComponentE_V4::Reflect(m_serializeContext.get()); AZ::Entity* testEntity = aznew AZ::Entity(); TestComponentE_V4* componentEV4 = testEntity->CreateComponent(); @@ -563,6 +567,7 @@ namespace UnitTest SliceUpgradeTestAsset::Reflect(m_serializeContext.get()); AzFramework::SimpleAssetReference::Register(*m_serializeContext.get()); + AzToolsFramework::Components::EditorComponentBase::Reflect(m_serializeContext.get()); TestComponentD_V1::Reflect(m_serializeContext.get()); AZ::Entity* entity = aznew AZ::Entity(); entity->CreateComponent(); diff --git a/Code/Framework/AzToolsFramework/Tests/ThumbnailerTests.cpp b/Code/Framework/AzToolsFramework/Tests/ThumbnailerTests.cpp index 05ffc6055f..8c8ebc47e9 100644 --- a/Code/Framework/AzToolsFramework/Tests/ThumbnailerTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/ThumbnailerTests.cpp @@ -20,7 +20,6 @@ namespace UnitTest class ThumbnailerTests : public ::testing::Test - , public TraceBusRedirector { protected: void SetUp() override @@ -31,8 +30,6 @@ namespace UnitTest // was running, because the environment wasn't setup for it to save these settings. AZ::UserSettingsComponentRequestBus::Broadcast(&AZ::UserSettingsComponentRequests::DisableSaveOnFinalize); - TraceBusRedirector::BusConnect(); - AZStd::string entityName("test"); AZ::EntityId testEntityId; AzToolsFramework::EditorEntityContextRequestBus::BroadcastResult( @@ -61,8 +58,6 @@ namespace UnitTest void TearDown() override { - TraceBusRedirector::BusDisconnect(); - AzToolsFramework::EditorEntityContextRequestBus::Broadcast( &AzToolsFramework::EditorEntityContextRequestBus::Events::DestroyEditorEntity, m_testEntity->GetId()); diff --git a/Code/Framework/AzToolsFramework/Tests/ToolsComponents/EditorLayerComponentTests.cpp b/Code/Framework/AzToolsFramework/Tests/ToolsComponents/EditorLayerComponentTests.cpp index 3007f12192..0c50ca2e00 100644 --- a/Code/Framework/AzToolsFramework/Tests/ToolsComponents/EditorLayerComponentTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/ToolsComponents/EditorLayerComponentTests.cpp @@ -248,8 +248,6 @@ namespace AzToolsFramework m_app.Stop(); AZ::Debug::TraceMessageBus::Handler::BusDisconnect(); - - } // A few tests save a layer and want to check the state after saving. diff --git a/Code/Framework/AzToolsFramework/Tests/TransformComponent.cpp b/Code/Framework/AzToolsFramework/Tests/TransformComponent.cpp index 57edbf7f74..21631571f5 100644 --- a/Code/Framework/AzToolsFramework/Tests/TransformComponent.cpp +++ b/Code/Framework/AzToolsFramework/Tests/TransformComponent.cpp @@ -975,7 +975,7 @@ namespace UnitTest // AzToolsFramework::Components::TransformComponent // Fixture base class for AzToolsFramework::Components::TransformComponent tests - class EditorTransformComponentTest + class OldEditorTransformComponentTest : public ::testing::Test { protected: @@ -1000,7 +1000,7 @@ namespace UnitTest // Old TransformComponents used to store "Slice Root" entity Id, which could be its own Id. // The version-converter could end up making an entity into its own transform parent. // The EditorEntityFixupComponent should fix this up during slice instantiation. - TEST_F(EditorTransformComponentTest, OldSliceRoots_ShouldHaveNoParent) + TEST_F(OldEditorTransformComponentTest, OldSliceRoots_ShouldHaveNoParent) { const char kSliceData[] = R"DELIMITER( diff --git a/Code/Framework/AzToolsFramework/Tests/UI/EntityPropertyEditorTests.cpp b/Code/Framework/AzToolsFramework/Tests/UI/EntityPropertyEditorTests.cpp index cf9f95ef31..384edf76ad 100644 --- a/Code/Framework/AzToolsFramework/Tests/UI/EntityPropertyEditorTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/UI/EntityPropertyEditorTests.cpp @@ -127,7 +127,6 @@ namespace UnitTest void SetUpEditorFixtureImpl() override { m_editor = new EntityPropertyEditor(); - m_editorActions.Connect(); m_entity1 = CreateDefaultEditorEntity("Entity1"); m_entity2 = CreateDefaultEditorEntity("Entity2"); @@ -137,13 +136,11 @@ namespace UnitTest void TearDownEditorFixtureImpl() override { - m_editorActions.Disconnect(); delete m_editor; } public: EntityPropertyEditor* m_editor; - TestEditorActions m_editorActions; EntityIdList m_entityIds; AZ::EntityId m_entity1; AZ::EntityId m_entity2; @@ -234,8 +231,6 @@ namespace UnitTest entities.insert(m_levelEntity); m_levelEditor->SetOverrideEntityIds(entities); - m_editorActions.Connect(); - // Connect to the EditorRequestBus so that we can intercept calls checking whether or not a level is currently open. AzToolsFramework::EditorRequestBus::Handler::BusConnect(); } @@ -244,7 +239,6 @@ namespace UnitTest { AzToolsFramework::EditorRequestBus::Handler::BusDisconnect(); - m_editorActions.Disconnect(); delete m_levelEditor; } @@ -258,7 +252,6 @@ namespace UnitTest public: EntityPropertyEditor* m_levelEditor; - TestEditorActions m_editorActions; AZ::EntityId m_levelEntity; bool m_levelOpen = false; }; diff --git a/Code/Framework/AzToolsFramework/Tests/Viewport/ViewportUiWidgetManagerTests.cpp b/Code/Framework/AzToolsFramework/Tests/Viewport/ViewportUiWidgetManagerTests.cpp index f1d282e869..7480c937f4 100644 --- a/Code/Framework/AzToolsFramework/Tests/Viewport/ViewportUiWidgetManagerTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Viewport/ViewportUiWidgetManagerTests.cpp @@ -85,19 +85,8 @@ namespace UnitTest } class ViewportUiWidgetAssertFixture - : public ::testing::Test - , UnitTest::TraceBusRedirector - { - public: - void SetUp() override - { - AZ::Debug::TraceMessageBus::Handler::BusConnect(); - } - void TearDown() override - { - AZ::Debug::TraceMessageBus::Handler::BusDisconnect(); - } - }; + : public ScopedAllocatorSetupFixture + {}; TEST_F(ViewportUiWidgetAssertFixture, RegisterUpdateCallbackDoesNotRegisterFunctionForNotAddedObject) { From 4e84738ff25b60575a97824e0f71105d82cec253 Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Mon, 12 Jul 2021 20:32:08 -0700 Subject: [PATCH 05/16] Ordering file alphabetically Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- .../Tests/aztoolsframeworktests_files.cmake | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/Code/Framework/AzToolsFramework/Tests/aztoolsframeworktests_files.cmake b/Code/Framework/AzToolsFramework/Tests/aztoolsframeworktests_files.cmake index 573de25d42..9d1ec3e346 100644 --- a/Code/Framework/AzToolsFramework/Tests/aztoolsframeworktests_files.cmake +++ b/Code/Framework/AzToolsFramework/Tests/aztoolsframeworktests_files.cmake @@ -11,35 +11,37 @@ set(FILES AssetFileInfoListComparison.cpp AssetSeedManager.cpp AssetSystemMocks.h - ComponentModeTests.cpp - ComponentModeTestDoubles.h + ComponentAdapterTests.cpp + ComponentAddRemove.cpp ComponentModeTestDoubles.cpp - ComponentModeTestFixture.h + ComponentModeTestDoubles.h ComponentModeTestFixture.cpp + ComponentModeTestFixture.h + ComponentModeTests.cpp EditorTransformComponentSelectionTests.cpp EditorVertexSelectionTests.cpp + Entity/EditorEntityContextComponentTests.cpp + Entity/EditorEntityHelpersTests.cpp + Entity/EditorEntitySearchComponentTests.cpp + Entity/EditorEntitySelectionTests.cpp EntityIdQLabelTests.cpp EntityInspectorTests.cpp + EntityOwnershipService/EntityOwnershipServiceTestFixture.cpp + EntityOwnershipService/EntityOwnershipServiceTestFixture.h + EntityOwnershipService/SliceEditorEntityOwnershipTests.cpp + EntityOwnershipService/SliceEntityOwnershipTests.cpp + EntityTestbed.h + FileFunc.cpp FingerprintingTests.cpp + GenericComponentWrapperTest.cpp + InstanceDataHierarchy.cpp + IntegerPrimtitiveTestConfig.h LogLines.cpp ManipulatorBoundsTests.cpp ManipulatorCoreTests.cpp ManipulatorViewTests.cpp - PlatformAddressedAssetCatalogTests.cpp - PropertyIntCtrlCommonTests.h - IntegerPrimtitiveTestConfig.h - QtWidgetLimitsTests.cpp - PropertyIntSliderCtrlTests.cpp - PropertyIntSpinCtrlTests.cpp - PropertyTreeEditorTests.cpp - PythonBindingTests.cpp - Slice.cpp - SliceUpgradeTestsData.h - SliceUpgradeTests.cpp - SpinBoxTests.cpp - ThumbnailerTests.cpp - UndoStack.cpp PerforceComponentTests.cpp + PlatformAddressedAssetCatalogTests.cpp Prefab/Benchmark/PrefabBenchmarkFixture.cpp Prefab/Benchmark/PrefabBenchmarkFixture.h Prefab/Benchmark/PrefabCreateBenchmarks.cpp @@ -47,13 +49,13 @@ set(FILES Prefab/Benchmark/PrefabLoadBenchmarks.cpp Prefab/Benchmark/PrefabUpdateInstancesBenchmarks.cpp Prefab/Benchmark/SpawnableCreateBenchmarks.cpp - Prefab/Spawnable/SpawnableMetaDataTests.cpp Prefab/MockPrefabFileIOActionValidator.cpp Prefab/MockPrefabFileIOActionValidator.h Prefab/PrefabDuplicateTests.cpp Prefab/PrefabEntityAliasTests.cpp Prefab/PrefabInstanceToTemplatePropagatorTests.cpp Prefab/PrefabInstantiateTests.cpp + Prefab/PrefabInstantiateTests.cpp Prefab/PrefabLoadTemplateTests.cpp Prefab/PrefabTestComponent.cpp Prefab/PrefabTestComponent.h @@ -67,52 +69,50 @@ set(FILES Prefab/PrefabTestFixture.h Prefab/PrefabTestUndoFixture.cpp Prefab/PrefabTestUndoFixture.h + Prefab/PrefabTestUtils.h Prefab/PrefabUndoLinkTests.cpp Prefab/PrefabUndoTests.cpp - Prefab/PrefabTestUtils.h Prefab/PrefabUpdateInstancesTests.cpp Prefab/PrefabUpdateTemplateTests.cpp Prefab/PrefabUpdateWithPatchesTests.cpp - Prefab/PrefabInstantiateTests.cpp + Prefab/Spawnable/SpawnableMetaDataTests.cpp Prefab/SpawnableCreateTests.cpp - Prefab/SpawnableRemoveEditorInfoTests.cpp Prefab/SpawnableRemoveEditorInfoTestFixture.cpp Prefab/SpawnableRemoveEditorInfoTestFixture.h - Prefab/SpawnableSortEntitiesTests.cpp + Prefab/SpawnableRemoveEditorInfoTests.cpp Prefab/SpawnableSortEntitiesTestFixture.cpp Prefab/SpawnableSortEntitiesTestFixture.h - Entity/EditorEntityContextComponentTests.cpp - Entity/EditorEntityHelpersTests.cpp - Entity/EditorEntitySearchComponentTests.cpp - Entity/EditorEntitySelectionTests.cpp - SliceStabilityTests/SliceStabilityTestFramework.h - SliceStabilityTests/SliceStabilityTestFramework.cpp + Prefab/SpawnableSortEntitiesTests.cpp + PropertyIntCtrlCommonTests.h + PropertyIntSliderCtrlTests.cpp + PropertyIntSpinCtrlTests.cpp + PropertyTreeEditorTests.cpp + PythonBindingTests.cpp + QtWidgetLimitsTests.cpp + Script/ScriptComponentTests.cpp + Script/ScriptEntityTests.cpp + Slice.cpp + Slices.cpp SliceStabilityTests/SliceStabilityCreateTests.cpp SliceStabilityTests/SliceStabilityPushTests.cpp SliceStabilityTests/SliceStabilityReParentTests.cpp + SliceStabilityTests/SliceStabilityTestFramework.cpp + SliceStabilityTests/SliceStabilityTestFramework.h + SliceUpgradeTests.cpp + SliceUpgradeTestsData.h + SpinBoxTests.cpp + SQLiteConnectionTests.cpp + ThumbnailerTests.cpp ToolsComponents/EditorLayerComponentTests.cpp ToolsComponents/EditorTransformComponentTests.cpp + TransformComponent.cpp UI/EntityPropertyEditorTests.cpp + UndoStack.cpp + Viewport/ClusterTests.cpp Viewport/ViewportScreenTests.cpp Viewport/ViewportUiClusterTests.cpp Viewport/ViewportUiDisplayTests.cpp Viewport/ViewportUiManagerTests.cpp - Viewport/ClusterTests.cpp Viewport/ViewportUiWidgetManagerTests.cpp Visibility/EditorVisibilityTests.cpp - ComponentAdapterTests.cpp - ComponentAddRemove.cpp - EntityTestbed.h - GenericComponentWrapperTest.cpp - InstanceDataHierarchy.cpp - Slices.cpp - SQLiteConnectionTests.cpp - TransformComponent.cpp - EntityOwnershipService/EntityOwnershipServiceTestFixture.h - EntityOwnershipService/EntityOwnershipServiceTestFixture.cpp - EntityOwnershipService/SliceEditorEntityOwnershipTests.cpp - EntityOwnershipService/SliceEntityOwnershipTests.cpp - Script/ScriptComponentTests.cpp - Script/ScriptEntityTests.cpp - FileFunc.cpp ) From 5619e0f29406694032fe60825002f8aa9883bef0 Mon Sep 17 00:00:00 2001 From: luissemp Date: Wed, 14 Jul 2021 12:10:17 -0700 Subject: [PATCH 06/16] Removed editor specialization from GridHub, it does not need the gems loaded Signed-off-by: luissemp --- Code/Tools/GridHub/GridHub/main.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Code/Tools/GridHub/GridHub/main.cpp b/Code/Tools/GridHub/GridHub/main.cpp index 5b35abff6c..0b1cfced93 100644 --- a/Code/Tools/GridHub/GridHub/main.cpp +++ b/Code/Tools/GridHub/GridHub/main.cpp @@ -187,7 +187,6 @@ protected: { ComponentApplication::SetSettingsRegistrySpecializations(specializations); specializations.Append("tools"); - specializations.Append("editor"); specializations.Append("gridhub"); } From 24831b1970bed10c56f00b9d32f7c62ffa50d7ee Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Wed, 14 Jul 2021 14:54:57 -0700 Subject: [PATCH 07/16] Code review changes Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- .../PlatformAddressedAssetCatalogTests.cpp | 2 +- .../Tests/Prefab/PrefabInstantiateTests.cpp | 2 +- .../Tests/Prefab/PrefabLoadTemplateTests.cpp | 18 +++++++++--------- .../Tests/Prefab/PrefabTestDomUtils.cpp | 12 ++++-------- 4 files changed, 15 insertions(+), 19 deletions(-) diff --git a/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp b/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp index 2ac66564df..29b48a1f31 100644 --- a/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp @@ -248,7 +248,7 @@ namespace UnitTest AZ_TEST_START_TRACE_SUPPRESSION; auto* mockCatalog = new ::testing::NiceMock(AzFramework::PlatformId::ANDROID_ID); - AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; + AZ_TEST_STOP_TRACE_SUPPRESSION(1); AZStd::unique_ptr< ::testing::NiceMock> catalogHolder; catalogHolder.reset(mockCatalog); diff --git a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabInstantiateTests.cpp b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabInstantiateTests.cpp index 81d44d7426..b0fd167cc0 100644 --- a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabInstantiateTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabInstantiateTests.cpp @@ -15,7 +15,7 @@ namespace UnitTest { AZ_TEST_START_TRACE_SUPPRESSION; EXPECT_FALSE(m_prefabSystemComponent->InstantiatePrefab(AzToolsFramework::Prefab::InvalidTemplateId)); - AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; + AZ_TEST_STOP_TRACE_SUPPRESSION(1); } TEST_F(PrefabInstantiateTest, PrefabInstantiate_NoNestingTemplate_InstantiateSucceeds) diff --git a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabLoadTemplateTests.cpp b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabLoadTemplateTests.cpp index db7640916d..bf47e57206 100644 --- a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabLoadTemplateTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabLoadTemplateTests.cpp @@ -71,7 +71,7 @@ namespace UnitTest AZ_TEST_START_TRACE_SUPPRESSION; templateData.m_id = m_prefabLoaderInterface->LoadTemplateFromFile(templateData.m_filePath); - AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; + AZ_TEST_STOP_TRACE_SUPPRESSION(3); templateData.m_isLoadedWithErrors = true; PrefabTestDataUtils::ValidateTemplateLoad(templateData); @@ -119,7 +119,7 @@ namespace UnitTest // Load target and source Templates and get their Ids. AZ_TEST_START_TRACE_SUPPRESSION; targetTemplateData.m_id = m_prefabLoaderInterface->LoadTemplateFromFile(targetTemplateData.m_filePath); - AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; + AZ_TEST_STOP_TRACE_SUPPRESSION(4); sourceTemplateData.m_id = m_prefabSystemComponent->GetTemplateIdFromFilePath(sourceTemplateData.m_filePath); // Because of cyclical dependency, the two Templates should be loaded with errors. @@ -150,7 +150,7 @@ namespace UnitTest AZ_TEST_START_TRACE_SUPPRESSION; templateData.m_id = m_prefabLoaderInterface->LoadTemplateFromFile(templateData.m_filePath); - AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; + AZ_TEST_STOP_TRACE_SUPPRESSION(2); PrefabTestDataUtils::ValidateTemplateLoad(templateData); } @@ -169,7 +169,7 @@ namespace UnitTest AZ_TEST_START_TRACE_SUPPRESSION; templateData.m_id = m_prefabLoaderInterface->LoadTemplateFromFile(templateData.m_filePath); - AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; + AZ_TEST_STOP_TRACE_SUPPRESSION(2); PrefabTestDataUtils::ValidateTemplateLoad(templateData); } @@ -193,7 +193,7 @@ namespace UnitTest AZ_TEST_START_TRACE_SUPPRESSION; templateData.m_id = m_prefabLoaderInterface->LoadTemplateFromFile(templateData.m_filePath); - AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; + AZ_TEST_STOP_TRACE_SUPPRESSION(3); PrefabTestDataUtils::ValidateTemplateLoad(templateData); } @@ -292,7 +292,7 @@ namespace UnitTest AZ_TEST_START_TRACE_SUPPRESSION; TemplateId templateId = m_prefabLoaderInterface->LoadTemplateFromFile(pathToCorruptedPrefab); - AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; + AZ_TEST_STOP_TRACE_SUPPRESSION(1); EXPECT_EQ(templateId, AzToolsFramework::Prefab::InvalidTemplateId); } @@ -304,7 +304,7 @@ namespace UnitTest AZ_TEST_START_TRACE_SUPPRESSION; EXPECT_EQ(m_prefabLoaderInterface->LoadTemplateFromString(emptyPrefabDomStr, "|?<>"), AzToolsFramework::Prefab::InvalidTemplateId); EXPECT_EQ(m_prefabLoaderInterface->LoadTemplateFromString(emptyPrefabDomStr, "notAFile/"), AzToolsFramework::Prefab::InvalidTemplateId); - AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; + AZ_TEST_STOP_TRACE_SUPPRESSION(2); } TEST_F(PrefabLoadTemplateTest, LoadTemplate_LoadFromString_LoadsEmptyPrefab) @@ -336,7 +336,7 @@ namespace UnitTest templateData.m_id = m_prefabLoaderInterface->LoadTemplateFromString( selfDependentPrefabStr, templateData.m_filePath); - AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; + AZ_TEST_STOP_TRACE_SUPPRESSION(3); templateData.m_isLoadedWithErrors = true; @@ -348,7 +348,7 @@ namespace UnitTest AZStd::string corruptPrefab = "{ Corrupted PrefabDom"; AZ_TEST_START_TRACE_SUPPRESSION; TemplateId templateId = m_prefabLoaderInterface->LoadTemplateFromString(corruptPrefab); - AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; + AZ_TEST_STOP_TRACE_SUPPRESSION(1); EXPECT_EQ(templateId, AzToolsFramework::Prefab::InvalidTemplateId); } } diff --git a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabTestDomUtils.cpp b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabTestDomUtils.cpp index 413e3ea0b4..6e836e4d44 100644 --- a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabTestDomUtils.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabTestDomUtils.cpp @@ -169,14 +169,10 @@ namespace UnitTest if (expectedNestedInstanceDomInstances->get().IsArray()) { ASSERT_TRUE(actualNestedInstanceDomInstances->get().IsArray()); - const size_t arraySize = expectedNestedInstanceDomInstances->get().GetArray().Size(); - for(size_t i = 0; i < arraySize; ++i) - { - ComparePrefabDoms( - expectedNestedInstanceDomInstances->get().GetArray()[i], - actualNestedInstanceDomInstances->get().GetArray()[i], - shouldCompareLinkIds, shouldCompareContainerEntities); - } + const size_t expectedArraySize = expectedNestedInstanceDomInstances->get().GetArray().Size(); + EXPECT_EQ(0, expectedArraySize); + const size_t actualArraySize = actualNestedInstanceDomInstances->get().GetArray().Size(); + EXPECT_EQ(0, actualArraySize); } if (expectedNestedInstanceDomInstances->get().IsObject()) { From 4a5ac0e204c683e23caca1405c36e400e9d6d0dc Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Wed, 14 Jul 2021 16:45:36 -0700 Subject: [PATCH 08/16] Fix for ArchiveTest where the assets alias was not being set Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- Code/Framework/AzToolsFramework/Tests/ArchiveTests.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Code/Framework/AzToolsFramework/Tests/ArchiveTests.cpp b/Code/Framework/AzToolsFramework/Tests/ArchiveTests.cpp index 4335e42d62..f706ee824d 100644 --- a/Code/Framework/AzToolsFramework/Tests/ArchiveTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/ArchiveTests.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -111,6 +112,11 @@ namespace UnitTest // shared across the whole engine, if multiple tests are run in parallel, the saving could cause a crash // in the unit tests. AZ::UserSettingsComponentRequestBus::Broadcast(&AZ::UserSettingsComponentRequests::DisableSaveOnFinalize); + + if (auto fileIoBase = AZ::IO::FileIOBase::GetInstance(); fileIoBase != nullptr) + { + fileIoBase->SetAlias("@assets@", m_tempDir.path().toUtf8().data()); + } } void TearDown() override From ae46eea1e82b35f3fc24de49dffdc72e543a7abd Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Wed, 14 Jul 2021 20:24:15 -0700 Subject: [PATCH 09/16] Fix tests in Linux and discover path comparison problem in Windows (fixed) Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- .../AzCore/Tests/AZTestShared/Utils/Utils.cpp | 6 ++-- .../AzFramework/IO/LocalFileIO.cpp | 7 ++--- .../AzToolsFramework/Tests/ArchiveTests.cpp | 29 +++++++------------ .../Tests/AssetFileInfoListComparison.cpp | 17 ++++++++++- .../Tests/AssetSeedManager.cpp | 21 +++++++++++++- .../PlatformAddressedAssetCatalogTests.cpp | 4 +++ 6 files changed, 55 insertions(+), 29 deletions(-) diff --git a/Code/Framework/AzCore/Tests/AZTestShared/Utils/Utils.cpp b/Code/Framework/AzCore/Tests/AZTestShared/Utils/Utils.cpp index a654302da6..d61323f33e 100644 --- a/Code/Framework/AzCore/Tests/AZTestShared/Utils/Utils.cpp +++ b/Code/Framework/AzCore/Tests/AZTestShared/Utils/Utils.cpp @@ -7,9 +7,9 @@ */ #include -#include "AzCore/Component/Entity.h" -#include "AzCore/Asset/AssetManager.h" -#include "AzCore/Slice/SliceComponent.h" +#include +#include +#include namespace UnitTest { diff --git a/Code/Framework/AzFramework/AzFramework/IO/LocalFileIO.cpp b/Code/Framework/AzFramework/AzFramework/IO/LocalFileIO.cpp index 69bf6bb394..96810c20ec 100644 --- a/Code/Framework/AzFramework/AzFramework/IO/LocalFileIO.cpp +++ b/Code/Framework/AzFramework/AzFramework/IO/LocalFileIO.cpp @@ -279,14 +279,11 @@ namespace AZ return SystemFile::Exists(resolvedPath); } - void LocalFileIO::CheckInvalidWrite(const char* path) + void LocalFileIO::CheckInvalidWrite([[maybe_unused]] const char* path) { - (void)path; - #if defined(AZ_ENABLE_TRACING) const char* assetsAlias = GetAlias("@assets@"); - - if (((path) && (assetsAlias) && (azstrnicmp(path, assetsAlias, strlen(assetsAlias)) == 0))) + if (path && assetsAlias && AZ::IO::PathView(path).IsRelativeTo(assetsAlias)) { AZ_Error("FileIO", false, "You may not alter data inside the asset cache. Please check the call stack and consider writing into the source asset folder instead.\n" "Attempted write location: %s", path); diff --git a/Code/Framework/AzToolsFramework/Tests/ArchiveTests.cpp b/Code/Framework/AzToolsFramework/Tests/ArchiveTests.cpp index f706ee824d..3b08e04304 100644 --- a/Code/Framework/AzToolsFramework/Tests/ArchiveTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/ArchiveTests.cpp @@ -24,6 +24,7 @@ #include #include #include +#include namespace UnitTest { @@ -73,7 +74,7 @@ namespace UnitTest void CreateArchiveFolder( QString archiveFolderName, QStringList fileList ) { - QDir tempPath = QDir(m_tempDir.path()).filePath(archiveFolderName); + QDir tempPath = QDir(m_tempDir.GetDirectory()).filePath(archiveFolderName); for (const auto& thisFile : fileList) { @@ -89,12 +90,12 @@ namespace UnitTest QString GetArchivePath() { - return QDir(m_tempDir.path()).filePath("TestArchive.pak"); + return QDir(m_tempDir.GetDirectory()).filePath("TestArchive.pak"); } QString GetArchiveFolder() { - return QDir(m_tempDir.path()).filePath(GetArchiveFolderName()); + return QDir(m_tempDir.GetDirectory()).filePath(GetArchiveFolderName()); } bool CreateArchive() @@ -115,7 +116,7 @@ namespace UnitTest if (auto fileIoBase = AZ::IO::FileIOBase::GetInstance(); fileIoBase != nullptr) { - fileIoBase->SetAlias("@assets@", m_tempDir.path().toUtf8().data()); + fileIoBase->SetAlias("@assets@", m_tempDir.GetDirectory()); } } @@ -126,16 +127,12 @@ namespace UnitTest } AZStd::unique_ptr m_app; - QTemporaryDir m_tempDir {QDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation)).filePath("ArchiveTests-")}; + UnitTest::ScopedTemporaryDirectory m_tempDir; }; -#if AZ_TRAIT_DISABLE_FAILED_ARCHIVE_TESTS - TEST_F(ArchiveTest, DISABLED_CreateArchiveBlocking_FilesAtThreeDepths_ArchiveCreated) -#else TEST_F(ArchiveTest, CreateArchiveBlocking_FilesAtThreeDepths_ArchiveCreated) -#endif // AZ_TRAIT_DISABLE_FAILED_ARCHIVE_TESTS { - EXPECT_TRUE(m_tempDir.isValid()); + EXPECT_TRUE(m_tempDir.IsValid()); CreateArchiveFolder(); bool createResult = CreateArchive(); @@ -143,13 +140,9 @@ namespace UnitTest EXPECT_EQ(createResult, true); } -#if AZ_TRAIT_DISABLE_FAILED_ARCHIVE_TESTS - TEST_F(ArchiveTest, DISABLED_ListFilesInArchiveBlocking_FilesAtThreeDepths_FilesFound) -#else TEST_F(ArchiveTest, ListFilesInArchiveBlocking_FilesAtThreeDepths_FilesFound) -#endif // AZ_TRAIT_DISABLE_FAILED_ARCHIVE_TESTS { - EXPECT_TRUE(m_tempDir.isValid()); + EXPECT_TRUE(m_tempDir.IsValid()); CreateArchiveFolder(); EXPECT_EQ(CreateArchive(), true); @@ -161,11 +154,7 @@ namespace UnitTest EXPECT_EQ(fileList.size(), 6); } -#if AZ_TRAIT_DISABLE_FAILED_ARCHIVE_TESTS - TEST_F(ArchiveTest, DISABLED_CreateDeltaCatalog_AssetsNotRegistered_Failure) -#else TEST_F(ArchiveTest, CreateDeltaCatalog_AssetsNotRegistered_Failure) -#endif // AZ_TRAIT_DISABLE_FAILED_ARCHIVE_TESTS { QStringList fileList = CreateArchiveFileList(); @@ -209,7 +198,9 @@ namespace UnitTest } bool catalogCreated{ false }; + AZ_TEST_START_TRACE_SUPPRESSION; AzToolsFramework::AssetBundleCommandsBus::BroadcastResult(catalogCreated, &AzToolsFramework::AssetBundleCommandsBus::Events::CreateDeltaCatalog, GetArchivePath().toStdString().c_str(), true); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // produces different counts in different platforms EXPECT_EQ(catalogCreated, true); } } diff --git a/Code/Framework/AzToolsFramework/Tests/AssetFileInfoListComparison.cpp b/Code/Framework/AzToolsFramework/Tests/AssetFileInfoListComparison.cpp index 2e4641d818..fea9fa6cc1 100644 --- a/Code/Framework/AzToolsFramework/Tests/AssetFileInfoListComparison.cpp +++ b/Code/Framework/AzToolsFramework/Tests/AssetFileInfoListComparison.cpp @@ -21,6 +21,7 @@ #include #include #include +#include namespace // anonymous { @@ -57,7 +58,8 @@ namespace UnitTest AZ::IO::FileIOBase::SetInstance(nullptr); AZ::IO::FileIOBase::SetInstance(m_localFileIO); - AZ::IO::FileIOBase::GetInstance()->SetAlias("@assets@", GetTestFolderPath().c_str()); + AZ::IO::FileIOBase::GetInstance()->SetAlias("@assets@", m_tempDir.GetDirectory()); + AZStd::string assetRoot = AzToolsFramework::PlatformAddressedAssetCatalog::GetAssetRootForPlatform(AzFramework::PlatformId::PC); for (int idx = 0; idx < TotalAssets; idx++) @@ -69,9 +71,11 @@ namespace UnitTest assetRegistry.RegisterAsset(m_assets[idx], info); AzFramework::StringFunc::Path::Join(assetRoot.c_str(), info.m_relativePath.c_str(), m_assetsPath[idx]); + AZ_TEST_START_TRACE_SUPPRESSION; if (m_fileStreams[idx].Open(m_assetsPath[idx].c_str(), AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeBinary | AZ::IO::OpenMode::ModeCreatePath)) { m_fileStreams[idx].Write(info.m_relativePath.size(), info.m_relativePath.data()); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // writing to asset cache folder } else { @@ -115,10 +119,12 @@ namespace UnitTest // Modify contents of asset2 int fileIndex = 2; + AZ_TEST_START_TRACE_SUPPRESSION; if (m_fileStreams[fileIndex].Open(m_assetsPath[fileIndex].c_str(), AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeBinary | AZ::IO::OpenMode::ModeCreatePath)) { AZStd::string fileContent = AZStd::string::format("new Asset%d.txt", fileIndex);// changing file content m_fileStreams[fileIndex].Write(fileContent.size(), fileContent.c_str()); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // writing to asset cache folder } else { @@ -127,10 +133,12 @@ namespace UnitTest // Modify contents of asset 4 fileIndex = 4; + AZ_TEST_START_TRACE_SUPPRESSION; if (m_fileStreams[fileIndex].Open(m_assetsPath[fileIndex].c_str(), AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeBinary | AZ::IO::OpenMode::ModeCreatePath)) { AZStd::string fileContent = AZStd::string::format("new Asset%d.txt", fileIndex);// changing file content m_fileStreams[fileIndex].Write(fileContent.size(), fileContent.c_str()); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // writing to asset cache folder } else { @@ -152,7 +160,9 @@ namespace UnitTest { if (fileIO->Exists(TempFiles[idx])) { + AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(TempFiles[idx]); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // deleting from asset cache folder } } @@ -163,14 +173,18 @@ namespace UnitTest m_fileStreams[idx].Close(); if (fileIO->Exists(m_assetsPath[idx].c_str())) { + AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(m_assetsPath[idx].c_str()); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // deleting from asset cache folder } } auto pcCatalogFile = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(AzFramework::PlatformId::PC); if (fileIO->Exists(pcCatalogFile.c_str())) { + AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(pcCatalogFile.c_str()); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // deleting from asset cache folder } delete m_pcCatalog; @@ -728,6 +742,7 @@ namespace UnitTest } ToolsTestApplication* m_application; + UnitTest::ScopedTemporaryDirectory m_tempDir; AzToolsFramework::PlatformAddressedAssetCatalog* m_pcCatalog; AZ::IO::FileIOBase* m_priorFileIO = nullptr; AZ::IO::FileIOBase* m_localFileIO = nullptr; diff --git a/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp b/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp index 52b8cc6a52..9ac53e4702 100644 --- a/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp +++ b/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp @@ -87,10 +87,12 @@ namespace UnitTest for (int idx = 0; idx < s_totalAssets; idx++) { AzFramework::StringFunc::Path::Join(assetRoot.c_str(), m_assetsPath[idx].c_str(), m_assetsPathFull[platformCount][idx]); + AZ_TEST_START_TRACE_SUPPRESSION; if (m_fileStreams[platformCount][idx].Open(m_assetsPathFull[platformCount][idx].c_str(), AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeBinary | AZ::IO::OpenMode::ModeCreatePath)) { m_fileStreams[platformCount][idx].Write(m_assetsPath[idx].size(), m_assetsPath[idx].data()); m_fileStreams[platformCount][idx].Close(); + AZ_TEST_STOP_TRACE_SUPPRESSION(thisPlatform == AzFramework::PlatformId::PC ? 1 : 0); // writing to asset cache folder, only invalid for PC } else { @@ -112,7 +114,9 @@ namespace UnitTest m_testDynamicSliceAssetId = testDynamicSliceAsset; m_assetRegistry->RegisterAsset(testDynamicSliceAsset, dynamicSliceAssetInfo); + AZ_TEST_START_TRACE_SUPPRESSION; AZ::IO::FileIOStream dynamicSliceFileIOStream(TestDynamicSliceAssetPath, AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeText); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // writing to asset cache folder AZ::Data::AssetInfo sliceAssetInfo; sliceAssetInfo.m_relativePath = TestSliceAssetPath; @@ -124,7 +128,9 @@ namespace UnitTest secondSliceAssetInfo.m_assetId = secondTestSliceAsset; m_assetRegistry->RegisterAsset(secondTestSliceAsset, secondSliceAssetInfo); + AZ_TEST_START_TRACE_SUPPRESSION; AZ::IO::FileIOStream sliceFileIOStream(TestSliceAssetPath, AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeText); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // writing to asset cache folder // asset0 -> asset1 -> asset2 -> asset4 // --> asset3 @@ -186,7 +192,6 @@ namespace UnitTest AZ::IO::Path assetRoot(AZ::Utils::GetProjectPath()); assetRoot /= "Cache"; AZ::IO::FileIOBase::GetInstance()->SetAlias("@root@", assetRoot.c_str()); - } void TearDown() override @@ -195,7 +200,9 @@ namespace UnitTest if (fileIO->Exists(s_catalogFile)) { + AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(s_catalogFile); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // deleting from asset cache folder } for (size_t platformCount = 0; platformCount < s_totalTestPlatforms; ++platformCount) @@ -206,26 +213,34 @@ namespace UnitTest // we need to close the handle before we try to remove the file if (fileIO->Exists(m_assetsPathFull[platformCount][idx].c_str())) { + AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(m_assetsPathFull[platformCount][idx].c_str()); + AZ_TEST_STOP_TRACE_SUPPRESSION(platformCount == 0 ? 1 : 0); // deleting from asset cache folder } } } if (fileIO->Exists(TestSliceAssetPath)) { + AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(TestSliceAssetPath); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // deleting from asset cache folder } if (fileIO->Exists(TestDynamicSliceAssetPath)) { + AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(TestDynamicSliceAssetPath); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // deleting from asset cache folder } auto pcCatalogFile = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(AzFramework::PlatformId::PC); auto androidCatalogFile = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(AzFramework::PlatformId::ANDROID_ID); if (fileIO->Exists(pcCatalogFile.c_str())) { + AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(pcCatalogFile.c_str()); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // deleting from asset cache folder } if (fileIO->Exists(androidCatalogFile.c_str())) @@ -629,11 +644,13 @@ namespace UnitTest EXPECT_EQ(assetList1.m_fileInfoList.size(), 1); EXPECT_TRUE(Search(assetList1, assets[fileIndex])); + AZ_TEST_START_TRACE_SUPPRESSION; if (m_fileStreams[0][fileIndex].Open(m_assetsPathFull[0][fileIndex].c_str(), AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeBinary | AZ::IO::OpenMode::ModeCreatePath)) { AZStd::string fileContent = AZStd::string::format("asset%d.txt", fileIndex); m_fileStreams[0][fileIndex].Write(fileContent.size(), fileContent.c_str()); m_fileStreams[0][fileIndex].Close(); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // writing to asset cache folder } AzToolsFramework::AssetFileInfoList assetList2 = m_assetSeedManager->GetDependencyList(AzFramework::PlatformId::PC); @@ -660,11 +677,13 @@ namespace UnitTest EXPECT_EQ(assetList1.m_fileInfoList.size(), 1); EXPECT_TRUE(Search(assetList1, assets[fileIndex])); + AZ_TEST_START_TRACE_SUPPRESSION; if (m_fileStreams[0][fileIndex].Open(m_assetsPathFull[0][fileIndex].c_str(), AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeBinary | AZ::IO::OpenMode::ModeCreatePath)) { AZStd::string fileContent = AZStd::string::format("asset%d.txt", fileIndex + 1);// changing file content m_fileStreams[0][fileIndex].Write(fileContent.size(), fileContent.c_str()); m_fileStreams[0][fileIndex].Close(); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // writing to asset cache folder } AzToolsFramework::AssetFileInfoList assetList2 = m_assetSeedManager->GetDependencyList(AzFramework::PlatformId::PC); diff --git a/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp b/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp index 29b48a1f31..3446f854b6 100644 --- a/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/PlatformAddressedAssetCatalogTests.cpp @@ -83,9 +83,11 @@ namespace UnitTest info.m_assetId = m_assets[platformNum][idx]; assetRegistry->RegisterAsset(m_assets[platformNum][idx], info); m_assetsPath[platformNum][idx] = info.m_relativePath; + AZ_TEST_START_TRACE_SUPPRESSION; if (m_fileStreams[platformNum][idx].Open(m_assetsPath[platformNum][idx].c_str(), AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeBinary | AZ::IO::OpenMode::ModeCreatePath)) { m_fileStreams[platformNum][idx].Write(info.m_relativePath.size(), info.m_relativePath.data()); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // writing to asset cache folder } else { @@ -131,7 +133,9 @@ namespace UnitTest m_fileStreams[platformNum][idx].Close(); if (fileIO->Exists(m_assetsPath[platformNum][idx].c_str())) { + AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(m_assetsPath[platformNum][idx].c_str()); + AZ_TEST_STOP_TRACE_SUPPRESSION(1); // removing from asset cache folder } } } From 104e0f73bf66345df328771d94c351353e1066ff Mon Sep 17 00:00:00 2001 From: lsemp3d <58790905+lsemp3d@users.noreply.github.com> Date: Wed, 14 Jul 2021 18:31:50 -0700 Subject: [PATCH 10/16] Fixed Lua class enumeration, there was a crash when traversing into methods Signed-off-by: lsemp3d <58790905+lsemp3d@users.noreply.github.com> --- .../AzCore/Script/ScriptContextDebug.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Code/Framework/AzCore/AzCore/Script/ScriptContextDebug.cpp b/Code/Framework/AzCore/AzCore/Script/ScriptContextDebug.cpp index b68b19ddda..0444c4ce2a 100644 --- a/Code/Framework/AzCore/AzCore/Script/ScriptContextDebug.cpp +++ b/Code/Framework/AzCore/AzCore/Script/ScriptContextDebug.cpp @@ -157,8 +157,11 @@ ScriptContextDebug::EnumRegisteredClasses(EnumClass enumClass, EnumMethod enumMe lua_pop(l, 2); // pop the Class name and behaviorClass lua_pushnil(l); + + // iterate over the key/value pairs while (lua_next(l, -2) != 0) { + // if key: string value: function if (lua_isstring(l, -2) && lua_isfunction(l, -1)) { const char* name = lua_tostring(l, -2); @@ -167,6 +170,7 @@ ScriptContextDebug::EnumRegisteredClasses(EnumClass enumClass, EnumMethod enumMe bool isRead = true; bool isWrite = true; + // check if there is a getter provided lua_getupvalue(l, -1, 1); if (lua_isnil(l, -1)) { @@ -174,6 +178,7 @@ ScriptContextDebug::EnumRegisteredClasses(EnumClass enumClass, EnumMethod enumMe } lua_pop(l, 1); + // check if there is a setter provided lua_getupvalue(l, -1, 2); if (lua_isnil(l, -1)) { @@ -181,6 +186,7 @@ ScriptContextDebug::EnumRegisteredClasses(EnumClass enumClass, EnumMethod enumMe } lua_pop(l, 1); + // enumerate the remaining property if (!enumProperty(&behaviorClass->m_typeId, name, isRead, isWrite, userData)) { lua_pop(l, 5); @@ -189,21 +195,30 @@ ScriptContextDebug::EnumRegisteredClasses(EnumClass enumClass, EnumMethod enumMe } else { + // for any non-built in methods if (strncmp(name, "__", 2) != 0) { const char* dbgParamInfo = NULL; - lua_getupvalue(l, -1, 2); + + // attempt to get the name + bool popDebugName = lua_getupvalue(l, -1, 2) != nullptr; if (lua_isstring(l, -1)) { dbgParamInfo = lua_tostring(l, -1); } + // enumerate the method's parameters if (!enumMethod(&behaviorClass->m_typeId, name, dbgParamInfo, userData)) { lua_pop(l, 6); return; } - lua_pop(l, 1); // pop the DBG name + + // if we were able to get the name, pop it from the stack + if (popDebugName) + { + lua_pop(l, 1); + } } } } From 0863a2449086d9ee4a5d7e2ad40dfc2ad348d603 Mon Sep 17 00:00:00 2001 From: Benjamin Jillich <43751992+amzn-jillich@users.noreply.github.com> Date: Thu, 15 Jul 2021 03:18:10 -0700 Subject: [PATCH 11/16] Revert "[MeshOptimizer] Determine the original vertex index based on the position (#2008)" (#2188) This reverts commit a077a88d3f7b066fd26446b7e6e821f66dcc9b9a due to assets failing on Jenkins. Signed-off-by: Benjamin Jillich --- .../SceneAPI/SceneData/Groups/MeshGroup.h | 24 +- Gems/SceneProcessing/Code/CMakeLists.txt | 1 - .../MeshOptimizer/MeshOptimizerComponent.cpp | 127 ++-------- .../MeshOptimizerComponentTests.cpp | 221 ------------------ .../sceneprocessing_editor_tests_files.cmake | 1 - 5 files changed, 34 insertions(+), 340 deletions(-) delete mode 100644 Gems/SceneProcessing/Code/Tests/MeshBuilder/MeshOptimizerComponentTests.cpp diff --git a/Code/Tools/SceneAPI/SceneData/Groups/MeshGroup.h b/Code/Tools/SceneAPI/SceneData/Groups/MeshGroup.h index 5b4c4612ad..c06c91a808 100644 --- a/Code/Tools/SceneAPI/SceneData/Groups/MeshGroup.h +++ b/Code/Tools/SceneAPI/SceneData/Groups/MeshGroup.h @@ -28,27 +28,27 @@ namespace AZ } namespace SceneData { - class SCENE_DATA_CLASS MeshGroup + class MeshGroup : public DataTypes::IMeshGroup { public: AZ_RTTI(MeshGroup, "{07B356B7-3635-40B5-878A-FAC4EFD5AD86}", DataTypes::IMeshGroup); AZ_CLASS_ALLOCATOR(MeshGroup, SystemAllocator, 0) - SCENE_DATA_API MeshGroup(); - SCENE_DATA_API ~MeshGroup() override = default; + MeshGroup(); + ~MeshGroup() override = default; - SCENE_DATA_API const AZStd::string& GetName() const override; - SCENE_DATA_API void SetName(const AZStd::string& name); - SCENE_DATA_API void SetName(AZStd::string&& name) override; - SCENE_DATA_API const Uuid& GetId() const override; - SCENE_DATA_API void OverrideId(const Uuid& id) override; + const AZStd::string& GetName() const override; + void SetName(const AZStd::string& name); + void SetName(AZStd::string&& name) override; + const Uuid& GetId() const override; + void OverrideId(const Uuid& id) override; - SCENE_DATA_API Containers::RuleContainer& GetRuleContainer() override; - SCENE_DATA_API const Containers::RuleContainer& GetRuleContainerConst() const override; + Containers::RuleContainer& GetRuleContainer() override; + const Containers::RuleContainer& GetRuleContainerConst() const override; - SCENE_DATA_API DataTypes::ISceneNodeSelectionList& GetSceneNodeSelectionList() override; - SCENE_DATA_API const DataTypes::ISceneNodeSelectionList& GetSceneNodeSelectionList() const override; + DataTypes::ISceneNodeSelectionList& GetSceneNodeSelectionList() override; + const DataTypes::ISceneNodeSelectionList& GetSceneNodeSelectionList() const override; static void Reflect(AZ::ReflectContext* context); static bool VersionConverter(SerializeContext& context, SerializeContext::DataElementNode& classElement); diff --git a/Gems/SceneProcessing/Code/CMakeLists.txt b/Gems/SceneProcessing/Code/CMakeLists.txt index 57fc458d70..b33e157e51 100644 --- a/Gems/SceneProcessing/Code/CMakeLists.txt +++ b/Gems/SceneProcessing/Code/CMakeLists.txt @@ -112,7 +112,6 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) PRIVATE Gem::SceneProcessing.Editor.Static AZ::AzTest - AZ::SceneData ) ly_add_googletest( NAME Gem::SceneProcessing.Editor.Tests diff --git a/Gems/SceneProcessing/Code/Source/Generation/Components/MeshOptimizer/MeshOptimizerComponent.cpp b/Gems/SceneProcessing/Code/Source/Generation/Components/MeshOptimizer/MeshOptimizerComponent.cpp index 634dafa99c..e3eb617601 100644 --- a/Gems/SceneProcessing/Code/Source/Generation/Components/MeshOptimizer/MeshOptimizerComponent.cpp +++ b/Gems/SceneProcessing/Code/Source/Generation/Components/MeshOptimizer/MeshOptimizerComponent.cpp @@ -96,85 +96,6 @@ namespace AZ::SceneGenerationComponents namespace Containers = AZ::SceneAPI::Containers; namespace Views = Containers::Views; - // @brief A class to map from a mesh's vertex index to it's welded vertex index - // - // When the mesh optimizer runs, it welds nearby vertices (if there are no blendshapes). This class provides a - // constant time lookup to map from an unwelded vertex index to the welded one. - // The welding works by rounding the vertex's position to the given position tolerance, then uses that rounded - // Vector3 as a key into a unordered_map. - template - class Vector3Map - : private AZStd::unordered_map - { - public: - Vector3Map(const MeshDataType* meshData, bool hasBlendShapes, float positionTolerance) - : m_meshData(meshData) - , m_hasBlendShapes(hasBlendShapes) - , m_positionTolerance(positionTolerance) - , m_positionToleranceReciprocal(1.0f / positionTolerance) - { - } - - using AZStd::unordered_map::reserve; - - AZ::u32 operator[](const AZ::u32 vertexIndex) - { - if (m_hasBlendShapes) - { - // Don't attempt to weld similar vertices if there's blendshapes - // Welding the vertices here based on position could cause the vertices of a base shape to be welded, - // and the vertices of the blendshape to not be welded, resulting in a vertex count mismatch between - // the two - return m_meshData->GetUsedPointIndexForControlPoint(m_meshData->GetControlPointIndex(vertexIndex)); - } - - const auto& [iter, didInsert] = try_emplace(GetPositionForIndex(vertexIndex), m_currentOriginalVertexIndex); - if (didInsert) - { - ++m_currentOriginalVertexIndex; - } - return iter->second; - } - - [[nodiscard]] AZ::u32 at(const AZ::u32 vertexIndex) const - { - if (m_hasBlendShapes) - { - // Don't attempt to weld similar vertices if there's blendshapes - // Welding the vertices here based on position could cause the vertices of a base shape to be welded, - // and the vertices of the blendshape to not be welded, resulting in a vertex count mismatch between - // the two - return m_meshData->GetUsedPointIndexForControlPoint(m_meshData->GetControlPointIndex(vertexIndex)); - } - - auto iter = find(GetPositionForIndex(vertexIndex)); - AZSTD_CONTAINER_ASSERT(iter != end(), "Element with key is not present"); - return iter->second; - } - - private: - - AZ::Vector3 GetPositionForIndex(const AZ::u32 vertexIndex) const - { - // Round the vertex position so that a float comparison can be made with entires in the map - // pos = floor( x * 10 + 0.5) * 0.1 - return AZ::Vector3( - AZ::Simd::Vec3::Floor( - (m_meshData->GetPosition(vertexIndex) * m_positionToleranceReciprocal + AZ::Vector3(0.5f)).GetSimdValue() - ) - ) * m_positionTolerance; - } - - const MeshDataType* m_meshData; - bool m_hasBlendShapes; - float m_positionTolerance; - float m_positionToleranceReciprocal; - AZ::u32 m_currentOriginalVertexIndex = 0; - }; - - template - Vector3Map(const MeshDataType*) -> Vector3Map; - MeshOptimizerComponent::MeshOptimizerComponent() { BindToCall(&MeshOptimizerComponent::OptimizeMeshes); @@ -185,7 +106,7 @@ namespace AZ::SceneGenerationComponents auto* serializeContext = azrtti_cast(context); if (serializeContext) { - serializeContext->Class()->Version(4); + serializeContext->Class()->Version(2); } } @@ -194,8 +115,7 @@ namespace AZ::SceneGenerationComponents const MeshDataType* meshData, const SkinWeightDataView& skinWeights, AZ::u32 maxWeightsPerVertex, - float weightThreshold, - const Vector3Map& positionMap) + float weightThreshold) { if (skinWeights.empty()) { @@ -221,12 +141,15 @@ namespace AZ::SceneGenerationComponents for (size_t linkIndex = 0; linkIndex < linkCount; ++linkIndex) { const ISkinWeightData::Link& link = skinData.get().GetLink(controlPointIndex, linkIndex); - skinningInfo->AddInfluence(positionMap.at(usedPointIndex), {aznumeric_caster(link.boneId), link.weight}); + skinningInfo->AddInfluence(usedPointIndex, {aznumeric_caster(link.boneId), link.weight}); } } } - skinningInfo->Optimize(maxWeightsPerVertex, weightThreshold); + if (skinningInfo) + { + skinningInfo->Optimize(maxWeightsPerVertex, weightThreshold); + } return skinningInfo; } @@ -269,12 +192,17 @@ namespace AZ::SceneGenerationComponents const AZStd::vector> meshes = [](const SceneGraph& graph) { AZStd::vector> meshes; - const auto meshNodes = Containers::MakeDerivedFilterView(graph.GetContentStorage()); - for (auto it = meshNodes.cbegin(); it != meshNodes.cend(); ++it) + for (auto it = graph.GetContentStorage().cbegin(); it != graph.GetContentStorage().cend(); ++it) { + // Skip anything that isn't a mesh. + const auto* mesh = azdynamic_cast(it->get()); + if (!mesh) + { + continue; + } + // Get the mesh data and node index and store them in the vector as a pair, so we can iterate over them later. - // The sequential calls to GetBaseIterator unwrap the layers of FilterIterators from the MakeDerivedFilterView - meshes.emplace_back(&(*it), graph.ConvertToNodeIndex(it.GetBaseIterator().GetBaseIterator().GetBaseIterator())); + meshes.emplace_back(mesh, graph.ConvertToNodeIndex(it)); } return meshes; }(graph); @@ -359,12 +287,6 @@ namespace AZ::SceneGenerationComponents auto [optimizedMesh, optimizedUVs, optimizedTangents, optimizedBitangents, optimizedVertexColors, optimizedSkinWeights] = OptimizeMesh(mesh, mesh, uvDatas, tangentDatas, bitangentDatas, colorDatas, skinWeightDatas, meshGroup, hasBlendShapes); - AZ_TracePrintf(AZ::SceneAPI::Utilities::LogWindow, "Base mesh: %zu vertices, optimized mesh: %zu vertices, %0.02f%% of the original", - mesh->GetUsedControlPointCount(), - optimizedMesh->GetUsedControlPointCount(), - ((float)optimizedMesh->GetUsedControlPointCount() / (float)mesh->GetUsedControlPointCount()) * 100.0f - ); - const NodeIndex optimizedMeshNodeIndex = graph.AddChild(graph.GetNodeParent(nodeIndex), name.c_str(), AZStd::move(optimizedMesh)); auto addOptimizedNodes = [&graph, &optimizedMeshNodeIndex](const auto& originalNodeIndexes, auto& optimizedNodes) @@ -506,9 +428,10 @@ namespace AZ::SceneGenerationComponents const AZStd::vector bitangentLayers = makeLayersForData(bitangents); const AZStd::vector vertexColorLayers = makeLayersForData(vertexColors); - constexpr float positionTolerance = 0.0001f; - Vector3Map positionMap(meshData, hasBlendShapes, positionTolerance); - positionMap.reserve(vertexCount); + const auto* skinRule = meshGroup.GetRuleContainerConst().FindFirstByType().get(); + const AZ::u32 maxWeightsPerVertex = skinRule ? skinRule->GetMaxWeightsPerVertex() : 4; + const float weightThreshold = skinRule ? skinRule->GetWeightThreshold() : 0.001f; + meshBuilder.SetSkinningInfo(ExtractSkinningInfo(meshData, skinWeights, maxWeightsPerVertex, weightThreshold)); // Add the vertex data to all the layers const AZ::u32 faceCount = meshData->GetFaceCount(); @@ -517,8 +440,8 @@ namespace AZ::SceneGenerationComponents meshBuilder.BeginPolygon(baseMesh->GetFaceMaterialId(faceIndex)); for (const AZ::u32 vertexIndex : meshData->GetFaceInfo(faceIndex).vertexIndex) { - const AZ::u32 orgVertexNumber = positionMap[vertexIndex]; - + const int orgVertexNumber = meshData->GetUsedPointIndexForControlPoint(meshData->GetControlPointIndex(vertexIndex)); + AZ_Assert(orgVertexNumber >= 0, "Invalid vertex number"); orgVtxLayer->SetCurrentVertexValue(orgVertexNumber); posLayer->SetCurrentVertexValue(meshData->GetPosition(vertexIndex)); @@ -548,12 +471,6 @@ namespace AZ::SceneGenerationComponents meshBuilder.EndPolygon(); } - - const auto* skinRule = meshGroup.GetRuleContainerConst().FindFirstByType().get(); - const AZ::u32 maxWeightsPerVertex = skinRule ? skinRule->GetMaxWeightsPerVertex() : 4; - const float weightThreshold = skinRule ? skinRule->GetWeightThreshold() : 0.001f; - meshBuilder.SetSkinningInfo(ExtractSkinningInfo(meshData, skinWeights, maxWeightsPerVertex, weightThreshold, positionMap)); - meshBuilder.GenerateSubMeshVertexOrders(); // Create the resulting nodes diff --git a/Gems/SceneProcessing/Code/Tests/MeshBuilder/MeshOptimizerComponentTests.cpp b/Gems/SceneProcessing/Code/Tests/MeshBuilder/MeshOptimizerComponentTests.cpp deleted file mode 100644 index 81528fc3e4..0000000000 --- a/Gems/SceneProcessing/Code/Tests/MeshBuilder/MeshOptimizerComponentTests.cpp +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -namespace AZ::SceneAPI::DataTypes -{ - void PrintTo(const ISkinWeightData::Link& link, ::std::ostream* os) - { - *os << '{' << link.boneId << ", " << link.weight << '}'; - } -} - -namespace SceneProcessing -{ - class VertexDeduplicationFixture - : public SceneProcessing::InitSceneAPIFixture - { - public: - void SetUp() override - { - SceneProcessing::InitSceneAPIFixture::SetUp(); - - m_systemEntity = m_app.Create({}, {}); - m_systemEntity->AddComponent(aznew AZ::MemoryComponent()); - m_systemEntity->AddComponent(aznew AZ::JobManagerComponent()); - m_systemEntity->Init(); - m_systemEntity->Activate(); - } - void TearDown() override - { - m_systemEntity->Deactivate(); - SceneProcessing::InitSceneAPIFixture::TearDown(); - } - - static AZStd::unique_ptr MakePlaneMesh() - { - // Create a simple plane with 2 triangles, 6 total vertices, 2 shared vertices - // 0 --- 1 - // | / | - // | / | - // | / | - // 2 --- 3 - const AZStd::array planeVertexPositions = { - AZ::Vector3{0.0f, 0.0f, 0.0f}, - AZ::Vector3{0.0f, 0.0f, 1.0f}, - AZ::Vector3{1.0f, 0.0f, 1.0f}, - AZ::Vector3{1.0f, 0.0f, 1.0f}, - AZ::Vector3{1.0f, 0.0f, 0.0f}, - AZ::Vector3{0.0f, 0.0f, 0.0f}, - }; - - auto mesh = AZStd::make_unique(); - - int i = 0; - for (const AZ::Vector3& position : planeVertexPositions) - { - mesh->AddPosition(position); - mesh->AddNormal(AZ::Vector3::CreateAxisY()); - - // This assumes that the data coming from the import process gives a unique control point - // index to every vertex. This follows the behavior of the AssImp library. - mesh->SetVertexIndexToControlPointIndexMap(i, i); - ++i; - } - - mesh->AddFace({0, 1, 2}, 0); - mesh->AddFace({3, 4, 5}, 0); - - return mesh; - } - - static AZStd::unique_ptr MakeSkinData() - { - auto skinWeights = AZStd::make_unique(); - - skinWeights->ResizeContainerSpace(6); - - // Add bones 0 and 1 to the skin weights - skinWeights->GetBoneId("0"); - skinWeights->GetBoneId("1"); - - skinWeights->AppendLink(0, {/*.boneId=*/0, /*.weight=*/1}); - skinWeights->AppendLink(1, {/*.boneId=*/0, /*.weight=*/1}); - skinWeights->AppendLink(2, {/*.boneId=*/0, /*.weight=*/1}); - skinWeights->AppendLink(3, {/*.boneId=*/1, /*.weight=*/1}); - skinWeights->AppendLink(4, {/*.boneId=*/1, /*.weight=*/1}); - skinWeights->AppendLink(5, {/*.boneId=*/1, /*.weight=*/1}); - - return skinWeights; - } - - private: - AZ::ComponentApplication m_app; - AZ::Entity* m_systemEntity; - }; - - TEST_F(VertexDeduplicationFixture, CanDeduplicateVertices) - { - AZ::SceneAPI::Containers::Scene scene("testScene"); - AZ::SceneAPI::Containers::SceneGraph& graph = scene.GetGraph(); - - const auto meshNodeIndex = graph.AddChild(graph.GetRoot(), "testMesh", MakePlaneMesh()); - - // The original source mesh should have 6 vertices - EXPECT_EQ(AZStd::rtti_pointer_cast(graph.GetNodeContent(meshNodeIndex))->GetVertexCount(), 6); - - auto meshGroup = AZStd::make_unique(); - meshGroup->GetSceneNodeSelectionList().AddSelectedNode("testMesh"); - scene.GetManifest().AddEntry(AZStd::move(meshGroup)); - - AZ::SceneGenerationComponents::MeshOptimizerComponent component; - AZ::SceneAPI::Events::GenerateSimplificationEventContext context(scene, "pc"); - component.OptimizeMeshes(context); - - AZ::SceneAPI::Containers::SceneGraph::NodeIndex optimizedNodeIndex = graph.Find(AZStd::string("testMesh").append(AZ::SceneAPI::Utilities::OptimizedMeshSuffix)); - ASSERT_TRUE(optimizedNodeIndex.IsValid()) << "Mesh optimizer did not add an optimized version of the mesh"; - - const auto& optimizedMesh = AZStd::rtti_pointer_cast(graph.GetNodeContent(optimizedNodeIndex)); - ASSERT_TRUE(optimizedMesh); - - // The optimized mesh should have 4 vertices, the 2 shared vertices are welded together - EXPECT_EQ(optimizedMesh->GetVertexCount(), 4); - } - - MATCHER(VectorOfLinksEq, "") - { - return testing::ExplainMatchResult( - testing::AllOf( - testing::Field(&AZ::SceneData::GraphData::SkinWeightData::Link::boneId, testing::Eq(testing::get<0>(arg).boneId)), - testing::Field(&AZ::SceneData::GraphData::SkinWeightData::Link::weight, testing::FloatEq(testing::get<0>(arg).weight)) - ), - testing::get<1>(arg), - result_listener - ); - } - - MATCHER(VectorOfVectorOfLinksEq, "") - { - return testing::ExplainMatchResult( - testing::UnorderedPointwise(VectorOfLinksEq(), testing::get<0>(arg)), - testing::get<1>(arg), - result_listener - ); - } - - TEST_F(VertexDeduplicationFixture, DeduplicatedVerticesRemapSkinning) - { - AZ::SceneAPI::Containers::Scene scene("testScene"); - AZ::SceneAPI::Containers::SceneGraph& graph = scene.GetGraph(); - - const auto meshNodeIndex = graph.AddChild(graph.GetRoot(), "testMesh", MakePlaneMesh()); - const auto skinDataNodeIndex = graph.AddChild(meshNodeIndex, "skinData", MakeSkinData()); - graph.MakeEndPoint(skinDataNodeIndex); - - // The original source mesh should have 6 vertices - EXPECT_EQ(AZStd::rtti_pointer_cast(graph.GetNodeContent(meshNodeIndex))->GetVertexCount(), 6); - - auto meshGroup = AZStd::make_unique(); - meshGroup->GetSceneNodeSelectionList().AddSelectedNode("testMesh"); - scene.GetManifest().AddEntry(AZStd::move(meshGroup)); - - AZ::SceneGenerationComponents::MeshOptimizerComponent component; - AZ::SceneAPI::Events::GenerateSimplificationEventContext context(scene, "pc"); - component.OptimizeMeshes(context); - - AZ::SceneAPI::Containers::SceneGraph::NodeIndex optimizedNodeIndex = graph.Find(AZStd::string("testMesh").append(AZ::SceneAPI::Utilities::OptimizedMeshSuffix)); - ASSERT_TRUE(optimizedNodeIndex.IsValid()) << "Mesh optimizer did not add an optimized version of the mesh"; - - const auto& optimizedMesh = AZStd::rtti_pointer_cast(graph.GetNodeContent(optimizedNodeIndex)); - ASSERT_TRUE(optimizedMesh); - - AZ::SceneAPI::Containers::SceneGraph::NodeIndex optimizedSkinDataNodeIndex = graph.Find(AZStd::string("testMesh").append(AZ::SceneAPI::Utilities::OptimizedMeshSuffix).append(".skinWeights")); - ASSERT_TRUE(optimizedSkinDataNodeIndex.IsValid()) << "Mesh optimizer did not add an optimized version of the skin data"; - - const auto& optimizedSkinWeights = AZStd::rtti_pointer_cast(graph.GetNodeContent(optimizedSkinDataNodeIndex)); - ASSERT_TRUE(optimizedSkinWeights); - - const AZStd::vector> expectedLinks - { - /*0*/ { {0, 0.5f}, {1, 0.5f} }, - /*1*/ { {0, 1.0f} }, - /*2*/ { {0, 0.5f}, {1, 0.5f} }, - /*3*/ { {1, 1.0f} }, - }; - - AZStd::vector> gotLinks(optimizedMesh->GetVertexCount()); - for (unsigned int vertexIndex = 0; vertexIndex < optimizedMesh->GetVertexCount(); ++vertexIndex) - { - for (size_t linkIndex = 0; linkIndex < optimizedSkinWeights->GetLinkCount(vertexIndex); ++linkIndex) - { - gotLinks[vertexIndex].emplace_back(optimizedSkinWeights->GetLink(vertexIndex, linkIndex)); - } - } - EXPECT_THAT(gotLinks, testing::Pointwise(VectorOfVectorOfLinksEq(), expectedLinks)); - } -} // namespace SceneProcessing diff --git a/Gems/SceneProcessing/Code/sceneprocessing_editor_tests_files.cmake b/Gems/SceneProcessing/Code/sceneprocessing_editor_tests_files.cmake index c06d21233d..9ebe2291a3 100644 --- a/Gems/SceneProcessing/Code/sceneprocessing_editor_tests_files.cmake +++ b/Gems/SceneProcessing/Code/sceneprocessing_editor_tests_files.cmake @@ -7,7 +7,6 @@ set(FILES Tests/InitSceneAPIFixture.h - Tests/MeshBuilder/MeshOptimizerComponentTests.cpp Tests/MeshBuilder/MeshBuilderTests.cpp Tests/MeshBuilder/MeshVerticesTests.cpp Tests/MeshBuilder/SkinInfluencesTests.cpp From 4aebea61af8f1dda209b915a48739a1c98cad4e4 Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Thu, 15 Jul 2021 09:42:02 -0700 Subject: [PATCH 12/16] Fixes for Jenkins Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- .../AzToolsFramework/Tests/ArchiveTests.cpp | 12 +++++++++ .../Tests/AssetSeedManager.cpp | 26 +++++++++---------- .../AzToolsFramework/Tests/FileFunc.cpp | 2 ++ 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/Code/Framework/AzToolsFramework/Tests/ArchiveTests.cpp b/Code/Framework/AzToolsFramework/Tests/ArchiveTests.cpp index 3b08e04304..71b86f6ef4 100644 --- a/Code/Framework/AzToolsFramework/Tests/ArchiveTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/ArchiveTests.cpp @@ -130,7 +130,11 @@ namespace UnitTest UnitTest::ScopedTemporaryDirectory m_tempDir; }; +#if AZ_TRAIT_DISABLE_FAILED_ARCHIVE_TESTS + TEST_F(ArchiveTest, DISABLED_CreateArchiveBlocking_FilesAtThreeDepths_ArchiveCreated) +#else TEST_F(ArchiveTest, CreateArchiveBlocking_FilesAtThreeDepths_ArchiveCreated) +#endif // AZ_TRAIT_DISABLE_FAILED_ARCHIVE_TESTS { EXPECT_TRUE(m_tempDir.IsValid()); CreateArchiveFolder(); @@ -140,7 +144,11 @@ namespace UnitTest EXPECT_EQ(createResult, true); } +#if AZ_TRAIT_DISABLE_FAILED_ARCHIVE_TESTS + TEST_F(ArchiveTest, DISABLED_ListFilesInArchiveBlocking_FilesAtThreeDepths_FilesFound) +#else TEST_F(ArchiveTest, ListFilesInArchiveBlocking_FilesAtThreeDepths_FilesFound) +#endif // AZ_TRAIT_DISABLE_FAILED_ARCHIVE_TESTS { EXPECT_TRUE(m_tempDir.IsValid()); CreateArchiveFolder(); @@ -154,7 +162,11 @@ namespace UnitTest EXPECT_EQ(fileList.size(), 6); } +#if AZ_TRAIT_DISABLE_FAILED_ARCHIVE_TESTS + TEST_F(ArchiveTest, DISABLED_CreateDeltaCatalog_AssetsNotRegistered_Failure) +#else TEST_F(ArchiveTest, CreateDeltaCatalog_AssetsNotRegistered_Failure) +#endif // AZ_TRAIT_DISABLE_FAILED_ARCHIVE_TESTS { QStringList fileList = CreateArchiveFileList(); diff --git a/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp b/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp index 9ac53e4702..dafd2faa4a 100644 --- a/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp +++ b/Code/Framework/AzToolsFramework/Tests/AssetSeedManager.cpp @@ -92,7 +92,7 @@ namespace UnitTest { m_fileStreams[platformCount][idx].Write(m_assetsPath[idx].size(), m_assetsPath[idx].data()); m_fileStreams[platformCount][idx].Close(); - AZ_TEST_STOP_TRACE_SUPPRESSION(thisPlatform == AzFramework::PlatformId::PC ? 1 : 0); // writing to asset cache folder, only invalid for PC + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // writing to asset cache folder, only invalid for PC, not invalid in Jenkins } else { @@ -116,7 +116,7 @@ namespace UnitTest AZ_TEST_START_TRACE_SUPPRESSION; AZ::IO::FileIOStream dynamicSliceFileIOStream(TestDynamicSliceAssetPath, AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeText); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); // writing to asset cache folder + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // writing to asset cache folder, not invalid in Jenkins AZ::Data::AssetInfo sliceAssetInfo; sliceAssetInfo.m_relativePath = TestSliceAssetPath; @@ -130,7 +130,7 @@ namespace UnitTest AZ_TEST_START_TRACE_SUPPRESSION; AZ::IO::FileIOStream sliceFileIOStream(TestSliceAssetPath, AZ::IO::OpenMode::ModeWrite | AZ::IO::OpenMode::ModeText); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); // writing to asset cache folder + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // writing to asset cache folder, not invalid in Jenkins // asset0 -> asset1 -> asset2 -> asset4 // --> asset3 @@ -202,7 +202,7 @@ namespace UnitTest { AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(s_catalogFile); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); // deleting from asset cache folder + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // deleting from asset cache folder, not invalid in Jenkins } for (size_t platformCount = 0; platformCount < s_totalTestPlatforms; ++platformCount) @@ -215,7 +215,7 @@ namespace UnitTest { AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(m_assetsPathFull[platformCount][idx].c_str()); - AZ_TEST_STOP_TRACE_SUPPRESSION(platformCount == 0 ? 1 : 0); // deleting from asset cache folder + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // deleting from asset cache folder, not invalid in Jenkins } } } @@ -224,14 +224,14 @@ namespace UnitTest { AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(TestSliceAssetPath); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); // deleting from asset cache folder + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // deleting from asset cache folder, not invalid in Jenkins } if (fileIO->Exists(TestDynamicSliceAssetPath)) { AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(TestDynamicSliceAssetPath); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); // deleting from asset cache folder + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // deleting from asset cache folder, not invalid in Jenkins } auto pcCatalogFile = AzToolsFramework::PlatformAddressedAssetCatalog::GetCatalogRegistryPathForPlatform(AzFramework::PlatformId::PC); @@ -240,7 +240,7 @@ namespace UnitTest { AZ_TEST_START_TRACE_SUPPRESSION; fileIO->Remove(pcCatalogFile.c_str()); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); // deleting from asset cache folder + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // deleting from asset cache folder, not invalid in Jenkins } if (fileIO->Exists(androidCatalogFile.c_str())) @@ -283,7 +283,7 @@ namespace UnitTest // Attempt to save to the same file. Should not be allowed. AZ_TEST_START_TRACE_SUPPRESSION; EXPECT_FALSE(m_assetSeedManager->Save(filePath)); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // writing to asset cache folder, not invalid in Jenkins // Clean up the test environment AZ::IO::SystemFile::SetWritable(filePath.c_str(), true); @@ -309,7 +309,7 @@ namespace UnitTest // Attempt to save to the same file. Should not be allowed. AZ_TEST_START_TRACE_SUPPRESSION; EXPECT_FALSE(m_assetSeedManager->SaveAssetFileInfo(filePath, AzFramework::PlatformFlags::Platform_PC, {})); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // writing to asset cache folder, not invalid in Jenkins // Clean up the test environment AZ::IO::SystemFile::SetWritable(filePath.c_str(), true); @@ -378,7 +378,7 @@ namespace UnitTest // Step we are testing AZ_TEST_START_TRACE_SUPPRESSION; m_assetSeedManager->AddPlatformToAllSeeds(AzFramework::PlatformId::ANDROID_ID); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // writing to asset cache folder, not invalid in Jenkins // Verification AzFramework::PlatformFlags expectedPlatformFlags = AzFramework::PlatformFlags::Platform_PC | AzFramework::PlatformFlags::Platform_ANDROID; @@ -650,7 +650,7 @@ namespace UnitTest AZStd::string fileContent = AZStd::string::format("asset%d.txt", fileIndex); m_fileStreams[0][fileIndex].Write(fileContent.size(), fileContent.c_str()); m_fileStreams[0][fileIndex].Close(); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); // writing to asset cache folder + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // writing to asset cache folder, not invalid in Jenkins } AzToolsFramework::AssetFileInfoList assetList2 = m_assetSeedManager->GetDependencyList(AzFramework::PlatformId::PC); @@ -683,7 +683,7 @@ namespace UnitTest AZStd::string fileContent = AZStd::string::format("asset%d.txt", fileIndex + 1);// changing file content m_fileStreams[0][fileIndex].Write(fileContent.size(), fileContent.c_str()); m_fileStreams[0][fileIndex].Close(); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); // writing to asset cache folder + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // writing to asset cache folder, not invalid in Jenkins } AzToolsFramework::AssetFileInfoList assetList2 = m_assetSeedManager->GetDependencyList(AzFramework::PlatformId::PC); diff --git a/Code/Framework/AzToolsFramework/Tests/FileFunc.cpp b/Code/Framework/AzToolsFramework/Tests/FileFunc.cpp index 420caa0f55..124e9af0f2 100644 --- a/Code/Framework/AzToolsFramework/Tests/FileFunc.cpp +++ b/Code/Framework/AzToolsFramework/Tests/FileFunc.cpp @@ -47,11 +47,13 @@ namespace UnitTest void SetUp() { m_prevFileIO = AZ::IO::FileIOBase::GetInstance(); + AZ::IO::FileIOBase::SetInstance(nullptr); AZ::IO::FileIOBase::SetInstance(&m_fileIO); } void TearDown() override { + AZ::IO::FileIOBase::SetInstance(nullptr); AZ::IO::FileIOBase::SetInstance(m_prevFileIO); } From 087c9f6edb4c1f26617874e67a87dc77f20a9d3b Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Thu, 15 Jul 2021 11:40:34 -0700 Subject: [PATCH 13/16] more fixes for Jenkins vs local behavior Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- .../AzToolsFramework/Tests/Prefab/PrefabLoadTemplateTests.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabLoadTemplateTests.cpp b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabLoadTemplateTests.cpp index bf47e57206..a3d6cafd2a 100644 --- a/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabLoadTemplateTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Prefab/PrefabLoadTemplateTests.cpp @@ -336,7 +336,7 @@ namespace UnitTest templateData.m_id = m_prefabLoaderInterface->LoadTemplateFromString( selfDependentPrefabStr, templateData.m_filePath); - AZ_TEST_STOP_TRACE_SUPPRESSION(3); + AZ_TEST_STOP_TRACE_SUPPRESSION_NO_COUNT; // produces different counts in Jenkins vs local templateData.m_isLoadedWithErrors = true; From 7ef383580e486a93df633482e7ec6275c7fb7e9e Mon Sep 17 00:00:00 2001 From: moudgils <47460854+moudgils@users.noreply.github.com> Date: Thu, 15 Jul 2021 11:50:19 -0700 Subject: [PATCH 14/16] Metal sync interval support (#2187) * Metal sync interval support Add shader name to SRGPool for debugging purposes Set default value of rpi_vsync_interval to 1 Signed-off-by: moudgils --- .../Source/Platform/Mac/RHI/Metal_RHI_Mac.cpp | 33 ++++++++++++++++--- .../Source/Platform/iOS/RHI/Metal_RHI_iOS.cpp | 16 ++++++--- .../RHI/Metal/Code/Source/RHI/SwapChain.cpp | 17 +++++++--- .../RHI/Metal/Code/Source/RHI/SwapChain.h | 1 + .../Shader/ShaderResourceGroupPool.cpp | 4 +-- .../Code/Source/RPI.Public/WindowContext.cpp | 2 +- 6 files changed, 57 insertions(+), 16 deletions(-) diff --git a/Gems/Atom/RHI/Metal/Code/Source/Platform/Mac/RHI/Metal_RHI_Mac.cpp b/Gems/Atom/RHI/Metal/Code/Source/Platform/Mac/RHI/Metal_RHI_Mac.cpp index de3bc23a11..cb9e72118a 100644 --- a/Gems/Atom/RHI/Metal/Code/Source/Platform/Mac/RHI/Metal_RHI_Mac.cpp +++ b/Gems/Atom/RHI/Metal/Code/Source/Platform/Mac/RHI/Metal_RHI_Mac.cpp @@ -43,11 +43,36 @@ namespace Platform } return physicalDeviceList; } - - void PresentInternal(id mtlCommandBuffer, id drawable, float syncInterval) + + float GetRefreshRate() { - AZ_UNUSED(syncInterval); - [mtlCommandBuffer presentDrawable:drawable]; + CGDirectDisplayID display = CGMainDisplayID(); + CGDisplayModeRef currentMode = CGDisplayCopyDisplayMode(display); + return CGDisplayModeGetRefreshRate(currentMode); + } + + void PresentInternal(id mtlCommandBuffer, id drawable, float syncInterval, float refreshRate) + { + bool framePresented = false; + + //seconds per frame (1/refreshrate) * num frames (sync interval) + float presentAfterMinimumDuration = syncInterval / refreshRate; + +#if defined(__MAC_10_15_4) + if(@available(macOS 10.15.4, *)) + { + if(presentAfterMinimumDuration > 0.0f) + { + [mtlCommandBuffer presentDrawable:drawable afterMinimumDuration:presentAfterMinimumDuration]; + framePresented = true; + } + } +#endif + + if(!framePresented) + { + [mtlCommandBuffer presentDrawable:drawable]; + } } CGRect GetScreenBounds(NativeWindowType* nativeWindow) diff --git a/Gems/Atom/RHI/Metal/Code/Source/Platform/iOS/RHI/Metal_RHI_iOS.cpp b/Gems/Atom/RHI/Metal/Code/Source/Platform/iOS/RHI/Metal_RHI_iOS.cpp index b7c309fba2..007655a93e 100644 --- a/Gems/Atom/RHI/Metal/Code/Source/Platform/iOS/RHI/Metal_RHI_iOS.cpp +++ b/Gems/Atom/RHI/Metal/Code/Source/Platform/iOS/RHI/Metal_RHI_iOS.cpp @@ -29,13 +29,19 @@ namespace Platform return physicalDeviceList; } - void PresentInternal(id mtlCommandBuffer, id drawable, float syncInterval) + float GetRefreshRate() { - bool hasPresentAfterMinimumDuration = [drawable respondsToSelector:@selector(presentAfterMinimumDuration:)]; - - if (hasPresentAfterMinimumDuration && syncInterval > 0.0f) + NativeScreenType* nativeScreen = [NativeScreenType mainScreen]; + return [nativeScreen maximumFramesPerSecond]; + } + + void PresentInternal(id mtlCommandBuffer, id drawable, float syncInterval, float refreshRate) + { + //seconds per frame (1/refreshrate) * num frames (sync interval) + float presentAfterMinimumDuration = syncInterval / refreshRate; + if (hasPresentAfterMinimumDuration > 0.0f) { - [mtlCommandBuffer presentDrawable:drawable afterMinimumDuration:syncInterval]; + [mtlCommandBuffer presentDrawable:drawable afterMinimumDuration:presentAfterMinimumDuration]; } else { diff --git a/Gems/Atom/RHI/Metal/Code/Source/RHI/SwapChain.cpp b/Gems/Atom/RHI/Metal/Code/Source/RHI/SwapChain.cpp index 31d23e5100..08d5d2be87 100644 --- a/Gems/Atom/RHI/Metal/Code/Source/RHI/SwapChain.cpp +++ b/Gems/Atom/RHI/Metal/Code/Source/RHI/SwapChain.cpp @@ -19,8 +19,9 @@ namespace Platform CGFloat GetScreenScale(); void AttachViewController(NativeWindowType* nativeWindow, NativeViewControllerType* viewController, RHIMetalView* metalView); void UnAttachViewController(NativeWindowType* nativeWindow, NativeViewControllerType* viewController); - void PresentInternal(id mtlCommandBuffer, id drawable, float syncInterval); + void PresentInternal(id mtlCommandBuffer, id drawable, float syncInterval, float refreshRate); void ResizeInternal(RHIMetalView* metalView, CGSize viewSize); + float GetRefreshRate(); RHIMetalView* GetMetalView(NativeWindowType* nativeWindow); } @@ -73,6 +74,15 @@ namespace AZ AddSubView(); } + m_refreshRate = Platform::GetRefreshRate(); + + //Assume 60hz if 0 is returned. + //Internal OSX displays have 'flexible' refresh rates, with a max of 60Hz - but report 0hz + if (m_refreshRate < 0.1f) + { + m_refreshRate = 60.0f; + } + m_drawables.resize(descriptor.m_dimensions.m_imageCount); if (nativeDimensions) @@ -148,10 +158,9 @@ namespace AZ uint32_t SwapChain::PresentInternal() { const uint32_t currentImageIndex = GetCurrentImageIndex(); - //GFX TODO][ATOM-432] - Hardcoding to 30fps for now. Only used by ios. This needs to be driven by higher level code. - float syncInterval = 1.0f/30.0f; + //Preset the drawable - Platform::PresentInternal(m_mtlCommandBuffer, m_drawables[currentImageIndex], syncInterval); + Platform::PresentInternal(m_mtlCommandBuffer, m_drawables[currentImageIndex], GetDescriptor().m_verticalSyncInterval, m_refreshRate); [m_drawables[currentImageIndex] release]; m_drawables[currentImageIndex] = nil; diff --git a/Gems/Atom/RHI/Metal/Code/Source/RHI/SwapChain.h b/Gems/Atom/RHI/Metal/Code/Source/RHI/SwapChain.h index c86bd1f7a5..72014005ac 100644 --- a/Gems/Atom/RHI/Metal/Code/Source/RHI/SwapChain.h +++ b/Gems/Atom/RHI/Metal/Code/Source/RHI/SwapChain.h @@ -52,6 +52,7 @@ namespace AZ id m_mtlDevice = nil; NativeWindowType* m_nativeWindow = nullptr; AZStd::vector> m_drawables; + float m_refreshRate = 0.0f; }; } } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroupPool.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroupPool.cpp index d8c69cf8a0..4e858e4880 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroupPool.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroupPool.cpp @@ -58,8 +58,8 @@ namespace AZ RHI::ShaderResourceGroupPoolDescriptor poolDescriptor; poolDescriptor.m_layout = shaderAsset.FindShaderResourceGroupLayout(srgName, supervariantIndex).get(); - - m_pool->SetName(srgName); + m_pool->SetName(AZ::Name(AZStd::string::format("%s_%s",shaderAsset.GetName().GetCStr(),srgName.GetCStr()))); + const RHI::ResultCode resultCode = m_pool->Init(*device, poolDescriptor); return resultCode; } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/WindowContext.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/WindowContext.cpp index 16ad7a1155..4b8c061b68 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/WindowContext.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/WindowContext.cpp @@ -27,7 +27,7 @@ void OnVsyncIntervalChanged(uint32_t const& interval) // NOTE: On change, broadcasts the new requested vsync interval to all windows. // The value of the vsync interval is constrained between 0 and 4 // Vsync intervals greater than 1 are not currently supported on the Vulkan RHI (see #2061 for discussion) -AZ_CVAR(uint32_t, rpi_vsync_interval, 0, OnVsyncIntervalChanged, AZ::ConsoleFunctorFlags::Null, "Set swapchain vsync interval"); +AZ_CVAR(uint32_t, rpi_vsync_interval, 1, OnVsyncIntervalChanged, AZ::ConsoleFunctorFlags::Null, "Set swapchain vsync interval"); namespace AZ { From 900b82cb361dc998d4f8d7afb192ab24745ec11b Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Thu, 15 Jul 2021 13:40:22 -0700 Subject: [PATCH 15/16] missing dependencies Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- AutomatedTesting/Gem/PythonTests/smoke/CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/AutomatedTesting/Gem/PythonTests/smoke/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/smoke/CMakeLists.txt index 73af69b93a..17202acc29 100644 --- a/AutomatedTesting/Gem/PythonTests/smoke/CMakeLists.txt +++ b/AutomatedTesting/Gem/PythonTests/smoke/CMakeLists.txt @@ -5,6 +5,13 @@ # if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS) + + include(${LY_ROOT_FOLDER}/Code/Tools/SerializeContextTools/Platform/${PAL_PLATFORM_NAME}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) + if (PAL_TRAIT_BUILD_SERIALIZECONTEXTTOOLS) + list(APPEND additional_dependencies AZ::SerializeContextTools) # test_CLITool_SerializeContextTools depends on it + endif() + list(APPEND additional_dependencies AZ::AssetBundlerBatch) # test_CLITool_AssetBundlerBatch_Works depends on it + ly_add_pytest( NAME AutomatedTesting::SmokeTest TEST_SUITE smoke @@ -18,6 +25,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS) Legacy::Editor AutomatedTesting.GameLauncher AutomatedTesting.Assets + ${aditional_dependencies} COMPONENT Smoke ) From 27407540c7f45351296538d2e62d2be1ce9971b4 Mon Sep 17 00:00:00 2001 From: Benjamin Jillich <43751992+amzn-jillich@users.noreply.github.com> Date: Fri, 16 Jul 2021 01:19:38 -0700 Subject: [PATCH 16/16] Cleaning motion asset infos (#2197) * Removing a bunch of legacy files. * Removing asset info files containing legacy data. Signed-off-by: Benjamin Jillich --- .../Jack_Death_Fall_Back_ZUp.fbx.assetinfo | 300 ------- .../Motions/Jack_Idle_Aim_ZUp.fbx.assetinfo | 300 ------- .../Animations/Motions/rin_Idle.fbx.assetinfo | 638 -------------- .../Animations/Motions/rin_Jump.fbx.assetinfo | 794 ++++-------------- .../Characters/Jack/Jack.fbx.assetinfo | 691 --------------- .../Objects/Characters/Jack/enemy.cdf | 3 - .../Objects/Characters/Jack/enemy_runner.cdf | 3 - .../Objects/Characters/Jack/enemy_tank.cdf | 3 - .../Objects/Characters/Jack/jack.cdf | 3 - .../Objects/Characters/Jack/jack.skin | 3 - .../Objects/Characters/Jack/jack_LOD1.skin | 3 - .../Objects/Characters/Jack/jack_LOD2.skin | 3 - .../Objects/Characters/Jack/jack_LOD3.skin | 3 - .../Objects/Characters/Jack/jack_root.chr | 3 - .../Characters/Jack/jack_root.chrparams | 3 - .../Animations/idle_cwby_01.fbx.assetinfo | 45 - .../Cowboy/Animations/reload.fbx.assetinfo | 61 -- .../Cowboy/Animations/run.fbx.assetinfo | 59 -- .../Animations/shootrecoil.fbx.assetinfo | 47 -- .../Animations/strafeback.fbx.assetinfo | 45 - .../Animations/strafebackl.fbx.assetinfo | 45 - .../Animations/strafebackr.fbx.assetinfo | 45 - .../Animations/strafeforward.fbx.assetinfo | 59 -- .../Animations/strafeforwardl.fbx.assetinfo | 45 - .../Animations/strafeforwardr.fbx.assetinfo | 45 - .../Animations/strafeinplace.fbx.assetinfo | 45 - .../Animations/strafeleft.fbx.assetinfo | 45 - .../Animations/straferight.fbx.assetinfo | 45 - 28 files changed, 142 insertions(+), 3242 deletions(-) delete mode 100644 AutomatedTesting/Animations/Motions/Jack_Death_Fall_Back_ZUp.fbx.assetinfo delete mode 100644 AutomatedTesting/Animations/Motions/Jack_Idle_Aim_ZUp.fbx.assetinfo delete mode 100644 AutomatedTesting/Animations/Motions/rin_Idle.fbx.assetinfo delete mode 100644 AutomatedTesting/Objects/Characters/Jack/Jack.fbx.assetinfo delete mode 100644 AutomatedTesting/Objects/Characters/Jack/enemy.cdf delete mode 100644 AutomatedTesting/Objects/Characters/Jack/enemy_runner.cdf delete mode 100644 AutomatedTesting/Objects/Characters/Jack/enemy_tank.cdf delete mode 100644 AutomatedTesting/Objects/Characters/Jack/jack.cdf delete mode 100644 AutomatedTesting/Objects/Characters/Jack/jack.skin delete mode 100644 AutomatedTesting/Objects/Characters/Jack/jack_LOD1.skin delete mode 100644 AutomatedTesting/Objects/Characters/Jack/jack_LOD2.skin delete mode 100644 AutomatedTesting/Objects/Characters/Jack/jack_LOD3.skin delete mode 100644 AutomatedTesting/Objects/Characters/Jack/jack_root.chr delete mode 100644 AutomatedTesting/Objects/Characters/Jack/jack_root.chrparams delete mode 100644 Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/idle_cwby_01.fbx.assetinfo delete mode 100644 Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/reload.fbx.assetinfo delete mode 100644 Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/run.fbx.assetinfo delete mode 100644 Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/shootrecoil.fbx.assetinfo delete mode 100644 Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeback.fbx.assetinfo delete mode 100644 Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafebackl.fbx.assetinfo delete mode 100644 Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafebackr.fbx.assetinfo delete mode 100644 Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeforward.fbx.assetinfo delete mode 100644 Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeforwardl.fbx.assetinfo delete mode 100644 Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeforwardr.fbx.assetinfo delete mode 100644 Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeinplace.fbx.assetinfo delete mode 100644 Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeleft.fbx.assetinfo delete mode 100644 Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/straferight.fbx.assetinfo diff --git a/AutomatedTesting/Animations/Motions/Jack_Death_Fall_Back_ZUp.fbx.assetinfo b/AutomatedTesting/Animations/Motions/Jack_Death_Fall_Back_ZUp.fbx.assetinfo deleted file mode 100644 index e7fd23585b..0000000000 --- a/AutomatedTesting/Animations/Motions/Jack_Death_Fall_Back_ZUp.fbx.assetinfo +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/AutomatedTesting/Animations/Motions/Jack_Idle_Aim_ZUp.fbx.assetinfo b/AutomatedTesting/Animations/Motions/Jack_Idle_Aim_ZUp.fbx.assetinfo deleted file mode 100644 index b7b8ef2dba..0000000000 --- a/AutomatedTesting/Animations/Motions/Jack_Idle_Aim_ZUp.fbx.assetinfo +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/AutomatedTesting/Animations/Motions/rin_Idle.fbx.assetinfo b/AutomatedTesting/Animations/Motions/rin_Idle.fbx.assetinfo deleted file mode 100644 index 8c8374e8de..0000000000 --- a/AutomatedTesting/Animations/Motions/rin_Idle.fbx.assetinfo +++ /dev/null @@ -1,638 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/AutomatedTesting/Animations/Motions/rin_Jump.fbx.assetinfo b/AutomatedTesting/Animations/Motions/rin_Jump.fbx.assetinfo index b3d20a25f5..c190a949b1 100644 --- a/AutomatedTesting/Animations/Motions/rin_Jump.fbx.assetinfo +++ b/AutomatedTesting/Animations/Motions/rin_Jump.fbx.assetinfo @@ -1,652 +1,142 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +{ + "values": [ + { + "$type": "MotionGroup", + "name": "rin_jump", + "selectedRootBone": "RootNode.root", + "id": "{A816A306-96C4-523C-87D9-0784EE509817}", + "rules": { + "rules": [ + { + "$type": "CoordinateSystemRule", + "targetCoordinateSystem": 1 + }, + { + "$type": "EMotionFX::Pipeline::Rule::MotionMetaDataRule", + "data": { + "motionEventTable": { + "tracks": [ + { + "name": "Sync", + "deletable": false + }, + { + "name": "sound", + "events": [ + { + "eventDatas": [ + { + "$type": "TwoStringEventData", + "subject": "Mvt_Walk" + } + ] + }, + { + "eventDatas": [ + { + "$type": "TwoStringEventData", + "subject": "Ftsp_Walk" + } + ], + "startTime": 0.30516499280929568, + "endTime": 0.30516499280929568 + }, + { + "eventDatas": [ + { + "$type": "TwoStringEventData", + "subject": "Mvt_Run" + } + ], + "startTime": 0.3315509855747223, + "endTime": 0.3315509855747223 + }, + { + "eventDatas": [ + { + "$type": "TwoStringEventData", + "subject": "Ftsp_Run" + } + ], + "startTime": 0.3579379916191101, + "endTime": 0.3579379916191101 + }, + { + "eventDatas": [ + { + "$type": "TwoStringEventData", + "subject": "Ftsp_Walk" + } + ], + "startTime": 0.9625319838523865, + "endTime": 0.9625319838523865 + }, + { + "eventDatas": [ + { + "$type": "TwoStringEventData", + "subject": "Ftsp_Run" + } + ], + "startTime": 1.0061269998550416, + "endTime": 1.0061269998550416 + }, + { + "eventDatas": [ + { + "$type": "TwoStringEventData", + "subject": "Mvt_Walk" + } + ], + "startTime": 1.1346169710159302, + "endTime": 1.1346169710159302 + } + ] + }, + { + "name": "Event Track 3", + "events": [ + { + "eventDatas": [ + { + "$type": "TwoStringEventData", + "subject": "RightFoot" + } + ], + "startTime": 0.0005639999872073531, + "endTime": 0.0005639999872073531 + }, + { + "eventDatas": [ + { + "$type": "TwoStringEventData", + "subject": "JumpStart" + } + ], + "startTime": 0.36318498849868777, + "endTime": 0.36318498849868777 + }, + { + "eventDatas": [ + { + "$type": "TwoStringEventData", + "subject": "DoneJump" + } + ], + "startTime": 1.059928059577942, + "endTime": 1.059928059577942 + } + ] + } + ] + } + } + }, + { + "$type": "MotionSamplingRule" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/AutomatedTesting/Objects/Characters/Jack/Jack.fbx.assetinfo b/AutomatedTesting/Objects/Characters/Jack/Jack.fbx.assetinfo deleted file mode 100644 index 14b860fcd4..0000000000 --- a/AutomatedTesting/Objects/Characters/Jack/Jack.fbx.assetinfo +++ /dev/null @@ -1,691 +0,0 @@ -{ - "values": [ - { - "$type": "ActorGroup", - "name": "jack", - "selectedRootBone": "RootNode.LOD_Group_1.LOD_0", - "id": "{B7194F91-D8A1-5D5D-AC6D-DDEBC087D80D}", - "rules": { - "rules": [ - { - "$type": "{3CB103B3-CEAF-49D7-A9DC-5A31E2DF15E4} LodRule", - "nodeSelectionList": [ - { - "selectedNodes": [ - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_upLegRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_upLegRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_upLegRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_upLegRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__RHand2Aim_IKBlend", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:l_ball", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__L_Heel", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeTargetLeft", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeWeightLeft", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:r_ball", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__R_Heel", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeTargetRight", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeWeightRight", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:Bip01__CustomStart", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim.Jack:Bip01__RHand2Aim_IKTarget", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__RHand2Aim_IKBlend.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:l_ball.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__L_Heel.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeTargetLeft.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeWeightLeft.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:r_ball.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__R_Heel.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeTargetRight.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeWeightRight.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck.Jack:head", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:Bip01__CustomStart.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim.Jack:Bip01__RHand2Aim_IKTarget.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck.Jack:head.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_upArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_upArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_upArmRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_loArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_upArmRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_loArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_loArmRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_loArmRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKBlend", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKTarget", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKBlend", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKTarget", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2.Jack:l_thumb3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2.Jack:l_index3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2.Jack:l_mid3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKBlend.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKTarget.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2.Jack:r_thumb3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2.Jack:r_index3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2.Jack:r_mid3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKBlend.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKTarget.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2.Jack:l_thumb3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2.Jack:l_index3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2.Jack:l_mid3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2.Jack:l_ring3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2.Jack:l_pinky3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2.Jack:r_thumb3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2.Jack:r_index3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2.Jack:r_mid3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2.Jack:r_ring3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2.Jack:r_pinky3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2.Jack:l_ring3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2.Jack:l_pinky3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2.Jack:r_ring3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2.Jack:r_pinky3.transform", - "RootNode.LOD_Group_1.LOD_1.Jack:jack_mesh" - ], - "unselectedNodes": [ - "RootNode", - "RootNode.LOD_Group_1", - "RootNode.LOD_Group_1.LOD_0", - "RootNode.LOD_Group_1.LOD_1", - "RootNode.LOD_Group_1.LOD_2", - "RootNode.LOD_Group_1.LOD_3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_mesh", - "RootNode.LOD_Group_1.LOD_2.Jack:jack_mesh", - "RootNode.LOD_Group_1.LOD_3.Jack:jack_mesh", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_mesh.SkinWeight_0", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_mesh.map1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_mesh.Jack:jack", - "RootNode.LOD_Group_1.LOD_1.Jack:jack_mesh.SkinWeight_0", - "RootNode.LOD_Group_1.LOD_1.Jack:jack_mesh.map1", - "RootNode.LOD_Group_1.LOD_1.Jack:jack_mesh.Jack:jack", - "RootNode.LOD_Group_1.LOD_2.Jack:jack_mesh.SkinWeight_0", - "RootNode.LOD_Group_1.LOD_2.Jack:jack_mesh.map1", - "RootNode.LOD_Group_1.LOD_2.Jack:jack_mesh.Jack:jack", - "RootNode.LOD_Group_1.LOD_3.Jack:jack_mesh.SkinWeight_0", - "RootNode.LOD_Group_1.LOD_3.Jack:jack_mesh.map1", - "RootNode.LOD_Group_1.LOD_3.Jack:jack_mesh.Jack:jack" - ], - "lodLevel": 1 - }, - { - "selectedNodes": [ - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_upLegRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_upLegRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_upLegRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_upLegRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__RHand2Aim_IKBlend", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:l_ball", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__L_Heel", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeTargetLeft", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeWeightLeft", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:r_ball", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__R_Heel", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeTargetRight", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeWeightRight", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:Bip01__CustomStart", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim.Jack:Bip01__RHand2Aim_IKTarget", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__RHand2Aim_IKBlend.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:l_ball.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__L_Heel.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeTargetLeft.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeWeightLeft.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:r_ball.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__R_Heel.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeTargetRight.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeWeightRight.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck.Jack:head", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:Bip01__CustomStart.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim.Jack:Bip01__RHand2Aim_IKTarget.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck.Jack:head.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_upArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_upArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_upArmRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_loArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_upArmRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_loArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_loArmRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_loArmRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKBlend", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKTarget", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKBlend", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKTarget", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2.Jack:l_thumb3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2.Jack:l_index3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2.Jack:l_mid3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKBlend.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKTarget.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2.Jack:r_thumb3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2.Jack:r_index3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2.Jack:r_mid3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKBlend.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKTarget.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2.Jack:l_thumb3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2.Jack:l_index3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2.Jack:l_mid3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2.Jack:l_ring3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2.Jack:l_pinky3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2.Jack:r_thumb3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2.Jack:r_index3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2.Jack:r_mid3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2.Jack:r_ring3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2.Jack:r_pinky3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2.Jack:l_ring3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2.Jack:l_pinky3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2.Jack:r_ring3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2.Jack:r_pinky3.transform", - "RootNode.LOD_Group_1.LOD_2.Jack:jack_mesh" - ], - "unselectedNodes": [ - "RootNode", - "RootNode.LOD_Group_1", - "RootNode.LOD_Group_1.LOD_0", - "RootNode.LOD_Group_1.LOD_1", - "RootNode.LOD_Group_1.LOD_2", - "RootNode.LOD_Group_1.LOD_3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_mesh", - "RootNode.LOD_Group_1.LOD_1.Jack:jack_mesh", - "RootNode.LOD_Group_1.LOD_3.Jack:jack_mesh", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_mesh.SkinWeight_0", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_mesh.map1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_mesh.Jack:jack", - "RootNode.LOD_Group_1.LOD_1.Jack:jack_mesh.SkinWeight_0", - "RootNode.LOD_Group_1.LOD_1.Jack:jack_mesh.map1", - "RootNode.LOD_Group_1.LOD_1.Jack:jack_mesh.Jack:jack", - "RootNode.LOD_Group_1.LOD_2.Jack:jack_mesh.SkinWeight_0", - "RootNode.LOD_Group_1.LOD_2.Jack:jack_mesh.map1", - "RootNode.LOD_Group_1.LOD_2.Jack:jack_mesh.Jack:jack", - "RootNode.LOD_Group_1.LOD_3.Jack:jack_mesh.SkinWeight_0", - "RootNode.LOD_Group_1.LOD_3.Jack:jack_mesh.map1", - "RootNode.LOD_Group_1.LOD_3.Jack:jack_mesh.Jack:jack" - ], - "lodLevel": 2 - }, - { - "selectedNodes": [ - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_upLegRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_upLegRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_upLegRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_upLegRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__RHand2Aim_IKBlend", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:l_ball", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__L_Heel", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeTargetLeft", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeWeightLeft", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:r_ball", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__R_Heel", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeTargetRight", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeWeightRight", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:Bip01__CustomStart", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim.Jack:Bip01__RHand2Aim_IKTarget", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__RHand2Aim_IKBlend.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:l_ball.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__L_Heel.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeTargetLeft.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeWeightLeft.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:r_ball.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__R_Heel.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeTargetRight.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeWeightRight.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck.Jack:head", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:Bip01__CustomStart.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim.Jack:Bip01__RHand2Aim_IKTarget.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck.Jack:head.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_upArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_upArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_upArmRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_loArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_upArmRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_loArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_loArmRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_loArmRoll.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKBlend", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKTarget", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKBlend", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKTarget", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2.Jack:l_thumb3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2.Jack:l_index3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2.Jack:l_mid3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKBlend.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKTarget.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2.Jack:r_thumb3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2.Jack:r_index3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2.Jack:r_mid3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKBlend.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKTarget.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2.Jack:l_thumb3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2.Jack:l_index3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2.Jack:l_mid3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2.Jack:l_ring3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2.Jack:l_pinky3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2.Jack:r_thumb3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2.Jack:r_index3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2.Jack:r_mid3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2.Jack:r_ring3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2.Jack:r_pinky3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2.Jack:l_ring3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2.Jack:l_pinky3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2.Jack:r_ring3.transform", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2.Jack:r_pinky3.transform", - "RootNode.LOD_Group_1.LOD_3.Jack:jack_mesh" - ], - "unselectedNodes": [ - "RootNode", - "RootNode.LOD_Group_1", - "RootNode.LOD_Group_1.LOD_0", - "RootNode.LOD_Group_1.LOD_1", - "RootNode.LOD_Group_1.LOD_2", - "RootNode.LOD_Group_1.LOD_3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_mesh", - "RootNode.LOD_Group_1.LOD_1.Jack:jack_mesh", - "RootNode.LOD_Group_1.LOD_2.Jack:jack_mesh", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_mesh.SkinWeight_0", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_mesh.map1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_mesh.Jack:jack", - "RootNode.LOD_Group_1.LOD_1.Jack:jack_mesh.SkinWeight_0", - "RootNode.LOD_Group_1.LOD_1.Jack:jack_mesh.map1", - "RootNode.LOD_Group_1.LOD_1.Jack:jack_mesh.Jack:jack", - "RootNode.LOD_Group_1.LOD_2.Jack:jack_mesh.SkinWeight_0", - "RootNode.LOD_Group_1.LOD_2.Jack:jack_mesh.map1", - "RootNode.LOD_Group_1.LOD_2.Jack:jack_mesh.Jack:jack", - "RootNode.LOD_Group_1.LOD_3.Jack:jack_mesh.SkinWeight_0", - "RootNode.LOD_Group_1.LOD_3.Jack:jack_mesh.map1", - "RootNode.LOD_Group_1.LOD_3.Jack:jack_mesh.Jack:jack" - ], - "lodLevel": 3 - } - ] - }, - { - "$type": "TangentsRule" - }, - { - "$type": "SkinRule" - }, - { - "$type": "MaterialRule" - }, - { - "$type": "MetaDataRule", - "metaData": "AdjustActor -actorID $(ACTORID) -name \"Jack\"\r\nActorSetCollisionMeshes -actorID $(ACTORID) -lod 0 -nodeList \"\"\r\nAdjustActor -actorID $(ACTORID) -nodesExcludedFromBounds \"\" -nodeAction \"select\"\r\nAdjustActor -actorID $(ACTORID) -nodeAction \"replace\" -attachmentNodes \"\"\r\nAdjustActor -actorID $(ACTORID) -motionExtractionNodeName \"Jack:jack_root\"\r\n" - }, - { - "$type": "CoordinateSystemRule" - } - ] - } - }, - { - "$type": "{07B356B7-3635-40B5-878A-FAC4EFD5AD86} MeshGroup", - "name": "Jack", - "nodeSelectionList": { - "selectedNodes": [ - {}, - "RootNode", - "RootNode.LOD_Group_1", - "RootNode.LOD_Group_1.LOD_0", - "RootNode.LOD_Group_1.LOD_1", - "RootNode.LOD_Group_1.LOD_2", - "RootNode.LOD_Group_1.LOD_3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_mesh", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root", - "RootNode.LOD_Group_1.LOD_1.Jack:jack_mesh", - "RootNode.LOD_Group_1.LOD_2.Jack:jack_mesh", - "RootNode.LOD_Group_1.LOD_3.Jack:jack_mesh", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_upLegRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_upLegRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__RHand2Aim_IKBlend", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:l_ball", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__L_Heel", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeTargetLeft", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:l_upLeg.Jack:l_loLeg.Jack:l_ankle.Jack:Bip01__planeWeightLeft", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:r_ball", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__R_Heel", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeTargetRight", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:r_upLeg.Jack:r_loLeg.Jack:r_ankle.Jack:Bip01__planeWeightRight", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:Bip01__CustomStart", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:Bip01__CustomAim.Jack:Bip01__RHand2Aim_IKTarget", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:neck.Jack:head", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_upArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_upArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_loArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_loArmRoll", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKBlend", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_handProp.Jack:Bip01__RHand2Weapon_IKTarget", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKBlend", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_handProp.Jack:Bip01__LHand2Weapon_IKTarget", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_thumb1.Jack:l_thumb2.Jack:l_thumb3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_index1.Jack:l_index2.Jack:l_index3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_mid1.Jack:l_mid2.Jack:l_mid3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_thumb1.Jack:r_thumb2.Jack:r_thumb3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_index1.Jack:r_index2.Jack:r_index3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_mid1.Jack:r_mid2.Jack:r_mid3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_ring1.Jack:l_ring2.Jack:l_ring3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:l_shldr.Jack:l_upArm.Jack:l_loArm.Jack:l_hand.Jack:l_metacarpal.Jack:l_pinky1.Jack:l_pinky2.Jack:l_pinky3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_ring1.Jack:r_ring2.Jack:r_ring3", - "RootNode.LOD_Group_1.LOD_0.Jack:jack_root.Jack:Bip01__pelvis.Jack:spine1.Jack:spine2.Jack:spine3.Jack:r_shldr.Jack:r_upArm.Jack:r_loArm.Jack:r_hand.Jack:r_metacarpal.Jack:r_pinky1.Jack:r_pinky2.Jack:r_pinky3" - ] - }, - "rules": { - "rules": [ - { - "$type": "SkinRule" - }, - { - "$type": "MaterialRule" - } - ] - }, - "id": "{8D605093-F5E6-476C-ABD6-42304F53F1F0}" - } - ] -} \ No newline at end of file diff --git a/AutomatedTesting/Objects/Characters/Jack/enemy.cdf b/AutomatedTesting/Objects/Characters/Jack/enemy.cdf deleted file mode 100644 index c3225e07b3..0000000000 --- a/AutomatedTesting/Objects/Characters/Jack/enemy.cdf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:da2f0e0a3100ff1b46534d4ca314e4ceabc14a8cc894070dd18a51feb7eba390 -size 290 diff --git a/AutomatedTesting/Objects/Characters/Jack/enemy_runner.cdf b/AutomatedTesting/Objects/Characters/Jack/enemy_runner.cdf deleted file mode 100644 index 00c03ea1b8..0000000000 --- a/AutomatedTesting/Objects/Characters/Jack/enemy_runner.cdf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a3eac079f5ee483917a2cab9f8726a0e66ee6ed8cb9f966d872fe3dc0bf287c6 -size 304 diff --git a/AutomatedTesting/Objects/Characters/Jack/enemy_tank.cdf b/AutomatedTesting/Objects/Characters/Jack/enemy_tank.cdf deleted file mode 100644 index 1055e64b28..0000000000 --- a/AutomatedTesting/Objects/Characters/Jack/enemy_tank.cdf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1b610ceb7b8b42d4890d2f9ca6e0dec79d8361bfa8e1d02517ac3c336259e065 -size 300 diff --git a/AutomatedTesting/Objects/Characters/Jack/jack.cdf b/AutomatedTesting/Objects/Characters/Jack/jack.cdf deleted file mode 100644 index ba2d13ef84..0000000000 --- a/AutomatedTesting/Objects/Characters/Jack/jack.cdf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:58b71612088d2eca7465680c8914d9e42ecf343fc37c835ebc61cd9a23de7b4e -size 288 diff --git a/AutomatedTesting/Objects/Characters/Jack/jack.skin b/AutomatedTesting/Objects/Characters/Jack/jack.skin deleted file mode 100644 index 68d1d95361..0000000000 --- a/AutomatedTesting/Objects/Characters/Jack/jack.skin +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5d144788bbd3229481b4e874a88de31030377ac8396bb2c00bd05180083498bd -size 3558736 diff --git a/AutomatedTesting/Objects/Characters/Jack/jack_LOD1.skin b/AutomatedTesting/Objects/Characters/Jack/jack_LOD1.skin deleted file mode 100644 index 79650c60dc..0000000000 --- a/AutomatedTesting/Objects/Characters/Jack/jack_LOD1.skin +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6a198f9b888af5e4cc240319bfe5ee99b35919081e6ef37e14fc43dcad74c9d5 -size 2416608 diff --git a/AutomatedTesting/Objects/Characters/Jack/jack_LOD2.skin b/AutomatedTesting/Objects/Characters/Jack/jack_LOD2.skin deleted file mode 100644 index da1f74af86..0000000000 --- a/AutomatedTesting/Objects/Characters/Jack/jack_LOD2.skin +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:870b14ba99d6006d936cc84503549450709db541f2a365aa55e3e05709d0822a -size 1355768 diff --git a/AutomatedTesting/Objects/Characters/Jack/jack_LOD3.skin b/AutomatedTesting/Objects/Characters/Jack/jack_LOD3.skin deleted file mode 100644 index a82716f115..0000000000 --- a/AutomatedTesting/Objects/Characters/Jack/jack_LOD3.skin +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4aa1cf59f3b59afa75caa487630ef9769c5f3bd8ec466b031fa0ce3d7fbc0d31 -size 856508 diff --git a/AutomatedTesting/Objects/Characters/Jack/jack_root.chr b/AutomatedTesting/Objects/Characters/Jack/jack_root.chr deleted file mode 100644 index f2e346a11a..0000000000 --- a/AutomatedTesting/Objects/Characters/Jack/jack_root.chr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:43a74e2e7c0d90593f0c3e568b1a9fbfb781fb283c0619921ca1ad67cc2cde2a -size 59540 diff --git a/AutomatedTesting/Objects/Characters/Jack/jack_root.chrparams b/AutomatedTesting/Objects/Characters/Jack/jack_root.chrparams deleted file mode 100644 index 30c8c5f179..0000000000 --- a/AutomatedTesting/Objects/Characters/Jack/jack_root.chrparams +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2ca664e801edb91b7fe60b0c93a41f4553e5a85cab2729b00cdbf3adeade71a5 -size 5831 diff --git a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/idle_cwby_01.fbx.assetinfo b/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/idle_cwby_01.fbx.assetinfo deleted file mode 100644 index 2ca1f67d65..0000000000 --- a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/idle_cwby_01.fbx.assetinfo +++ /dev/null @@ -1,45 +0,0 @@ -{ - "values": [ - { - "$type": "MotionGroup", - "name": "idle_cwby_01", - "selectedRootBone": "RootNode.Reference", - "id": "{492E8A35-2647-581F-A701-F1D2A9FBB979}", - "rules": { - "rules": [ - { - "$type": "MetaDataRule", - "commands": [ - { - "$type": "CommandSystem::CommandAdjustMotion", - "dirtyFlag": {}, - "motionExtractionFlags": {}, - "name": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "Sync", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "GameState", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "GameState", - "eventDatas": {} - } - ] - }, - { - "$type": "MotionSamplingRule" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/reload.fbx.assetinfo b/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/reload.fbx.assetinfo deleted file mode 100644 index 3d935c330e..0000000000 --- a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/reload.fbx.assetinfo +++ /dev/null @@ -1,61 +0,0 @@ -{ - "values": [ - { - "$type": "MotionGroup", - "name": "reload", - "selectedRootBone": "RootNode.Reference", - "id": "{28092685-3550-5583-A666-CD60018AB2E9}", - "rules": { - "rules": [ - { - "$type": "MetaDataRule", - "commands": [ - { - "$type": "CommandSystem::CommandAdjustMotion", - "dirtyFlag": {}, - "motionExtractionFlags": {}, - "name": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "Sync", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "ReloadEvent", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "ReloadEvent", - "startTime": 0.509211003780365, - "endTime": 0.509211003780365, - "eventDatas": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "ReloadEvent", - "startTime": 1.2446810007095338, - "endTime": 1.2446810007095338, - "eventDatas": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "ReloadEvent", - "startTime": 1.4295190572738648, - "endTime": 1.4295190572738648, - "eventDatas": {} - } - ] - }, - { - "$type": "MotionSamplingRule" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/run.fbx.assetinfo b/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/run.fbx.assetinfo deleted file mode 100644 index c32d66694b..0000000000 --- a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/run.fbx.assetinfo +++ /dev/null @@ -1,59 +0,0 @@ -{ - "values": [ - { - "$type": "MotionGroup", - "name": "run", - "selectedRootBone": "RootNode.Reference", - "id": "{7D6889F1-6536-57B6-8B02-93C815D1ADA9}", - "rules": { - "rules": [ - { - "$type": "MetaDataRule", - "commands": [ - { - "$type": "CommandSystem::CommandAdjustMotion", - "dirtyFlag": {}, - "motionExtractionFlags": {}, - "name": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "Sync", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "Sync", - "startTime": 0.3396751880645752, - "endTime": 0.3396751880645752, - "eventDatas": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "Sync", - "startTime": 0.6319156885147095, - "endTime": 0.6319156885147095, - "eventDatas": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "GameState", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "GameState", - "eventDatas": {} - } - ] - }, - { - "$type": "MotionSamplingRule" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/shootrecoil.fbx.assetinfo b/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/shootrecoil.fbx.assetinfo deleted file mode 100644 index 9536e6597d..0000000000 --- a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/shootrecoil.fbx.assetinfo +++ /dev/null @@ -1,47 +0,0 @@ -{ - "values": [ - { - "$type": "MotionGroup", - "name": "shootrecoil", - "selectedRootBone": "RootNode.Reference", - "id": "{A1DC3BB2-3324-50F3-8C4B-BBFB61623129}", - "rules": { - "rules": [ - { - "$type": "MetaDataRule", - "commands": [ - { - "$type": "CommandSystem::CommandAdjustMotion", - "dirtyFlag": {}, - "motionExtractionFlags": {}, - "name": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "Sync", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "RecoilEvent", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "RecoilEvent", - "startTime": 0.23250000178813935, - "endTime": 0.23250000178813935, - "eventDatas": {} - } - ] - }, - { - "$type": "MotionSamplingRule" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeback.fbx.assetinfo b/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeback.fbx.assetinfo deleted file mode 100644 index 9d7c7e299c..0000000000 --- a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeback.fbx.assetinfo +++ /dev/null @@ -1,45 +0,0 @@ -{ - "values": [ - { - "$type": "MotionGroup", - "name": "strafeback", - "selectedRootBone": "RootNode.Reference", - "id": "{CA0EF712-DA36-5DA8-B474-207BD250CF2F}", - "rules": { - "rules": [ - { - "$type": "MetaDataRule", - "commands": [ - { - "$type": "CommandSystem::CommandAdjustMotion", - "dirtyFlag": {}, - "motionExtractionFlags": {}, - "name": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "Sync", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "GameEvents", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "GameEvents", - "eventDatas": {} - } - ] - }, - { - "$type": "MotionSamplingRule" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafebackl.fbx.assetinfo b/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafebackl.fbx.assetinfo deleted file mode 100644 index b22d00d3fe..0000000000 --- a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafebackl.fbx.assetinfo +++ /dev/null @@ -1,45 +0,0 @@ -{ - "values": [ - { - "$type": "MotionGroup", - "name": "strafebackl", - "selectedRootBone": "RootNode.Reference", - "id": "{9433F0E6-EA1A-5473-AA21-EE4DC45387C1}", - "rules": { - "rules": [ - { - "$type": "MetaDataRule", - "commands": [ - { - "$type": "CommandSystem::CommandAdjustMotion", - "dirtyFlag": {}, - "motionExtractionFlags": {}, - "name": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "Sync", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "GameState", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "GameState", - "eventDatas": {} - } - ] - }, - { - "$type": "MotionSamplingRule" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafebackr.fbx.assetinfo b/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafebackr.fbx.assetinfo deleted file mode 100644 index 6b7dd5c4aa..0000000000 --- a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafebackr.fbx.assetinfo +++ /dev/null @@ -1,45 +0,0 @@ -{ - "values": [ - { - "$type": "MotionGroup", - "name": "strafebackr", - "selectedRootBone": "RootNode.Reference", - "id": "{5392AC3D-FF18-51F5-984E-248CAAF09F2E}", - "rules": { - "rules": [ - { - "$type": "MetaDataRule", - "commands": [ - { - "$type": "CommandSystem::CommandAdjustMotion", - "dirtyFlag": {}, - "motionExtractionFlags": {}, - "name": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "Sync", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "GameState", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "GameState", - "eventDatas": {} - } - ] - }, - { - "$type": "MotionSamplingRule" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeforward.fbx.assetinfo b/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeforward.fbx.assetinfo deleted file mode 100644 index a0dd296fa9..0000000000 --- a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeforward.fbx.assetinfo +++ /dev/null @@ -1,59 +0,0 @@ -{ - "values": [ - { - "$type": "MotionGroup", - "name": "strafeforward", - "selectedRootBone": "RootNode.Reference", - "id": "{2FB879C6-B3FB-5BD8-B52B-1012000351C2}", - "rules": { - "rules": [ - { - "$type": "MetaDataRule", - "commands": [ - { - "$type": "CommandSystem::CommandAdjustMotion", - "dirtyFlag": {}, - "motionExtractionFlags": {}, - "name": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "Sync", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "Sync", - "startTime": 0.2708907127380371, - "endTime": 0.2708907127380371, - "eventDatas": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "Sync", - "startTime": 0.9699265956878662, - "endTime": 0.9699265956878662, - "eventDatas": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "GameState", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "GameState", - "eventDatas": {} - } - ] - }, - { - "$type": "MotionSamplingRule" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeforwardl.fbx.assetinfo b/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeforwardl.fbx.assetinfo deleted file mode 100644 index 233d7d248e..0000000000 --- a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeforwardl.fbx.assetinfo +++ /dev/null @@ -1,45 +0,0 @@ -{ - "values": [ - { - "$type": "MotionGroup", - "name": "strafeforwardl", - "selectedRootBone": "RootNode.Reference", - "id": "{2D945D52-C313-57A3-B722-C6402ACC3506}", - "rules": { - "rules": [ - { - "$type": "MetaDataRule", - "commands": [ - { - "$type": "CommandSystem::CommandAdjustMotion", - "dirtyFlag": {}, - "motionExtractionFlags": {}, - "name": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "Sync", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "GameState", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "GameState", - "eventDatas": {} - } - ] - }, - { - "$type": "MotionSamplingRule" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeforwardr.fbx.assetinfo b/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeforwardr.fbx.assetinfo deleted file mode 100644 index 5332ba04bd..0000000000 --- a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeforwardr.fbx.assetinfo +++ /dev/null @@ -1,45 +0,0 @@ -{ - "values": [ - { - "$type": "MotionGroup", - "name": "strafeforwardr", - "selectedRootBone": "RootNode.Reference", - "id": "{3E691B9F-C0D7-5BFD-BBBC-50BAE737886E}", - "rules": { - "rules": [ - { - "$type": "MetaDataRule", - "commands": [ - { - "$type": "CommandSystem::CommandAdjustMotion", - "dirtyFlag": {}, - "motionExtractionFlags": {}, - "name": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "Sync", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "GameState", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "GameState", - "eventDatas": {} - } - ] - }, - { - "$type": "MotionSamplingRule" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeinplace.fbx.assetinfo b/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeinplace.fbx.assetinfo deleted file mode 100644 index 4d7e41b48a..0000000000 --- a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeinplace.fbx.assetinfo +++ /dev/null @@ -1,45 +0,0 @@ -{ - "values": [ - { - "$type": "MotionGroup", - "name": "strafeinplace", - "selectedRootBone": "RootNode.Reference", - "id": "{A2686CFC-D49B-5468-AE9F-E3F84FA75C6D}", - "rules": { - "rules": [ - { - "$type": "MetaDataRule", - "commands": [ - { - "$type": "CommandSystem::CommandAdjustMotion", - "dirtyFlag": {}, - "motionExtractionFlags": {}, - "name": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "Sync", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "GameState", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "GameState", - "eventDatas": {} - } - ] - }, - { - "$type": "MotionSamplingRule" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeleft.fbx.assetinfo b/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeleft.fbx.assetinfo deleted file mode 100644 index 02114bd336..0000000000 --- a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/strafeleft.fbx.assetinfo +++ /dev/null @@ -1,45 +0,0 @@ -{ - "values": [ - { - "$type": "MotionGroup", - "name": "strafeleft", - "selectedRootBone": "RootNode.Reference", - "id": "{2093C7DF-0C51-5C2B-B763-4DC1CC81D10E}", - "rules": { - "rules": [ - { - "$type": "MetaDataRule", - "commands": [ - { - "$type": "CommandSystem::CommandAdjustMotion", - "dirtyFlag": {}, - "motionExtractionFlags": {}, - "name": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "Sync", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "GameState", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "GameState", - "eventDatas": {} - } - ] - }, - { - "$type": "MotionSamplingRule" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/straferight.fbx.assetinfo b/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/straferight.fbx.assetinfo deleted file mode 100644 index 28ac40918d..0000000000 --- a/Gems/PhysXSamples/Assets/Characters/Cowboy/Animations/straferight.fbx.assetinfo +++ /dev/null @@ -1,45 +0,0 @@ -{ - "values": [ - { - "$type": "MotionGroup", - "name": "straferight", - "selectedRootBone": "RootNode.Reference", - "id": "{CE0E45E9-4B8C-5340-9521-B6290BAB24FC}", - "rules": { - "rules": [ - { - "$type": "MetaDataRule", - "commands": [ - { - "$type": "CommandSystem::CommandAdjustMotion", - "dirtyFlag": {}, - "motionExtractionFlags": {}, - "name": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "Sync", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEventTrack", - "eventTrackName": "GameState", - "eventTrackIndex": {}, - "isEnabled": {} - }, - { - "$type": "CommandSystem::CommandCreateMotionEvent", - "eventTrackName": "GameState", - "eventDatas": {} - } - ] - }, - { - "$type": "MotionSamplingRule" - } - ] - } - } - ] -} \ No newline at end of file