From 2f9a8a71fadc9d4cbfcb459cb663ef15d956020b Mon Sep 17 00:00:00 2001 From: Steve Pham <82231385+spham-amzn@users.noreply.github.com> Date: Thu, 8 Feb 2024 10:30:39 -0800 Subject: [PATCH] Update PhysX5 references for robots related files (#665) * Update PhysX5 references for robots related files * Update repo.json - Updated gems and template versioning info - Minor fixes * Update dependencies to updated versions of gems * Fix unnnecessary target with empty files (WarehouseAutomation.Editor.Private.Object) causing the following error: - CMake can not determine linker language for target: WarehouseAutomation.Editor.Private.Object * Disable test target for the arehouse editor since there are no tests defined * Removed 'enabled_gems.cmake' - Removed file from the ROS related templates and updated its EngineFinder.cmake accordingly - Moved dependencies to the template's project.json Signed-off-by: Steve Pham <82231385+spham-amzn@users.noreply.github.com> --- Gems/ProteusRobot/gem.json | 12 +- Gems/ROS2/Code/CMakeLists.txt | 6 +- Gems/ROS2/gem.json | 11 +- Gems/RosRobotSample/gem.json | 12 +- Gems/WarehouseAutomation/Code/CMakeLists.txt | 32 +- .../Code/Platform/Linux/PAL_linux.cmake | 3 +- ...houseautomation_editor_private_files.cmake | 6 - Gems/WarehouseAutomation/gem.json | 18 +- .../Template/Gem/${Name}_files.cmake | 1 - .../Template/Gem/CMakeLists.txt | 3 - .../Template/Gem/enabled_gems.cmake | 35 - .../Registry/physxdebugconfiguration.setreg | 2 +- .../physxdefaultsceneconfiguration.setreg | 2 +- .../Registry/physxsystemconfiguration.setreg | 2 +- .../Template/cmake/EngineFinder.cmake | 4 + .../Template/project.json | 23 +- .../Ros2FleetRobotTemplate/template.json | 9 +- .../Template/Gem/${NameLower}_files.cmake | 1 - .../Template/Gem/CMakeLists.txt | 7 - .../Template/Gem/enabled_gems.cmake | 36 - .../Registry/physxsystemconfiguration.setreg | 2 +- .../Template/cmake/EngineFinder.cmake | 170 +- .../Ros2ProjectTemplate/Template/project.json | 27 +- Templates/Ros2ProjectTemplate/template.json | 9 +- .../Template/Gem/${Name}_files.cmake | 1 - .../Template/Gem/CMakeLists.txt | 3 - .../Template/Gem/enabled_gems.cmake | 26 - .../Registry/physxdebugconfiguration.setreg | 2 +- .../physxdefaultsceneconfiguration.setreg | 2 +- .../Registry/physxsystemconfiguration.setreg | 2 +- .../Template/cmake/EngineFinder.cmake | 179 +- .../Template/project.json | 24 +- .../template.json | 11 +- repo.json | 2404 ++++++++++++++++- 34 files changed, 2786 insertions(+), 301 deletions(-) delete mode 100644 Gems/WarehouseAutomation/Code/warehouseautomation_editor_private_files.cmake delete mode 100644 Templates/Ros2FleetRobotTemplate/Template/Gem/enabled_gems.cmake delete mode 100644 Templates/Ros2ProjectTemplate/Template/Gem/enabled_gems.cmake delete mode 100644 Templates/Ros2RoboticManipulationTemplate/Template/Gem/enabled_gems.cmake diff --git a/Gems/ProteusRobot/gem.json b/Gems/ProteusRobot/gem.json index aa4479e60c..a3c1ff4010 100644 --- a/Gems/ProteusRobot/gem.json +++ b/Gems/ProteusRobot/gem.json @@ -1,6 +1,6 @@ { "gem_name": "ProteusRobot", - "version": "1.0.0", + "version": "1.1.0", "display_name": "Proteus Robot", "license": "Apache-2.0 or MIT", "license_url": "https://opensource.org/licenses/Apache-2.0", @@ -21,14 +21,14 @@ "requirements": "Requires ROS 2 Gem", "documentation_url": "https://www.o3de.org/docs/user-guide/interactivity/robotics/project-configuration/#ros-2-project-templates", "dependencies": [ - "ROS2==3.0.0" + "ROS2>=3.1.0" ], "repo_uri": "https://raw.githubusercontent.com/o3de/o3de-extras/development", "compatible_engines": [ - "o3de-sdk>=1.2.0", - "o3de>=1.2.0" + "o3de-sdk>=4.1.0", + "o3de>=4.1.0" ], "engine_api_dependencies": [], "restricted": "ProteusRobot", - "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/proteusrobot-1.0.0-gem.zip" -} \ No newline at end of file + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/proteusrobot-1.1.0-gem.zip" +} diff --git a/Gems/ROS2/Code/CMakeLists.txt b/Gems/ROS2/Code/CMakeLists.txt index 233a676eb9..bae588338a 100644 --- a/Gems/ROS2/Code/CMakeLists.txt +++ b/Gems/ROS2/Code/CMakeLists.txt @@ -65,7 +65,7 @@ ly_add_target( Gem::Atom_Feature_Common.Static Gem::Atom_Component_DebugCamera.Static Gem::StartingPointInput - Gem::PhysX.Static + Gem::PhysX5.Static Gem::LmbrCentral.API ) @@ -132,7 +132,7 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS) AZ::AzToolsFramework Gem::CommonFeaturesAtom.Editor.Static Gem::LmbrCentral.API - Gem::PhysX.Editor.Static + Gem::PhysX5.Editor.Static Gem::${gem_name}.Static PRIVATE AZ::AssetBuilderSDK @@ -214,7 +214,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) AZ::AzManipulatorTestFramework.Static Gem::ROS2.Static RUNTIME_DEPENDENCIES - Gem::PhysX.Editor + Gem::PhysX5.Editor ) ly_add_googletest( diff --git a/Gems/ROS2/gem.json b/Gems/ROS2/gem.json index 0d23f65437..875040f127 100644 --- a/Gems/ROS2/gem.json +++ b/Gems/ROS2/gem.json @@ -1,6 +1,6 @@ { "gem_name": "ROS2", - "version": "3.0.0", + "version": "3.1.0", "platforms": [ "Linux" ], @@ -18,8 +18,8 @@ "ROS2" ], "compatible_engines": [ - "o3de-sdk>=3.1.0", - "o3de>=3.1.0" + "o3de-sdk>=4.1.0", + "o3de>=4.1.0" ], "icon_path": "preview.png", "requirements": "Requires ROS 2 installation (supported distributions: Humble). Source your workspace before building the Gem", @@ -29,12 +29,11 @@ "Atom_Feature_Common", "Atom_Component_DebugCamera", "CommonFeaturesAtom", - "PhysX", + "PhysX5", "PrimitiveAssets", "StartingPointInput" - ], "restricted": "ROS2", "repo_uri": "https://raw.githubusercontent.com/o3de/o3de-extras/development", - "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2-2.0.0-gem.zip" + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2-3.1.0-gem.zip" } diff --git a/Gems/RosRobotSample/gem.json b/Gems/RosRobotSample/gem.json index e5c58dc677..01ad716582 100644 --- a/Gems/RosRobotSample/gem.json +++ b/Gems/RosRobotSample/gem.json @@ -1,5 +1,6 @@ { "gem_name": "RosRobotSample", + "version": "1.1.0", "display_name": "ROS Robot Sample", "license": "Apache-2.0 or MIT", "license_url": "https://opensource.org/licenses/Apache-2.0", @@ -20,14 +21,13 @@ "requirements": "Requires ROS 2 Gem", "documentation_url": "", "dependencies": [ - "ROS2==3.0.0" + "ROS2>=3.1.0" ], "compatible_engines": [ - "o3de-sdk>=1.2.0", - "o3de>=1.2.0" + "o3de-sdk>=4.1.0", + "o3de>=4.1.0" ], "repo_uri": "https://raw.githubusercontent.com/o3de/o3de-extras/development", "restricted": "", - "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/rosrobotsample-1.0.0-gem.zip", - "version": "1.0.0" -} \ No newline at end of file + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/rosrobotsample-1.1.0-gem.zip" +} diff --git a/Gems/WarehouseAutomation/Code/CMakeLists.txt b/Gems/WarehouseAutomation/Code/CMakeLists.txt index 8bc6108475..4a1b54063b 100644 --- a/Gems/WarehouseAutomation/Code/CMakeLists.txt +++ b/Gems/WarehouseAutomation/Code/CMakeLists.txt @@ -55,7 +55,7 @@ ly_add_target( AZ::AzCore AZ::AzFramework Gem::CommonFeaturesAtom.Static - Gem::PhysX.Static + Gem::PhysX5.Static ) # Here add ${gem_name} target, it depends on the Private Object library and Public API interface @@ -110,27 +110,6 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS) AZ::AzToolsFramework ) - # The ${gem_name}.Editor.Private.Object target is an internal target - # which is only to be used by this gems CMakeLists.txt and any subdirectories - # Other gems should not use this target - ly_add_target( - NAME ${gem_name}.Editor.Private.Object STATIC - NAMESPACE Gem - FILES_CMAKE - warehouseautomation_editor_private_files.cmake - TARGET_PROPERTIES - O3DE_PRIVATE_TARGET TRUE - INCLUDE_DIRECTORIES - PRIVATE - Include - Source - BUILD_DEPENDENCIES - PUBLIC - AZ::AzToolsFramework - Gem::PhysX.Editor.Static - $ - ) - ly_add_target( NAME ${gem_name}.Editor GEM_MODULE NAMESPACE Gem @@ -146,7 +125,8 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS) PUBLIC Gem::${gem_name}.Editor.API PRIVATE - Gem::${gem_name}.Editor.Private.Object + AZ::AzToolsFramework + ${gem_name}.Private.Object ) # By default, we will specify that the above target ${gem_name} would be used by @@ -199,8 +179,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) if(PAL_TRAIT_BUILD_HOST_TOOLS) # We are a host platform, see if Editor tests are supported on this platform if(PAL_TRAIT_WAREHOUSEAUTOMATION_EDITOR_TEST_SUPPORTED) - # We support ${gem_name}.Editor.Tests on this platform, add ${gem_name}.Editor.Tests target which depends on - # private ${gem_name}.Editor.Private.Object target + # We support ${gem_name}.Editor.Tests on this platform ly_add_target( NAME ${gem_name}.Editor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE} NAMESPACE Gem @@ -214,7 +193,8 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) BUILD_DEPENDENCIES PRIVATE AZ::AzTest - Gem::${gem_name}.Editor.Private.Object + AZ::AzToolsFramework + Gem::PhysX5.Editor.Static ) # Add ${gem_name}.Editor.Tests to googletest diff --git a/Gems/WarehouseAutomation/Code/Platform/Linux/PAL_linux.cmake b/Gems/WarehouseAutomation/Code/Platform/Linux/PAL_linux.cmake index 36fc1c5727..563dd1d593 100644 --- a/Gems/WarehouseAutomation/Code/Platform/Linux/PAL_linux.cmake +++ b/Gems/WarehouseAutomation/Code/Platform/Linux/PAL_linux.cmake @@ -4,4 +4,5 @@ # SPDX-License-Identifier: Apache-2.0 OR MIT set(PAL_TRAIT_WAREHOUSEAUTOMATION_SUPPORTED TRUE) set(PAL_TRAIT_WAREHOUSEAUTOMATION_TEST_SUPPORTED TRUE) -set(PAL_TRAIT_WAREHOUSEAUTOMATION_EDITOR_TEST_SUPPORTED TRUE) +# Currently there are no tests defined for this project. Once tests are added, set the following trait to TRUE +set(PAL_TRAIT_WAREHOUSEAUTOMATION_EDITOR_TEST_SUPPORTED FALSE) diff --git a/Gems/WarehouseAutomation/Code/warehouseautomation_editor_private_files.cmake b/Gems/WarehouseAutomation/Code/warehouseautomation_editor_private_files.cmake deleted file mode 100644 index 71db56075f..0000000000 --- a/Gems/WarehouseAutomation/Code/warehouseautomation_editor_private_files.cmake +++ /dev/null @@ -1,6 +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 -set(FILES -) diff --git a/Gems/WarehouseAutomation/gem.json b/Gems/WarehouseAutomation/gem.json index 1dffb8dbb4..a648d471cc 100644 --- a/Gems/WarehouseAutomation/gem.json +++ b/Gems/WarehouseAutomation/gem.json @@ -1,6 +1,6 @@ { - "version": "1.0.0", "gem_name": "WarehouseAutomation", + "version": "1.1.0", "display_name": "Warehouse Automation", "license": "Apache-2.0", "license_url": "https://opensource.org/licenses/Apache-2.0", @@ -15,18 +15,18 @@ "WarehouseAutomation" ], "compatible_engines": [ - "o3de-sdk>=1.2.0", - "o3de>=1.2.0" + "o3de-sdk>=4.1.0", + "o3de>=4.1.0" ], "platforms": [ "Linux" ], "icon_path": "preview.png", - "requirements": "This gem requires ROS 2 gem and PhysX gem.", + "requirements": "This gem requires ROS 2 gem and PhysX5 gem.", "dependencies": [ - "ROS2==3.0.0", - "PhysX" + "ROS2>=3.1.0" ], - "repo_uri": "https://github.com/o3de/o3de-extras", - "restricted": "WarehouseAutomation" -} \ No newline at end of file + "repo_uri": "https://raw.githubusercontent.com/o3de/o3de-extras/development", + "restricted": "WarehouseAutomation", + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/warehouseautomation-1.1.0-gem.zip" +} diff --git a/Templates/Ros2FleetRobotTemplate/Template/Gem/${Name}_files.cmake b/Templates/Ros2FleetRobotTemplate/Template/Gem/${Name}_files.cmake index d34965533c..0120c5092d 100644 --- a/Templates/Ros2FleetRobotTemplate/Template/Gem/${Name}_files.cmake +++ b/Templates/Ros2FleetRobotTemplate/Template/Gem/${Name}_files.cmake @@ -14,5 +14,4 @@ set(FILES Include/${Name}/${Name}Bus.h Source/${Name}SystemComponent.cpp Source/${Name}SystemComponent.h - enabled_gems.cmake ) diff --git a/Templates/Ros2FleetRobotTemplate/Template/Gem/CMakeLists.txt b/Templates/Ros2FleetRobotTemplate/Template/Gem/CMakeLists.txt index 3f4c3ca38c..7e0d2afaf1 100644 --- a/Templates/Ros2FleetRobotTemplate/Template/Gem/CMakeLists.txt +++ b/Templates/Ros2FleetRobotTemplate/Template/Gem/CMakeLists.txt @@ -98,6 +98,3 @@ o3de_find_ancestor_project_root(project_path project_name "${CMAKE_CURRENT_SOURC if (NOT project_name) set(project_name ${Name}) endif() - -# Enable the specified list of gems from GEM_FILE or GEMS list for this specific project: -ly_enable_gems(PROJECT_NAME ${project_name} GEM_FILE enabled_gems.cmake) diff --git a/Templates/Ros2FleetRobotTemplate/Template/Gem/enabled_gems.cmake b/Templates/Ros2FleetRobotTemplate/Template/Gem/enabled_gems.cmake deleted file mode 100644 index 581e2958d8..0000000000 --- a/Templates/Ros2FleetRobotTemplate/Template/Gem/enabled_gems.cmake +++ /dev/null @@ -1,35 +0,0 @@ -# {BEGIN_LICENSE} -# -# 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 -# -# -# {END_LICENSE} -# This file is copied during engine registration. Edits to this file will be lost next -# time a registration happens. - -set(ENABLED_GEMS - ${Name} - Atom - CameraFramework - DebugDraw - EditorPythonBindings - EMotionFX - ImGui - LyShine - PhysX - PrimitiveAssets - PrefabBuilder - ScriptCanvasPhysics - ScriptEvents - StartingPointInput - TextureAtlas - WhiteBox - DiffuseProbeGrid - Compression - ProteusRobot - WarehouseAssets - ROS2 -) diff --git a/Templates/Ros2FleetRobotTemplate/Template/Registry/physxdebugconfiguration.setreg b/Templates/Ros2FleetRobotTemplate/Template/Registry/physxdebugconfiguration.setreg index 855d487988..bb15af0459 100644 --- a/Templates/Ros2FleetRobotTemplate/Template/Registry/physxdebugconfiguration.setreg +++ b/Templates/Ros2FleetRobotTemplate/Template/Registry/physxdebugconfiguration.setreg @@ -1,7 +1,7 @@ { "Amazon": { "Gems": { - "PhysX": { + "PhysX5": { "Debug": { "PhysXDebugConfiguration": {} } diff --git a/Templates/Ros2FleetRobotTemplate/Template/Registry/physxdefaultsceneconfiguration.setreg b/Templates/Ros2FleetRobotTemplate/Template/Registry/physxdefaultsceneconfiguration.setreg index 41bfb9d497..35b4a5f6ea 100644 --- a/Templates/Ros2FleetRobotTemplate/Template/Registry/physxdefaultsceneconfiguration.setreg +++ b/Templates/Ros2FleetRobotTemplate/Template/Registry/physxdefaultsceneconfiguration.setreg @@ -1,7 +1,7 @@ { "Amazon": { "Gems": { - "PhysX": { + "PhysX5": { "DefaultSceneConfiguration": {} } } diff --git a/Templates/Ros2FleetRobotTemplate/Template/Registry/physxsystemconfiguration.setreg b/Templates/Ros2FleetRobotTemplate/Template/Registry/physxsystemconfiguration.setreg index 03fb49d3c9..d3989e7bd9 100644 --- a/Templates/Ros2FleetRobotTemplate/Template/Registry/physxsystemconfiguration.setreg +++ b/Templates/Ros2FleetRobotTemplate/Template/Registry/physxsystemconfiguration.setreg @@ -1,7 +1,7 @@ { "Amazon": { "Gems": { - "PhysX": { + "PhysX5": { "PhysXSystemConfiguration": { "CollisionConfig": { "Layers": { diff --git a/Templates/Ros2FleetRobotTemplate/Template/cmake/EngineFinder.cmake b/Templates/Ros2FleetRobotTemplate/Template/cmake/EngineFinder.cmake index 29114cb429..d0b1baae8e 100644 --- a/Templates/Ros2FleetRobotTemplate/Template/cmake/EngineFinder.cmake +++ b/Templates/Ros2FleetRobotTemplate/Template/cmake/EngineFinder.cmake @@ -139,6 +139,10 @@ endforeach() if(O3DE_MOST_COMPATIBLE_ENGINE_PATH) message(STATUS "Selecting engine '${O3DE_MOST_COMPATIBLE_ENGINE_PATH}'") + # Make sure PACKAGE_VERSION_COMPATIBLE is set so Findo3de.cmake knows + # compatibility was checked + set(PACKAGE_VERSION_COMPATIBLE True) + set(PACKAGE_VERSION O3DE_MOST_COMPATIBLE_ENGINE_VERSION) list(APPEND CMAKE_MODULE_PATH "${O3DE_MOST_COMPATIBLE_ENGINE_PATH}/cmake") return() endif() diff --git a/Templates/Ros2FleetRobotTemplate/Template/project.json b/Templates/Ros2FleetRobotTemplate/Template/project.json index 90af7ebee8..9193d25e32 100644 --- a/Templates/Ros2FleetRobotTemplate/Template/project.json +++ b/Templates/Ros2FleetRobotTemplate/Template/project.json @@ -20,8 +20,25 @@ "restricted": "${Name}", "engine_version": "1.0.0", "gem_names": [ - "ProteusRobot", - "WarehouseAssets", - "ROS2" + "Atom", + "CameraFramework", + "Compression", + "DebugDraw", + "DiffuseProbeGrid", + "EditorPythonBindings", + "EMotionFX", + "ImGui", + "LyShine", + "PhysX5", + "PrimitiveAssets", + "PrefabBuilder", + "ProteusRobot>=1.1.0", + "ROS2>=3.1.0", + "ScriptCanvasPhysics", + "ScriptEvents", + "StartingPointInput", + "TextureAtlas", + "WhiteBox", + "WarehouseAssets" ] } diff --git a/Templates/Ros2FleetRobotTemplate/template.json b/Templates/Ros2FleetRobotTemplate/template.json index d97ea702d1..4c10077852 100644 --- a/Templates/Ros2FleetRobotTemplate/template.json +++ b/Templates/Ros2FleetRobotTemplate/template.json @@ -1,6 +1,6 @@ { "template_name": "Ros2FleetRobotTemplate", - "version": "1.1.0", + "version": "1.2.0", "origin": "Open 3D Engine Extras", "origin_url": "https://github.com/o3de/o3de-extras", "repo_uri": "https://raw.githubusercontent.com/o3de/o3de-extras/development", @@ -95,10 +95,6 @@ "file": "Gem/Source/${Name}SystemComponent.h", "isTemplated": true }, - { - "file": "Gem/enabled_gems.cmake", - "isTemplated": true - }, { "file": "Gem/gem.json", "isTemplated": true @@ -355,7 +351,6 @@ "file": "Examples/ros2_ws/src/o3de_fleet_nav/rviz/nav2_namespaced_view.rviz", "isTemplated": false } - ], "createDirectories": [ { @@ -494,5 +489,5 @@ "dir": "Examples/ros2_ws/src/o3de_fleet_nav/test" } ], - "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2fleetrobottemplate-1.1.0-template.zip" + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2fleetrobottemplate-1.2.0-template.zip" } diff --git a/Templates/Ros2ProjectTemplate/Template/Gem/${NameLower}_files.cmake b/Templates/Ros2ProjectTemplate/Template/Gem/${NameLower}_files.cmake index 0d0d22c96b..77e818e921 100644 --- a/Templates/Ros2ProjectTemplate/Template/Gem/${NameLower}_files.cmake +++ b/Templates/Ros2ProjectTemplate/Template/Gem/${NameLower}_files.cmake @@ -12,5 +12,4 @@ set(FILES Source/${Name}SystemComponent.h Source/${Name}SampleComponent.cpp Source/${Name}SampleComponent.h - enabled_gems.cmake ) diff --git a/Templates/Ros2ProjectTemplate/Template/Gem/CMakeLists.txt b/Templates/Ros2ProjectTemplate/Template/Gem/CMakeLists.txt index 0f4cd15e01..3f026d35c1 100644 --- a/Templates/Ros2ProjectTemplate/Template/Gem/CMakeLists.txt +++ b/Templates/Ros2ProjectTemplate/Template/Gem/CMakeLists.txt @@ -136,10 +136,3 @@ endif() # if enabled, ${gem_name} is used by all kinds of applications ly_create_alias(NAME ${gem_name}.Clients NAMESPACE Gem TARGETS Gem::${gem_name}) ly_create_alias(NAME ${gem_name}.Servers NAMESPACE Gem TARGETS Gem::${gem_name}) - -################################################################################ -# Gem dependencies -################################################################################ - -# Enable the specified list of gems from GEM_FILE or GEMS list for this specific project: -ly_enable_gems(PROJECT_NAME ${Name} GEM_FILE enabled_gems.cmake) diff --git a/Templates/Ros2ProjectTemplate/Template/Gem/enabled_gems.cmake b/Templates/Ros2ProjectTemplate/Template/Gem/enabled_gems.cmake deleted file mode 100644 index 4e23104a1e..0000000000 --- a/Templates/Ros2ProjectTemplate/Template/Gem/enabled_gems.cmake +++ /dev/null @@ -1,36 +0,0 @@ -# {BEGIN_LICENSE} -# 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 -# -# {END_LICENSE} - -set(ENABLED_GEMS - ${Name} - Atom - AudioSystem - CameraFramework - DebugDraw - EditorPythonBindings - EMotionFX - GameState - ImGui - LandscapeCanvas - LyShine - PhysX - PrimitiveAssets - PrefabBuilder - SaveData - ScriptCanvasPhysics - ScriptEvents - StartingPointInput - TextureAtlas - WhiteBox - DiffuseProbeGrid - Compression - WarehouseSample - RosRobotSample - ROS2 - ImGui -) diff --git a/Templates/Ros2ProjectTemplate/Template/Registry/physxsystemconfiguration.setreg b/Templates/Ros2ProjectTemplate/Template/Registry/physxsystemconfiguration.setreg index e4842852c0..b2e4145369 100644 --- a/Templates/Ros2ProjectTemplate/Template/Registry/physxsystemconfiguration.setreg +++ b/Templates/Ros2ProjectTemplate/Template/Registry/physxsystemconfiguration.setreg @@ -1,7 +1,7 @@ { "Amazon": { "Gems": { - "PhysX": { + "PhysX5": { "PhysXSystemConfiguration": { "FixedTimeStep": 0.004999999888241291, "CollisionConfig": { diff --git a/Templates/Ros2ProjectTemplate/Template/cmake/EngineFinder.cmake b/Templates/Ros2ProjectTemplate/Template/cmake/EngineFinder.cmake index 15b96eb8a9..d0b1baae8e 100644 --- a/Templates/Ros2ProjectTemplate/Template/cmake/EngineFinder.cmake +++ b/Templates/Ros2ProjectTemplate/Template/cmake/EngineFinder.cmake @@ -7,35 +7,62 @@ # # # {END_LICENSE} -# This file is copied during engine registration. Edits to this file will be lost next -# time a registration happens. +# Edits to this file may be lost in upgrades. Instead of changing this file, use +# the 'engine_finder_cmake_path' key in your project.json or user/project.json to specify +# an alternate .cmake file to use instead of this one. include_guard() -# Read the engine name from the project_json file -file(READ ${CMAKE_CURRENT_SOURCE_DIR}/project.json project_json) set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/project.json) -string(JSON LY_ENGINE_NAME_TO_USE ERROR_VARIABLE json_error GET ${project_json} engine) -if(json_error) - message(FATAL_ERROR "Unable to read key 'engine' from 'project.json'\nError: ${json_error}") -endif() - +# Option 1: Use engine manually set in CMAKE_MODULE_PATH +# CMAKE_MODULE_PATH must contain a path to an engine's cmake folder if(CMAKE_MODULE_PATH) foreach(module_path ${CMAKE_MODULE_PATH}) - if(EXISTS ${module_path}/Findo3de.cmake) - file(READ ${module_path}/../engine.json engine_json) - string(JSON engine_name ERROR_VARIABLE json_error GET ${engine_json} engine_name) - if(json_error) - message(FATAL_ERROR "Unable to read key 'engine_name' from 'engine.json'\nError: ${json_error}") - endif() - if(LY_ENGINE_NAME_TO_USE STREQUAL engine_name) - return() # Engine being forced through CMAKE_MODULE_PATH + cmake_path(SET module_engine_version_cmake_path "${module_path}/o3deConfigVersion.cmake") + if(EXISTS "${module_engine_version_cmake_path}") + include("${module_engine_version_cmake_path}") + if(PACKAGE_VERSION_COMPATIBLE) + message(STATUS "Selecting engine from CMAKE_MODULE_PATH '${module_path}'") + return() + else() + message(WARNING "Not using engine from CMAKE_MODULE_PATH '${module_path}' because it is not compatible with this project.") endif() endif() endforeach() + message(VERBOSE "No compatible engine found from CMAKE_MODULE_PATH '${CMAKE_MODULE_PATH}'.") +endif() + +# Option 2: Use the engine from the 'engine_path' field in /user/project.json +cmake_path(SET O3DE_USER_PROJECT_JSON_PATH ${CMAKE_CURRENT_SOURCE_DIR}/user/project.json) +if(EXISTS "${O3DE_USER_PROJECT_JSON_PATH}") + file(READ "${O3DE_USER_PROJECT_JSON_PATH}" user_project_json) + if(user_project_json) + string(JSON user_project_engine_path ERROR_VARIABLE json_error GET ${user_project_json} engine_path) + if(user_project_engine_path AND NOT json_error) + cmake_path(SET user_engine_version_cmake_path "${user_project_engine_path}/cmake/o3deConfigVersion.cmake") + if(EXISTS "${user_engine_version_cmake_path}") + include("${user_engine_version_cmake_path}") + if(PACKAGE_VERSION_COMPATIBLE) + message(STATUS "Selecting engine '${user_project_engine_path}' from 'engine_path' in '/user/project.json'.") + list(APPEND CMAKE_MODULE_PATH "${user_project_engine_path}/cmake") + return() + else() + message(FATAL_ERROR "The engine at '${user_project_engine_path}' from 'engine_path' in '${O3DE_USER_PROJECT_JSON_PATH}' is not compatible with this project. Please register this project with a compatible engine, or remove the local override by running:\nscripts\\o3de edit-project-properties -pp ${CMAKE_CURRENT_SOURCE_DIR} --user --engine-path \"\"") + endif() + else() + message(FATAL_ERROR "This project cannot use the engine at '${user_project_engine_path}' because the version cmake file '${user_engine_version_cmake_path}' needed to check compatibility is missing. \nPlease register this project with a compatible engine, or remove the local override by running:\nscripts\\o3de edit-project-properties -pp ${CMAKE_CURRENT_SOURCE_DIR} --user --engine-path \"\"\nIf you want this project to use an older engine(not recommended), provide a custom EngineFinder.cmake using the o3de CLI's --engine-finder-cmake-path option. ") + endif() + elseif(json_error AND ${user_project_engine_path} STREQUAL "NOTFOUND") + # When the value is just NOTFOUND that means there is a JSON + # parsing error, and not simply a missing key + message(FATAL_ERROR "Unable to read 'engine_path' from '${user_project_engine_path}'\nError: ${json-error}") + endif() + endif() endif() + +# Option 3: Find a compatible engine registered in ~/.o3de/o3de_manifest.json if(DEFINED ENV{USERPROFILE} AND EXISTS $ENV{USERPROFILE}) set(manifest_path $ENV{USERPROFILE}/.o3de/o3de_manifest.json) # Windows else() @@ -43,50 +70,105 @@ else() endif() set(registration_error [=[ +To enable more verbose logging, run the cmake command again with '--log-level VERBOSE' Engine registration is required before configuring a project. Run 'scripts/o3de register --this-engine' from the engine root. ]=]) -# Read the ~/.o3de/o3de_manifest.json file and look through the 'engines_path' object. -# Find a key that matches LY_ENGINE_NAME_TO_USE and use that as the engine path. +# Create a list of all engines if(EXISTS ${manifest_path}) file(READ ${manifest_path} manifest_json) set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${manifest_path}) - string(JSON engines_path_count ERROR_VARIABLE json_error LENGTH ${manifest_json} engines_path) + string(JSON engines_count ERROR_VARIABLE json_error LENGTH ${manifest_json} engines) if(json_error) - message(FATAL_ERROR "Unable to read key 'engines_path' from '${manifest_path}'\nError: ${json_error}\n${registration_error}") + message(FATAL_ERROR "Unable to read key 'engines' from '${manifest_path}'\nError: ${json_error}\n${registration_error}") endif() - string(JSON engines_path_type ERROR_VARIABLE json_error TYPE ${manifest_json} engines_path) - if(json_error OR NOT ${engines_path_type} STREQUAL "OBJECT") - message(FATAL_ERROR "Type of 'engines_path' in '${manifest_path}' is not a JSON Object\nError: ${json_error}") + string(JSON engines_type ERROR_VARIABLE json_error TYPE ${manifest_json} engines) + if(json_error OR NOT ${engines_type} STREQUAL "ARRAY") + message(FATAL_ERROR "Type of 'engines' in '${manifest_path}' is not a JSON ARRAY\nError: ${json_error}\n${registration_error}") endif() - math(EXPR engines_path_count "${engines_path_count}-1") - foreach(engine_path_index RANGE ${engines_path_count}) - string(JSON engine_name ERROR_VARIABLE json_error MEMBER ${manifest_json} engines_path ${engine_path_index}) + math(EXPR engines_count "${engines_count}-1") + foreach(array_index RANGE ${engines_count}) + string(JSON manifest_engine_path ERROR_VARIABLE json_error GET ${manifest_json} engines "${array_index}") if(json_error) - message(FATAL_ERROR "Unable to read 'engines_path/${engine_path_index}' from '${manifest_path}'\nError: ${json_error}") + message(FATAL_ERROR "Unable to read 'engines/${array_index}' from '${manifest_path}'\nError: ${json_error}\n${registration_error}") endif() + list(APPEND O3DE_ENGINE_PATHS ${manifest_engine_path}) + endforeach() +elseif(NOT CMAKE_MODULE_PATH) + message(FATAL_ERROR "O3DE Manifest file not found at '${manifest_path}'.\n${registration_error}") +endif() - if(LY_ENGINE_NAME_TO_USE STREQUAL engine_name) - string(JSON engine_path ERROR_VARIABLE json_error GET ${manifest_json} engines_path ${engine_name}) - if(json_error) - message(FATAL_ERROR "Unable to read value from 'engines_path/${engine_name}'\nError: ${json_error}") - endif() +# We cannot just run find_package() on the list of engine paths because +# CMAKE_FIND_PACKAGE_SORT_ORDER sorts based on file name and chooses +# the first package that returns PACKAGE_VERSION_COMPATIBLE +set(O3DE_MOST_COMPATIBLE_ENGINE_PATH "") +set(O3DE_MOST_COMPATIBLE_ENGINE_VERSION "") +foreach(manifest_engine_path IN LISTS O3DE_ENGINE_PATHS) + # Does this engine have a config version cmake file? + cmake_path(SET version_cmake_path "${manifest_engine_path}/cmake/o3deConfigVersion.cmake") + if(NOT EXISTS "${version_cmake_path}") + message(VERBOSE "Ignoring '${manifest_engine_path}' because no config version cmake file was found at '${version_cmake_path}'") + continue() + endif() - if(engine_path) - list(APPEND CMAKE_MODULE_PATH "${engine_path}/cmake") - return() - endif() + unset(PACKAGE_VERSION) + unset(PACKAGE_VERSION_COMPATIBLE) + include("${version_cmake_path}") + + # Follow the version checking convention from find_package(CONFIG) + if(PACKAGE_VERSION_COMPATIBLE) + if(NOT O3DE_MOST_COMPATIBLE_ENGINE_PATH) + set(O3DE_MOST_COMPATIBLE_ENGINE_PATH "${manifest_engine_path}") + set(O3DE_MOST_COMPATIBLE_ENGINE_VERSION ${PACKAGE_VERSION}) + message(VERBOSE "Found compatible engine '${manifest_engine_path}' with version '${PACKAGE_VERSION}'") + elseif(${PACKAGE_VERSION} VERSION_GREATER ${O3DE_MOST_COMPATIBLE_ENGINE_VERSION}) + set(O3DE_MOST_COMPATIBLE_ENGINE_PATH "${manifest_engine_path}") + set(O3DE_MOST_COMPATIBLE_ENGINE_VERSION ${PACKAGE_VERSION}) + message(VERBOSE "Found more compatible engine '${manifest_engine_path}' with version '${PACKAGE_VERSION}' because it has a greater version number.") + else() + message(VERBOSE "Not using engine '${manifest_engine_path}' with version '${PACKAGE_VERSION}' because it doesn't have a greater version number or has a different engine name.") endif() - endforeach() - - message(FATAL_ERROR "The project.json uses engine name '${LY_ENGINE_NAME_TO_USE}' but no engine with that name has been registered.\n${registration_error}") -else() - # If the user is passing CMAKE_MODULE_PATH we assume thats where we will find the engine - if(NOT CMAKE_MODULE_PATH) - message(FATAL_ERROR "O3DE Manifest file not found.\n${registration_error}") + else() + message(VERBOSE "Ignoring '${manifest_engine_path}' because it is not a compatible engine.") + endif() +endforeach() + +if(O3DE_MOST_COMPATIBLE_ENGINE_PATH) + message(STATUS "Selecting engine '${O3DE_MOST_COMPATIBLE_ENGINE_PATH}'") + # Make sure PACKAGE_VERSION_COMPATIBLE is set so Findo3de.cmake knows + # compatibility was checked + set(PACKAGE_VERSION_COMPATIBLE True) + set(PACKAGE_VERSION O3DE_MOST_COMPATIBLE_ENGINE_VERSION) + list(APPEND CMAKE_MODULE_PATH "${O3DE_MOST_COMPATIBLE_ENGINE_PATH}/cmake") + return() +endif() + +# No compatible engine was found. +# Read the 'engine' field in project.json or user/project.json for more helpful messages +if(user_project_json) + string(JSON user_project_engine ERROR_VARIABLE json_error GET ${user_project_json} engine) +endif() + +if(NOT user_project_engine) + file(READ ${CMAKE_CURRENT_SOURCE_DIR}/project.json o3de_project_json) + string(JSON project_engine ERROR_VARIABLE json_error GET ${o3de_project_json} engine) + if(json_error AND ${project_engine} STREQUAL "NOTFOUND") + message(FATAL_ERROR "Unable to read key 'engine' from 'project.json'\nError: ${json_error}") endif() endif() + +if(user_project_engine) + message(FATAL_ERROR "The local '${O3DE_USER_PROJECT_JSON_PATH}' engine is '${user_project_engine}' but no compatible engine with that name and version was found. Please register the compatible engine, or remove the local engine override.\n${registration_error}") +elseif(project_engine) + message(FATAL_ERROR "The project.json engine is '${project_engine}' but no engine with that name and version was found.\n${registration_error}") +else() + set(project_registration_error [=[ + Project registration is required before configuring a project. + Run 'scripts/o3de register -pp PROJECT_PATH --engine-path ENGINE_PATH' from the engine root. + ]=]) + message(FATAL_ERROR "${project_registration_error}") +endif() diff --git a/Templates/Ros2ProjectTemplate/Template/project.json b/Templates/Ros2ProjectTemplate/Template/project.json index 89b46bcdc3..a2946eca14 100644 --- a/Templates/Ros2ProjectTemplate/Template/project.json +++ b/Templates/Ros2ProjectTemplate/Template/project.json @@ -18,8 +18,29 @@ ], "restricted": "${Name}", "gem_names": [ - "ROS2", - "WarehouseSample", - "RosRobotSample" + "Atom", + "AudioSystem", + "CameraFramework", + "Compression", + "DebugDraw", + "DiffuseProbeGrid", + "EditorPythonBindings", + "EMotionFX", + "GameState", + "ImGui", + "LandscapeCanvas", + "LyShine", + "PhysX5", + "PrimitiveAssets", + "PrefabBuilder", + "ROS2>=3.1.0", + "RosRobotSample>=1.1.0", + "SaveData", + "ScriptCanvasPhysics", + "ScriptEvents", + "StartingPointInput", + "TextureAtlas", + "WhiteBox", + "WarehouseSample" ] } diff --git a/Templates/Ros2ProjectTemplate/template.json b/Templates/Ros2ProjectTemplate/template.json index c13157b26a..c9c6638a4d 100644 --- a/Templates/Ros2ProjectTemplate/template.json +++ b/Templates/Ros2ProjectTemplate/template.json @@ -1,6 +1,6 @@ { "template_name": "Ros2ProjectTemplate", - "version": "1.0.0", + "version": "1.1.0", "origin": "Open 3D Engine Extras", "origin_url": "https://github.com/o3de/o3de-extras", "license": "https://github.com/o3de/o3de-extras/tree/development/Templates/Ros2ProjectTemplate/Template/LICENSE.txt", @@ -58,7 +58,6 @@ "file": "Gem/${NameLower}_editor_shared_files.cmake", "isTemplated": true }, - { "file": "Gem/CMakeLists.txt", "isTemplated": true @@ -167,10 +166,6 @@ "file": "Gem/Source/${Name}SampleComponent.h", "isTemplated": true }, - { - "file": "Gem/enabled_gems.cmake", - "isTemplated": true - }, { "file": "Gem/gem.json", "isTemplated": true @@ -558,5 +553,5 @@ } ], "repo_uri": "https://raw.githubusercontent.com/o3de/o3de-extras/development", - "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2projecttemplate-1.0.0-template.zip" + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2projecttemplate-1.1.0-template.zip" } diff --git a/Templates/Ros2RoboticManipulationTemplate/Template/Gem/${Name}_files.cmake b/Templates/Ros2RoboticManipulationTemplate/Template/Gem/${Name}_files.cmake index cd4149364d..30fcbc250f 100644 --- a/Templates/Ros2RoboticManipulationTemplate/Template/Gem/${Name}_files.cmake +++ b/Templates/Ros2RoboticManipulationTemplate/Template/Gem/${Name}_files.cmake @@ -5,5 +5,4 @@ set(FILES Include/${Name}/${Name}Bus.h Source/${Name}SystemComponent.cpp Source/${Name}SystemComponent.h - enabled_gems.cmake ) diff --git a/Templates/Ros2RoboticManipulationTemplate/Template/Gem/CMakeLists.txt b/Templates/Ros2RoboticManipulationTemplate/Template/Gem/CMakeLists.txt index 3f4c3ca38c..7e0d2afaf1 100644 --- a/Templates/Ros2RoboticManipulationTemplate/Template/Gem/CMakeLists.txt +++ b/Templates/Ros2RoboticManipulationTemplate/Template/Gem/CMakeLists.txt @@ -98,6 +98,3 @@ o3de_find_ancestor_project_root(project_path project_name "${CMAKE_CURRENT_SOURC if (NOT project_name) set(project_name ${Name}) endif() - -# Enable the specified list of gems from GEM_FILE or GEMS list for this specific project: -ly_enable_gems(PROJECT_NAME ${project_name} GEM_FILE enabled_gems.cmake) diff --git a/Templates/Ros2RoboticManipulationTemplate/Template/Gem/enabled_gems.cmake b/Templates/Ros2RoboticManipulationTemplate/Template/Gem/enabled_gems.cmake deleted file mode 100644 index 6bea4807dd..0000000000 --- a/Templates/Ros2RoboticManipulationTemplate/Template/Gem/enabled_gems.cmake +++ /dev/null @@ -1,26 +0,0 @@ -# This file is copied during engine registration. Edits to this file will be lost next -# time a registration happens. - -set(ENABLED_GEMS - ${Name} - Atom - CameraFramework - DebugDraw - EditorPythonBindings - EMotionFX - ImGui - LyShine - PhysX - PrimitiveAssets - PrefabBuilder - ScriptCanvasPhysics - ScriptEvents - StartingPointInput - TextureAtlas - WhiteBox - DiffuseProbeGrid - Compression - WarehouseAssets - ROS2 - PhysXDebug -) diff --git a/Templates/Ros2RoboticManipulationTemplate/Template/Registry/physxdebugconfiguration.setreg b/Templates/Ros2RoboticManipulationTemplate/Template/Registry/physxdebugconfiguration.setreg index 855d487988..bb15af0459 100644 --- a/Templates/Ros2RoboticManipulationTemplate/Template/Registry/physxdebugconfiguration.setreg +++ b/Templates/Ros2RoboticManipulationTemplate/Template/Registry/physxdebugconfiguration.setreg @@ -1,7 +1,7 @@ { "Amazon": { "Gems": { - "PhysX": { + "PhysX5": { "Debug": { "PhysXDebugConfiguration": {} } diff --git a/Templates/Ros2RoboticManipulationTemplate/Template/Registry/physxdefaultsceneconfiguration.setreg b/Templates/Ros2RoboticManipulationTemplate/Template/Registry/physxdefaultsceneconfiguration.setreg index 41bfb9d497..35b4a5f6ea 100644 --- a/Templates/Ros2RoboticManipulationTemplate/Template/Registry/physxdefaultsceneconfiguration.setreg +++ b/Templates/Ros2RoboticManipulationTemplate/Template/Registry/physxdefaultsceneconfiguration.setreg @@ -1,7 +1,7 @@ { "Amazon": { "Gems": { - "PhysX": { + "PhysX5": { "DefaultSceneConfiguration": {} } } diff --git a/Templates/Ros2RoboticManipulationTemplate/Template/Registry/physxsystemconfiguration.setreg b/Templates/Ros2RoboticManipulationTemplate/Template/Registry/physxsystemconfiguration.setreg index 1f4846ce22..6cac526a47 100644 --- a/Templates/Ros2RoboticManipulationTemplate/Template/Registry/physxsystemconfiguration.setreg +++ b/Templates/Ros2RoboticManipulationTemplate/Template/Registry/physxsystemconfiguration.setreg @@ -1,7 +1,7 @@ { "Amazon": { "Gems": { - "PhysX": { + "PhysX5": { "PhysXSystemConfiguration": { "FixedTimeStep": 0.009999999776482582, "CollisionConfig": { diff --git a/Templates/Ros2RoboticManipulationTemplate/Template/cmake/EngineFinder.cmake b/Templates/Ros2RoboticManipulationTemplate/Template/cmake/EngineFinder.cmake index 5b179d1b56..d0b1baae8e 100644 --- a/Templates/Ros2RoboticManipulationTemplate/Template/cmake/EngineFinder.cmake +++ b/Templates/Ros2RoboticManipulationTemplate/Template/cmake/EngineFinder.cmake @@ -1,32 +1,68 @@ -# This file is copied during engine registration. Edits to this file will be lost next -# time a registration happens. +# {BEGIN_LICENSE} +# +# 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 +# +# +# {END_LICENSE} +# Edits to this file may be lost in upgrades. Instead of changing this file, use +# the 'engine_finder_cmake_path' key in your project.json or user/project.json to specify +# an alternate .cmake file to use instead of this one. include_guard() -# Read the engine name from the project_json file -file(READ ${CMAKE_CURRENT_SOURCE_DIR}/project.json project_json) set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/project.json) -string(JSON LY_ENGINE_NAME_TO_USE ERROR_VARIABLE json_error GET ${project_json} engine) -if(json_error) - message(FATAL_ERROR "Unable to read key 'engine' from 'project.json'\nError: ${json_error}") -endif() - +# Option 1: Use engine manually set in CMAKE_MODULE_PATH +# CMAKE_MODULE_PATH must contain a path to an engine's cmake folder if(CMAKE_MODULE_PATH) foreach(module_path ${CMAKE_MODULE_PATH}) - if(EXISTS ${module_path}/Findo3de.cmake) - file(READ ${module_path}/../engine.json engine_json) - string(JSON engine_name ERROR_VARIABLE json_error GET ${engine_json} engine_name) - if(json_error) - message(FATAL_ERROR "Unable to read key 'engine_name' from 'engine.json'\nError: ${json_error}") - endif() - if(LY_ENGINE_NAME_TO_USE STREQUAL engine_name) - return() # Engine being forced through CMAKE_MODULE_PATH + cmake_path(SET module_engine_version_cmake_path "${module_path}/o3deConfigVersion.cmake") + if(EXISTS "${module_engine_version_cmake_path}") + include("${module_engine_version_cmake_path}") + if(PACKAGE_VERSION_COMPATIBLE) + message(STATUS "Selecting engine from CMAKE_MODULE_PATH '${module_path}'") + return() + else() + message(WARNING "Not using engine from CMAKE_MODULE_PATH '${module_path}' because it is not compatible with this project.") endif() endif() endforeach() + message(VERBOSE "No compatible engine found from CMAKE_MODULE_PATH '${CMAKE_MODULE_PATH}'.") +endif() + +# Option 2: Use the engine from the 'engine_path' field in /user/project.json +cmake_path(SET O3DE_USER_PROJECT_JSON_PATH ${CMAKE_CURRENT_SOURCE_DIR}/user/project.json) +if(EXISTS "${O3DE_USER_PROJECT_JSON_PATH}") + file(READ "${O3DE_USER_PROJECT_JSON_PATH}" user_project_json) + if(user_project_json) + string(JSON user_project_engine_path ERROR_VARIABLE json_error GET ${user_project_json} engine_path) + if(user_project_engine_path AND NOT json_error) + cmake_path(SET user_engine_version_cmake_path "${user_project_engine_path}/cmake/o3deConfigVersion.cmake") + if(EXISTS "${user_engine_version_cmake_path}") + include("${user_engine_version_cmake_path}") + if(PACKAGE_VERSION_COMPATIBLE) + message(STATUS "Selecting engine '${user_project_engine_path}' from 'engine_path' in '/user/project.json'.") + list(APPEND CMAKE_MODULE_PATH "${user_project_engine_path}/cmake") + return() + else() + message(FATAL_ERROR "The engine at '${user_project_engine_path}' from 'engine_path' in '${O3DE_USER_PROJECT_JSON_PATH}' is not compatible with this project. Please register this project with a compatible engine, or remove the local override by running:\nscripts\\o3de edit-project-properties -pp ${CMAKE_CURRENT_SOURCE_DIR} --user --engine-path \"\"") + endif() + else() + message(FATAL_ERROR "This project cannot use the engine at '${user_project_engine_path}' because the version cmake file '${user_engine_version_cmake_path}' needed to check compatibility is missing. \nPlease register this project with a compatible engine, or remove the local override by running:\nscripts\\o3de edit-project-properties -pp ${CMAKE_CURRENT_SOURCE_DIR} --user --engine-path \"\"\nIf you want this project to use an older engine(not recommended), provide a custom EngineFinder.cmake using the o3de CLI's --engine-finder-cmake-path option. ") + endif() + elseif(json_error AND ${user_project_engine_path} STREQUAL "NOTFOUND") + # When the value is just NOTFOUND that means there is a JSON + # parsing error, and not simply a missing key + message(FATAL_ERROR "Unable to read 'engine_path' from '${user_project_engine_path}'\nError: ${json-error}") + endif() + endif() endif() + +# Option 3: Find a compatible engine registered in ~/.o3de/o3de_manifest.json if(DEFINED ENV{USERPROFILE} AND EXISTS $ENV{USERPROFILE}) set(manifest_path $ENV{USERPROFILE}/.o3de/o3de_manifest.json) # Windows else() @@ -34,50 +70,105 @@ else() endif() set(registration_error [=[ +To enable more verbose logging, run the cmake command again with '--log-level VERBOSE' Engine registration is required before configuring a project. Run 'scripts/o3de register --this-engine' from the engine root. ]=]) -# Read the ~/.o3de/o3de_manifest.json file and look through the 'engines_path' object. -# Find a key that matches LY_ENGINE_NAME_TO_USE and use that as the engine path. +# Create a list of all engines if(EXISTS ${manifest_path}) file(READ ${manifest_path} manifest_json) set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${manifest_path}) - string(JSON engines_path_count ERROR_VARIABLE json_error LENGTH ${manifest_json} engines_path) + string(JSON engines_count ERROR_VARIABLE json_error LENGTH ${manifest_json} engines) if(json_error) - message(FATAL_ERROR "Unable to read key 'engines_path' from '${manifest_path}'\nError: ${json_error}\n${registration_error}") + message(FATAL_ERROR "Unable to read key 'engines' from '${manifest_path}'\nError: ${json_error}\n${registration_error}") endif() - string(JSON engines_path_type ERROR_VARIABLE json_error TYPE ${manifest_json} engines_path) - if(json_error OR NOT ${engines_path_type} STREQUAL "OBJECT") - message(FATAL_ERROR "Type of 'engines_path' in '${manifest_path}' is not a JSON Object\nError: ${json_error}") + string(JSON engines_type ERROR_VARIABLE json_error TYPE ${manifest_json} engines) + if(json_error OR NOT ${engines_type} STREQUAL "ARRAY") + message(FATAL_ERROR "Type of 'engines' in '${manifest_path}' is not a JSON ARRAY\nError: ${json_error}\n${registration_error}") endif() - math(EXPR engines_path_count "${engines_path_count}-1") - foreach(engine_path_index RANGE ${engines_path_count}) - string(JSON engine_name ERROR_VARIABLE json_error MEMBER ${manifest_json} engines_path ${engine_path_index}) + math(EXPR engines_count "${engines_count}-1") + foreach(array_index RANGE ${engines_count}) + string(JSON manifest_engine_path ERROR_VARIABLE json_error GET ${manifest_json} engines "${array_index}") if(json_error) - message(FATAL_ERROR "Unable to read 'engines_path/${engine_path_index}' from '${manifest_path}'\nError: ${json_error}") + message(FATAL_ERROR "Unable to read 'engines/${array_index}' from '${manifest_path}'\nError: ${json_error}\n${registration_error}") endif() + list(APPEND O3DE_ENGINE_PATHS ${manifest_engine_path}) + endforeach() +elseif(NOT CMAKE_MODULE_PATH) + message(FATAL_ERROR "O3DE Manifest file not found at '${manifest_path}'.\n${registration_error}") +endif() - if(LY_ENGINE_NAME_TO_USE STREQUAL engine_name) - string(JSON engine_path ERROR_VARIABLE json_error GET ${manifest_json} engines_path ${engine_name}) - if(json_error) - message(FATAL_ERROR "Unable to read value from 'engines_path/${engine_name}'\nError: ${json_error}") - endif() +# We cannot just run find_package() on the list of engine paths because +# CMAKE_FIND_PACKAGE_SORT_ORDER sorts based on file name and chooses +# the first package that returns PACKAGE_VERSION_COMPATIBLE +set(O3DE_MOST_COMPATIBLE_ENGINE_PATH "") +set(O3DE_MOST_COMPATIBLE_ENGINE_VERSION "") +foreach(manifest_engine_path IN LISTS O3DE_ENGINE_PATHS) + # Does this engine have a config version cmake file? + cmake_path(SET version_cmake_path "${manifest_engine_path}/cmake/o3deConfigVersion.cmake") + if(NOT EXISTS "${version_cmake_path}") + message(VERBOSE "Ignoring '${manifest_engine_path}' because no config version cmake file was found at '${version_cmake_path}'") + continue() + endif() - if(engine_path) - list(APPEND CMAKE_MODULE_PATH "${engine_path}/cmake") - return() - endif() + unset(PACKAGE_VERSION) + unset(PACKAGE_VERSION_COMPATIBLE) + include("${version_cmake_path}") + + # Follow the version checking convention from find_package(CONFIG) + if(PACKAGE_VERSION_COMPATIBLE) + if(NOT O3DE_MOST_COMPATIBLE_ENGINE_PATH) + set(O3DE_MOST_COMPATIBLE_ENGINE_PATH "${manifest_engine_path}") + set(O3DE_MOST_COMPATIBLE_ENGINE_VERSION ${PACKAGE_VERSION}) + message(VERBOSE "Found compatible engine '${manifest_engine_path}' with version '${PACKAGE_VERSION}'") + elseif(${PACKAGE_VERSION} VERSION_GREATER ${O3DE_MOST_COMPATIBLE_ENGINE_VERSION}) + set(O3DE_MOST_COMPATIBLE_ENGINE_PATH "${manifest_engine_path}") + set(O3DE_MOST_COMPATIBLE_ENGINE_VERSION ${PACKAGE_VERSION}) + message(VERBOSE "Found more compatible engine '${manifest_engine_path}' with version '${PACKAGE_VERSION}' because it has a greater version number.") + else() + message(VERBOSE "Not using engine '${manifest_engine_path}' with version '${PACKAGE_VERSION}' because it doesn't have a greater version number or has a different engine name.") endif() - endforeach() - - message(FATAL_ERROR "The project.json uses engine name '${LY_ENGINE_NAME_TO_USE}' but no engine with that name has been registered.\n${registration_error}") -else() - # If the user is passing CMAKE_MODULE_PATH we assume thats where we will find the engine - if(NOT CMAKE_MODULE_PATH) - message(FATAL_ERROR "O3DE Manifest file not found.\n${registration_error}") + else() + message(VERBOSE "Ignoring '${manifest_engine_path}' because it is not a compatible engine.") + endif() +endforeach() + +if(O3DE_MOST_COMPATIBLE_ENGINE_PATH) + message(STATUS "Selecting engine '${O3DE_MOST_COMPATIBLE_ENGINE_PATH}'") + # Make sure PACKAGE_VERSION_COMPATIBLE is set so Findo3de.cmake knows + # compatibility was checked + set(PACKAGE_VERSION_COMPATIBLE True) + set(PACKAGE_VERSION O3DE_MOST_COMPATIBLE_ENGINE_VERSION) + list(APPEND CMAKE_MODULE_PATH "${O3DE_MOST_COMPATIBLE_ENGINE_PATH}/cmake") + return() +endif() + +# No compatible engine was found. +# Read the 'engine' field in project.json or user/project.json for more helpful messages +if(user_project_json) + string(JSON user_project_engine ERROR_VARIABLE json_error GET ${user_project_json} engine) +endif() + +if(NOT user_project_engine) + file(READ ${CMAKE_CURRENT_SOURCE_DIR}/project.json o3de_project_json) + string(JSON project_engine ERROR_VARIABLE json_error GET ${o3de_project_json} engine) + if(json_error AND ${project_engine} STREQUAL "NOTFOUND") + message(FATAL_ERROR "Unable to read key 'engine' from 'project.json'\nError: ${json_error}") endif() endif() + +if(user_project_engine) + message(FATAL_ERROR "The local '${O3DE_USER_PROJECT_JSON_PATH}' engine is '${user_project_engine}' but no compatible engine with that name and version was found. Please register the compatible engine, or remove the local engine override.\n${registration_error}") +elseif(project_engine) + message(FATAL_ERROR "The project.json engine is '${project_engine}' but no engine with that name and version was found.\n${registration_error}") +else() + set(project_registration_error [=[ + Project registration is required before configuring a project. + Run 'scripts/o3de register -pp PROJECT_PATH --engine-path ENGINE_PATH' from the engine root. + ]=]) + message(FATAL_ERROR "${project_registration_error}") +endif() diff --git a/Templates/Ros2RoboticManipulationTemplate/Template/project.json b/Templates/Ros2RoboticManipulationTemplate/Template/project.json index c038998ced..604160e1ac 100644 --- a/Templates/Ros2RoboticManipulationTemplate/Template/project.json +++ b/Templates/Ros2RoboticManipulationTemplate/Template/project.json @@ -18,10 +18,28 @@ "Gem" ], "restricted": "MySimulationProject", - "engine_version": "2.1.0", + "engine_version": "4.1.0", "gem_names": [ + "Atom", + "CameraFramework", + "DebugDraw", + "EditorPythonBindings", + "EMotionFX", + "ImGui", + "LyShine", + "PhysX5", + "PhysX5Debug", + "PrimitiveAssets", + "PrefabBuilder", + "ScriptCanvasPhysics", + "ScriptEvents", + "StartingPointInput", + "TextureAtlas", + "WhiteBox", + "DiffuseProbeGrid", + "Compression", "WarehouseAssets", - "WarehouseAutomation", - "ROS2" + "WarehouseAutomation>=1.1.0", + "ROS2>=3.1.0" ] } diff --git a/Templates/Ros2RoboticManipulationTemplate/template.json b/Templates/Ros2RoboticManipulationTemplate/template.json index 73cc9b5a98..b8915dee32 100644 --- a/Templates/Ros2RoboticManipulationTemplate/template.json +++ b/Templates/Ros2RoboticManipulationTemplate/template.json @@ -1,5 +1,6 @@ { "template_name": "Ros2RoboticManipulationTemplate", + "version": "1.1.0", "origin": "https://github.com/o3de/o3de-extras", "license": "https://github.com/o3de/o3de-extras/tree/development/Templates/Ros2RoboticManipulationTemplate/Template/LICENSE.txt", "display_name": "ROS2 Robotic Manipulation", @@ -976,7 +977,7 @@ { "file": "Assets/BoxToyPuzzle/texture/Roughness/MCube_pazzle_Roughness.1001.png", "isTemplated": "false" - }, + }, { "file": "Config/shader_global_build_options.json", "isTemplated": false @@ -1093,10 +1094,6 @@ "file": "Gem/Source/${Name}SystemComponent.h", "isTemplated": true }, - { - "file": "Gem/enabled_gems.cmake", - "isTemplated": true - }, { "file": "Gem/gem.json", "isTemplated": true @@ -1403,5 +1400,7 @@ { "dir": "cmake" } - ] + ], + "repo_uri": "https://raw.githubusercontent.com/o3de/o3de-extras/development", + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2roboticmanipulationtemplate-1.1.0-template.zip" } diff --git a/repo.json b/repo.json index f02dbc09cf..8672781610 100644 --- a/repo.json +++ b/repo.json @@ -100,6 +100,21 @@ "sha256": "45c906788ed9a83b8ff74fd1b893a54f79e4d3e0674139839afb807260efa0e6", "version": "1.0.0", "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/proteusrobot-1.0.0-gem.zip" + }, + { + "version": "1.1.0", + "license": "Apache-2.0 or MIT", + "origin_url": "https://robotec.ai", + "requirements": "Requires ROS 2 Gem", + "dependencies": [ + "ROS2>=3.1.0" + ], + "compatible_engines": [ + "o3de-sdk>=4.1.0", + "o3de>=4.1.0" + ], + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/proteusrobot-1.1.0-gem.zip", + "sha256": "dec32d93221e2514b59e1ac056b74c771dc4109b4599b5cf290f27a3f2486615" } ] }, @@ -153,6 +168,24 @@ ], "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2-2.0.0-gem.zip", "sha256": "93a51bebd7d5b931996025d6622bb09a6c20d6071da625d57eddf80f285444af" + }, + { + "version": "3.1.0", + "compatible_engines": [ + "o3de-sdk>=4.1.0", + "o3de>=4.1.0" + ], + "dependencies": [ + "Atom_RPI", + "Atom_Feature_Common", + "Atom_Component_DebugCamera", + "CommonFeaturesAtom", + "PhysX5", + "PrimitiveAssets", + "StartingPointInput" + ], + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2-3.1.0-gem.zip", + "sha256": "53399b4d7dad90832369e1b05baabf1f1900138a639b1119693952d781a1cb30" } ] }, @@ -190,6 +223,22 @@ "sha256": "be8973571f51d61bd3e56f40ab2d757bd7013c6bb466fe9f04ebb11c13eb7312", "version": "1.0.0", "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/rosrobotsample-1.0.0-gem.zip" + }, + { + "version": "1.1.0", + "origin": "RobotecAI", + "origin_url": "https://robotec.ai", + "summary": "Husarion ROSbot XL robot assets.", + "requirements": "Requires ROS 2 Gem", + "dependencies": [ + "ROS2>=3.1.0" + ], + "compatible_engines": [ + "o3de-sdk>=4.1.0", + "o3de>=4.1.0" + ], + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/rosrobotsample-1.1.0-gem.zip", + "sha256": "9911d92616bc975a2b490c2190b087e92c2260c98431f13f1a431b9bd8e2ec59" } ] }, @@ -320,11 +369,46 @@ "repo_uri": "https://raw.githubusercontent.com/o3de/o3de-extras/development", "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/audioenginewwise-1.0.0-gem.zip", "sha256": "5bb813e841e45cbe9d195ca50815963df8d7d57def266f6a6a765d9b786b0d83" + }, + { + "gem_name": "WarehouseAutomation", + "version": "1.1.0", + "display_name": "Warehouse Automation", + "license": "Apache-2.0", + "license_url": "https://opensource.org/licenses/Apache-2.0", + "origin": "RobotecAI", + "origin_url": "https://robotec.ai", + "type": "Code", + "summary": "Gem for simulating an automated warehouse or factory", + "canonical_tags": [ + "Gem" + ], + "user_tags": [ + "WarehouseAutomation" + ], + "compatible_engines": [ + "o3de-sdk>=4.1.0", + "o3de>=4.1.0" + ], + "platforms": [ + "Linux" + ], + "icon_path": "preview.png", + "requirements": "This gem requires ROS 2 gem and PhysX5 gem.", + "dependencies": [ + "ROS2>=3.1.0" + ], + "repo_uri": "https://raw.githubusercontent.com/o3de/o3de-extras/development", + "restricted": "WarehouseAutomation", + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/warehouseautomation-1.1.0-gem.zip", + "sha256": "21dad916ebb07232d901bbdc80ba376369e3ce4e580dcbae7d69132558357eb8" } ], "templates": [ "https://github.com/o3de/o3de-extras.git/Templates/Multiplayer", - "https://github.com/o3de/o3de-extras.git/Templates/Ros2ProjectTemplate" + "https://github.com/o3de/o3de-extras.git/Templates/Ros2FleetRobotTemplate", + "https://github.com/o3de/o3de-extras.git/Templates/Ros2ProjectTemplate", + "https://github.com/o3de/o3de-extras.git/Templates/Ros2RoboticManipulationTemplate" ], "templates_data": [ { @@ -2047,6 +2131,486 @@ "sha256": "5617f52c2da6c8f869c2073d3b10b8941d71af8696d3593e90431b8df7be2497", "version": "1.0.0", "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2fleetrobottemplate-1.0.0-template.zip" + }, + { + "version": "1.2.0", + "copyFiles": [ + { + "file": ".gitignore", + "isTemplated": false + }, + { + "file": "CMakeLists.txt", + "isTemplated": true + }, + { + "file": "Config/shader_global_build_options.json", + "isTemplated": false + }, + { + "file": "Gem/${Name}_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/${Name}_shared_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/CMakeLists.txt", + "isTemplated": true + }, + { + "file": "Gem/Include/${Name}/${Name}Bus.h", + "isTemplated": true + }, + { + "file": "Gem/Platform/Linux/${Name}_linux_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/Linux/${Name}_shared_linux_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/Linux/PAL_linux.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/Mac/${Name}_mac_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/Mac/${Name}_shared_mac_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/Mac/PAL_mac.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/Windows/${Name}_shared_windows_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/Windows/${Name}_windows_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/Windows/PAL_windows.cmake", + "isTemplated": true + }, + { + "file": "Gem/Registry/assetprocessor_settings.setreg", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}Module.cpp", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}SystemComponent.cpp", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}SystemComponent.h", + "isTemplated": true + }, + { + "file": "Gem/gem.json", + "isTemplated": true + }, + { + "file": "Levels/Warehouse/Warehouse.prefab", + "isTemplated": false + }, + { + "file": "Levels/playground/playground.prefab", + "isTemplated": false + }, + { + "file": "Platform/Linux/linux_project.cmake", + "isTemplated": true + }, + { + "file": "Platform/Linux/linux_project.json", + "isTemplated": false + }, + { + "file": "Platform/Mac/mac_project.cmake", + "isTemplated": true + }, + { + "file": "Platform/Mac/mac_project.json", + "isTemplated": false + }, + { + "file": "Platform/Windows/windows_project.cmake", + "isTemplated": true + }, + { + "file": "Platform/Windows/windows_project.json", + "isTemplated": false + }, + { + "file": "Registry/assetprocessor_settings.setreg", + "isTemplated": false + }, + { + "file": "Registry/awscoreconfiguration.setreg", + "isTemplated": false + }, + { + "file": "Registry/physxdebugconfiguration.setreg", + "isTemplated": false + }, + { + "file": "Registry/physxdefaultsceneconfiguration.setreg", + "isTemplated": false + }, + { + "file": "Registry/physxsystemconfiguration.setreg", + "isTemplated": false + }, + { + "file": "Resources/GameSDK.ico", + "isTemplated": false + }, + { + "file": "Resources/LegacyLogoLauncher.bmp", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/Contents.json", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/Contents.json", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Info.plist", + "isTemplated": true + }, + { + "file": "ShaderLib/README.md", + "isTemplated": false + }, + { + "file": "ShaderLib/scenesrg.srgi", + "isTemplated": true + }, + { + "file": "ShaderLib/viewsrg.srgi", + "isTemplated": true + }, + { + "file": "Passes/ContrastAdaptiveSharpening.pass", + "isTemplated": false + }, + { + "file": "Passes/MainRenderPipeline.azasset", + "isTemplated": false + }, + { + "file": "Passes/PostProcessParent.pass", + "isTemplated": false + }, + { + "file": "Passes/SMAAConfiguration.azasset", + "isTemplated": false + }, + { + "file": "Passes/Taa.pass", + "isTemplated": false + }, + { + "file": "Prefabs/ProteusLaserScanner.prefab", + "isTemplated": false + }, + { + "file": "autoexec.cfg", + "isTemplated": false + }, + { + "file": "cmake/EngineFinder.cmake", + "isTemplated": false + }, + { + "file": "game.cfg", + "isTemplated": false + }, + { + "file": "preview.png", + "isTemplated": false + }, + { + "file": "project.json", + "isTemplated": true + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/maps/map_warehouse.yaml", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/maps/map_warehouse.pgm", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/resource/o3de_fleet_nav", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/params/humble/nav2_multirobot_params.yaml", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/params/humble/nav2_params.yaml", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/params/iron/nav2_multirobot_params.yaml", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/params/iron/nav2_params.yaml", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/setup.py", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/package.xml", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/NOTICE", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/config/fleet_config.yaml", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/launch/o3de_rviz_launch.py", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/launch/o3de_nav_launch.py", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/launch/o3de_fleet_nav_launch.py", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/o3de_fleet_nav/__init__.py", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/o3de_fleet_nav/robot_spawner.py", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/test/test_pep257.py", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/test/test_flake8.py", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/test/test_copyright.py", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/setup.cfg", + "isTemplated": false + }, + { + "file": "Examples/ros2_ws/src/o3de_fleet_nav/rviz/nav2_namespaced_view.rviz", + "isTemplated": false + } + ], + "createDirectories": [ + { + "dir": "Assets" + }, + { + "dir": "Config" + }, + { + "dir": "Gem" + }, + { + "dir": "Gem/Include" + }, + { + "dir": "Gem/Include/${Name}" + }, + { + "dir": "Gem/Platform" + }, + { + "dir": "Gem/Platform/Linux" + }, + { + "dir": "Gem/Platform/Mac" + }, + { + "dir": "Gem/Platform/Windows" + }, + { + "dir": "Gem/Registry" + }, + { + "dir": "Gem/Source" + }, + { + "dir": "Levels" + }, + { + "dir": "Levels/Warehouse" + }, + { + "dir": "Levels/playground" + }, + { + "dir": "Levels/playground/_savebackup" + }, + { + "dir": "Levels/playground/_savebackup/2023-02-21 [13.25.33]" + }, + { + "dir": "Passes" + }, + { + "dir": "Platform" + }, + { + "dir": "Platform/Android" + }, + { + "dir": "Platform/Linux" + }, + { + "dir": "Platform/Mac" + }, + { + "dir": "Platform/Windows" + }, + { + "dir": "Registry" + }, + { + "dir": "Resources" + }, + { + "dir": "Resources/Platform" + }, + { + "dir": "Resources/Platform/Mac" + }, + { + "dir": "Resources/Platform/Mac/Images.xcassets" + }, + { + "dir": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset" + }, + { + "dir": "ShaderLib" + }, + { + "dir": "Shaders" + }, + { + "dir": "Prefabs" + }, + { + "dir": "Shaders/ShaderResourceGroups" + }, + { + "dir": "cmake" + }, + { + "dir": "Examples" + }, + { + "dir": "Examples/ros2_ws" + }, + { + "dir": "Examples/ros2_ws/src" + }, + { + "dir": "Examples/ros2_ws/src/o3de_fleet_nav" + }, + { + "dir": "Examples/ros2_ws/src/o3de_fleet_nav/config" + }, + { + "dir": "Examples/ros2_ws/src/o3de_fleet_nav/launch" + }, + { + "dir": "Examples/ros2_ws/src/o3de_fleet_nav/maps" + }, + { + "dir": "Examples/ros2_ws/src/o3de_fleet_nav/o3de_fleet_nav" + }, + { + "dir": "Examples/ros2_ws/src/o3de_fleet_nav/params" + }, + { + "dir": "Examples/ros2_ws/src/o3de_fleet_nav/resource" + }, + { + "dir": "Examples/ros2_ws/src/o3de_fleet_nav/rviz" + }, + { + "dir": "Examples/ros2_ws/src/o3de_fleet_nav/test" + } + ], + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2fleetrobottemplate-1.2.0-template.zip", + "sha256": "cd6f252c18dff6dfa34247eb11ba19feb5247874e36ed6482f11e0eae7ef84f4" } ] }, @@ -2580,8 +3144,1846 @@ "sha256": "62405080293d0be734398b3a338b2a9fce4dd50cba35d993f95d1d30e8e93e1b", "version": "1.0.0", "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2projecttemplate-1.0.0-template.zip" + }, + { + "version": "1.1.0", + "copyFiles": [ + { + "file": ".clang-format", + "isTemplated": false + }, + { + "file": ".gitattributes", + "isTemplated": false + }, + { + "file": ".gitignore", + "isTemplated": false + }, + { + "file": "CMakeLists.txt", + "isTemplated": true + }, + { + "file": "cmake/EngineFinder.cmake", + "isTemplated": true + }, + { + "file": "Config/default_aws_resource_mappings.json", + "isTemplated": false + }, + { + "file": "Config/shader_global_build_options.json", + "isTemplated": false + }, + { + "file": "Gem/${NameLower}_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/${NameLower}_editor_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/${NameLower}_shared_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/${NameLower}_editor_shared_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/CMakeLists.txt", + "isTemplated": true + }, + { + "file": "Gem/Include/${Name}/${Name}Bus.h", + "isTemplated": true + }, + { + "file": "Gem/Platform/Android/${NameLower}_android_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Android/${NameLower}_shared_android_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Android/PAL_android.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/Linux/${NameLower}_linux_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Linux/${NameLower}_shared_linux_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Linux/PAL_linux.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/Mac/${NameLower}_mac_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Mac/${NameLower}_shared_mac_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Mac/PAL_mac.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/Windows/${NameLower}_shared_windows_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Windows/${NameLower}_windows_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Windows/PAL_windows.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/iOS/${NameLower}_ios_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/iOS/${NameLower}_shared_ios_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/iOS/PAL_ios.cmake", + "isTemplated": true + }, + { + "file": "Gem/Registry/assetprocessor_settings.setreg", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}Module.cpp", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}EditorModule.cpp", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}ModuleInterface.h", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}SystemComponent.cpp", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}SystemComponent.h", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}EditorSystemComponent.cpp", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}EditorSystemComponent.h", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}SampleComponent.cpp", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}SampleComponent.h", + "isTemplated": true + }, + { + "file": "Gem/gem.json", + "isTemplated": true + }, + { + "file": "Levels/DemoLevel/DemoLevel.prefab", + "isTemplated": true + }, + { + "file": "Platform/Android/android_project.cmake", + "isTemplated": false + }, + { + "file": "Platform/Android/android_project.json", + "isTemplated": true + }, + { + "file": "Platform/Linux/linux_project.cmake", + "isTemplated": false + }, + { + "file": "Platform/Linux/linux_project.json", + "isTemplated": false + }, + { + "file": "Platform/Mac/mac_project.cmake", + "isTemplated": false + }, + { + "file": "Platform/Mac/mac_project.json", + "isTemplated": false + }, + { + "file": "Platform/Windows/windows_project.cmake", + "isTemplated": false + }, + { + "file": "Platform/Windows/windows_project.json", + "isTemplated": false + }, + { + "file": "Platform/iOS/ios_project.cmake", + "isTemplated": false + }, + { + "file": "Platform/iOS/ios_project.json", + "isTemplated": false + }, + { + "file": "Registry/assetprocessor_settings.setreg", + "isTemplated": true + }, + { + "file": "Registry/awscoreconfiguration.setreg", + "isTemplated": false + }, + { + "file": "Registry/editorpreferences.setreg", + "isTemplated": false + }, + { + "file": "Registry/physxsystemconfiguration.setreg", + "isTemplated": false + }, + { + "file": "Registry/sceneassetimporter.setreg", + "isTemplated": false + }, + { + "file": "Resources/GameSDK.ico", + "isTemplated": false + }, + { + "file": "Resources/LegacyLogoLauncher.bmp", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/Contents.json", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/Contents.json", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Info.plist", + "isTemplated": true + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/Contents.json", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/Contents.json", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/Contents.json", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon152x152.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon76x76.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadProAppIcon167x167.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon29x29.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon58x58.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon40x40.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon80x80.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon120x120.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon180x180.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon58x58.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon87x87.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon120x120.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon80x80.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/iOS/Info.plist", + "isTemplated": true + }, + { + "file": "ShaderLib/README.md", + "isTemplated": false + }, + { + "file": "ShaderLib/scenesrg.srgi", + "isTemplated": true + }, + { + "file": "ShaderLib/viewsrg.srgi", + "isTemplated": true + }, + { + "file": "autoexec.cfg", + "isTemplated": false + }, + { + "file": "game.cfg", + "isTemplated": false + }, + { + "file": "preview.png", + "isTemplated": false + }, + { + "file": "project.json", + "isTemplated": true + }, + { + "file": "Examples/slam_navigation/launch/config/config.rviz", + "isTemplated": false + }, + { + "file": "Examples/slam_navigation/README.md", + "isTemplated": false + }, + { + "file": "Examples/slam_navigation/launch/config/navigation_params.yaml", + "isTemplated": false + }, + { + "file": "Examples/slam_navigation/launch/config/slam_params.yaml", + "isTemplated": false + }, + { + "file": "Examples/slam_navigation/launch/navigation.launch.py", + "isTemplated": false + }, + { + "file": "Examples/slam_navigation/launch/slam.launch.py", + "isTemplated": false + } + ], + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2projecttemplate-1.1.0-template.zip", + "sha256": "bb58695b13a8eca3675a25afe6a1832140ef3fa4a14ea1701ff127a50e36e066" } ] + }, + { + "template_name": "Ros2RoboticManipulationTemplate", + "version": "1.1.0", + "origin": "https://github.com/o3de/o3de-extras", + "license": "https://github.com/o3de/o3de-extras/tree/development/Templates/Ros2RoboticManipulationTemplate/Template/LICENSE.txt", + "display_name": "ROS2 Robotic Manipulation", + "summary": "A manipulation template for ROS2", + "canonical_tags": [], + "user_tags": [ + "Ros2RoboticManipulationTemplate", + "ROS2", + "Move it2", + "Robots" + ], + "icon_path": "preview.png", + "copyFiles": [ + { + "file": "CMakeLists.txt", + "isTemplated": true + }, + { + "file": "Assets/Importer/pandaMoveit.prefab", + "isTemplated": "false" + }, + { + "file": "Assets/Importer/ur10.prefab", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Room.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Desk_M_Desk.material", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Desk.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Floor/plane_divided_DefaultMaterial_Ambient.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Floor/plane_divided_DefaultMaterial_Height.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Floor/plane_divided_DefaultMaterial_Base_color.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Floor/plane_divided_DefaultMaterial_Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Floor/plane_divided_DefaultMaterial_Metallic.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Floor/plane_divided_DefaultMaterial_Roughness.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Desk/Room_M_Desk_Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Desk/Room_M_Desk_Base_color.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Desk/Room_M_Desk_Height.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Desk/Room_M_Desk_Roughness.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Desk/Room_M_Desk_Metallic.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Desk/Room_M_Desk_Ambient.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Walls/Room_M_Walls_Height.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Walls/Room_M_Walls_Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Walls/Room_M_Walls_Ambient.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Walls/Room_M_Walls_Roughness.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Walls/Room_M_Walls_Base_color.png", + "isTemplated": "false" + }, + { + "file": "Assets/Room/Textures/Walls/Room_M_Walls_Metallic.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/Warehouse.prefab", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine.prefab", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/EuroPallet.prefab", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/Box1.prefab", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/Box3.prefab", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/Box4.prefab", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/TableUnderRobot.prefab", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/Box2.prefab", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorBelt.fbx.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/EuroPallet.fbx.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorLine_TableUnderRobot.material", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorLine.fbx.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorBelt_guards_segment.fbx.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorBelt_effector_short.fbx.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorBelt2.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/EuroPallet_Pallet.material", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorBelt2_Conveyor2.material", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorLine_Cage.material", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorLine_ElectricBoxes.material", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorLine_MBelt.material", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorBelt.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/box.physxmaterial", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/conveyor_belt.physxmaterial", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/EuroPallet.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/conveyor_guards.physxmaterial", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorBelt_effector_short.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorBelt_bar.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorBelt_effector.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorBelt_effector.fbx.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorLine.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorBelt_guards_segment.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/ConveyorLine_MFrame.material", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/BeltTextures/Belt_low_DefaultMaterial_Base_color.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/BeltTextures/Belt_low_DefaultMaterial_Roughness.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/BeltTextures/Belt_low_DefaultMaterial_Metallic.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/BeltTextures/Belt_low_DefaultMaterial_Ambient.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/BeltTextures/Belt_low_DefaultMaterial_Height.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/BeltTextures/Belt_low_DefaultMaterial_Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Paper_Recycled_001_Normal.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Grass_001_Basecolor.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Concrete_Wall_005_Normal.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/ElectricBoxes_Specular.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Grass_001_Normal.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/1K_Wall_Paint_Specular.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Cage-Normal.png.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/ElectricBoxes_Roughness.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Grass_001_Displacement.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Scratched_007_Basecolor.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Concrete_019_Basecolor.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Galvanized_001_Normal.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Specular.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/1K_Wall_Paint_Normal.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Extinguisher_Basecolor.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/ElectricBoxes_Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Rusted_001_Basecolor.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/ElectricBoxes_Diffuse.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Steering_Panel_Basecolor.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Painted_Yellow_002_Basecolor.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Galvanized_001_Basecolor.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Painted_Red_002_Basecolor.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/1K_Wall_Paint_Basecolor.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Wood_026_Normal.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Cage-BaseColor.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/ElectricBoxes_Metalic.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Pallet-MaskMap.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Scratched_007_Roughness.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Paper_Recycled_001_Basecolor.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Painted_002_Normal.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Cage-Roughness.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Box-Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Grass_001_Roughness.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Concrete_Wall_005_Roughness.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Paper_Recycled_001_Roughness.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Cage-Roughness.png.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/BaseColor.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Box-Specular.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Painted_White_002_Basecolor.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Cage-Specular.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Roughness.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Rusted_001_Normal.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metallic.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Pallet-Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Wood_026_Roughness.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Cage-Metallic.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Galvanized_001_Roughness.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Scratched_007_Normal.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Wood_026_Basecolor.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Box-Metallic.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Painted_002_Roughness.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Concrete_Wall_005_Basecolor.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Box-BaseColor.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/ElectricBoxes_Height.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Metal_Rusted_001_Specular.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Cage-Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Pallet-BaseMap.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Box-Roughness.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Tire_Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Concrete_019_Roughness.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/Textures/Concrete_019_Normal.jpg", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/TableUnderRobotTextures/TableUnderRobot_BaseColor.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/TableUnderRobotTextures/TableUnderRobot_Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/TableUnderRobotTextures/TableUnderRobot_Roughness.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/TableUnderRobotTextures/TableUnderRobot_Metallic.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/TableUnderRobotTextures/TableUnderRobot_Height.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/FrameTextures/Frame_DefaultMaterial_Base_color.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/FrameTextures/Frame_DefaultMaterial_Height.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/FrameTextures/Frame_DefaultMaterial_Roughness.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/FrameTextures/Frame_DefaultMaterial_Ambient.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/FrameTextures/Frame_DefaultMaterial_Metallic.png", + "isTemplated": "false" + }, + { + "file": "Assets/Factory/ConveyorLine/FrameTextures/Frame_DefaultMaterial_Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/UR10_pretty/UR10_M_UR10.material", + "isTemplated": "false" + }, + { + "file": "Assets/UR10_pretty/UR10.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/UR10_pretty/Textures/RoboticArm.json", + "isTemplated": "false" + }, + { + "file": "Assets/UR10_pretty/Textures/UR10_Robotic_arm_Roughness.M_UR10.png", + "isTemplated": "false" + }, + { + "file": "Assets/UR10_pretty/Textures/UR10_Robotic_arm_Metallic.M_UR10.png", + "isTemplated": "false" + }, + { + "file": "Assets/UR10_pretty/Textures/UR10_Robotic_arm_BaseColor.M_UR10.png", + "isTemplated": "false" + }, + { + "file": "Assets/UR10_pretty/Textures/UR10_Robotic_arm_Emissive.M_UR10.png", + "isTemplated": "false" + }, + { + "file": "Assets/UR10_pretty/Textures/UR10_Robotic_arm_Height.M_UR10.png", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/hand_c.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link4_c.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link1.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/finger_c.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/hand.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link3_c.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link2_c.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link0.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link5_c.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link6_c.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link3_c.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link6.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link2.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link3.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link5.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link2_c.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/finger.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/finger_c.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link4.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/hand_c.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link2.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link7.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link7_c.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link1_c.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link0_c.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link6.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/hand.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/finger.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link4.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link1.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link6_c.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link1_c.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link3.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link7_c.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link5_c.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link5.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link4_c.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link0.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link0_c.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/1440394708_panda/link7.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/wrist1_collider.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/upperarm.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/forearm_collider.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/forearm_collider.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/wrist3.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/shoulder_collider.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/forearm.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/wrist3_collider.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/base_collider.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/shoulder.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/wrist1_collider.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/wrist2_collider.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/upperarm_collider.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/wrist2_collider.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/shoulder_collider.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/base.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/wrist1.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/wrist3_collider.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/upperarm.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/wrist2.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/wrist2.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/forearm.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/Gripper_collider.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/wrist1.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/Gripper_Gripper.material", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/Gripper_collider.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/shoulder.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/base.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/upperarm_collider.stl", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/Gripper.dae", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/base_collider.stl.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/wrist3.dae.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/Textures/Gripper-BaseColor.png", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/Textures/Gripper-Specular.png", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/Textures/Gripper-Roughness.png", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/Textures/Gripper-Metallic.png", + "isTemplated": "false" + }, + { + "file": "Assets/UrdfImporter/783534404_ur.urdf/Textures/Gripper-Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/Gripper/Gripper_collider.stl", + "isTemplated": "false" + }, + { + "file": "Assets/Gripper/Gripper.dae", + "isTemplated": "false" + }, + { + "file": "Assets/Gripper/Textures/Gripper-BaseColor.png", + "isTemplated": "false" + }, + { + "file": "Assets/Gripper/Textures/Gripper-Specular.png", + "isTemplated": "false" + }, + { + "file": "Assets/Gripper/Textures/Gripper-Roughness.png", + "isTemplated": "false" + }, + { + "file": "Assets/Gripper/Textures/Gripper-Metallic.png", + "isTemplated": "false" + }, + { + "file": "Assets/Gripper/Textures/Gripper-Normal.png", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/ToyBox.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/BoxTriangle.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/BoxCube.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/BoxTriangle.fbx.assetinfo", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/BoxCyllinder.fbx", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/texture/BoxToyPuzzle_MCube_pazzle_Glossiness.1001.png", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/texture/BoxToyPuzzle_MCube_pazzle_Metallic.1001.png", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/texture/BoxToyPuzzle_MCube_pazzle_Emissive.1001.png", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/texture/BoxToyPuzzle_MCube_pazzle_Normal.1001.png", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/texture/BoxToyPuzzle_MCube_pazzle_Height.1001.png", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/texture/BoxToyPuzzle_MCube_pazzle_Roughness.1001.png", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/texture/BoxToyPuzzle_MCube_pazzle_BaseMap.1001.png", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/texture/BoxToyPuzzle_MCube_pazzle_Specular.1001.png", + "isTemplated": "false" + }, + { + "file": "Assets/BoxToyPuzzle/texture/Roughness/MCube_pazzle_Roughness.1001.png", + "isTemplated": "false" + }, + { + "file": "Config/shader_global_build_options.json", + "isTemplated": false + }, + { + "file": "DiffuseProbeGrids/Atom Default Environment_434B3A4E-7927-4EB4-B568-D0D75E72D270_ProbeData_lutrgba16f.dds", + "isTemplated": false + }, + { + "file": "DiffuseProbeGrids/Atom Default Environment_691C813B-A7DA-435B-BE78-904F41AAECDD_Distance_lutrg32f.dds", + "isTemplated": false + }, + { + "file": "DiffuseProbeGrids/Atom Default Environment_9DD87531-9B21-45AC-8169-4B6209456C02_Irradiance_lutrgba16f.dds", + "isTemplated": false + }, + { + "file": "DiffuseProbeGrids/GI_4C638236-E6F7-413A-B1DF-26DA87A6CDC0_ProbeData_lutrgba16f.dds", + "isTemplated": false + }, + { + "file": "DiffuseProbeGrids/GI_9A063636-4E64-4E87-8052-E1427ED3EC2C_Distance_lutrg32f.dds", + "isTemplated": false + }, + { + "file": "DiffuseProbeGrids/GI_C092EE63-F1F9-43CC-93B5-19168F3EEADA_Irradiance_lutrgba16f.dds", + "isTemplated": false + }, + { + "file": "DiffuseProbeGrids/Diffuse_Probe_Grid_1C06FE02-367E-4D6E-B8AE-9A48F2AF5F75_Irradiance_lutrgba16f.dds", + "isTemplated": false + }, + { + "file": "DiffuseProbeGrids/Diffuse_Probe_Grid_4F50E1BF-2C8C-44EB-8183-34101107473C_Distance_lutrg32f.dds", + "isTemplated": false + }, + { + "file": "DiffuseProbeGrids/Diffuse_Probe_Grid_ABC8A956-D89D-4CDB-829B-EF1DD8DE5404_ProbeData_lutrgba16f.dds", + "isTemplated": false + }, + { + "file": "Examples/panda_moveit_config_demo.launch.py", + "isTemplated": false + }, + { + "file": "Examples/panda_moveit_config_demo.rviz", + "isTemplated": false + }, + { + "file": "Gem/${Name}_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/${Name}_shared_files.cmake", + "isTemplated": true + }, + { + "file": "Gem/CMakeLists.txt", + "isTemplated": true + }, + { + "file": "Gem/Include/${Name}/${Name}Bus.h", + "isTemplated": true + }, + { + "file": "Gem/Platform/Linux/${Name}_linux_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Linux/${Name}_shared_linux_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Linux/PAL_linux.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/Mac/${Name}_mac_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Mac/${Name}_shared_mac_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Mac/PAL_mac.cmake", + "isTemplated": true + }, + { + "file": "Gem/Platform/Windows/${Name}_shared_windows_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Windows/${Name}_windows_files.cmake", + "isTemplated": false + }, + { + "file": "Gem/Platform/Windows/PAL_windows.cmake", + "isTemplated": true + }, + { + "file": "Gem/Registry/assetprocessor_settings.setreg", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}Module.cpp", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}SystemComponent.cpp", + "isTemplated": true + }, + { + "file": "Gem/Source/${Name}SystemComponent.h", + "isTemplated": true + }, + { + "file": "Gem/gem.json", + "isTemplated": true + }, + { + "file": "Levels/RoboticPalletization/RoboticPalletization.prefab", + "isTemplated": false + }, + { + "file": "Levels/RoboticManipulation/RoboticManipulation.prefab", + "isTemplated": false + }, + { + "file": "Passes/ContrastAdaptiveSharpening.pass", + "isTemplated": false + }, + { + "file": "Passes/MainRenderPipeline.azasset", + "isTemplated": false + }, + { + "file": "Passes/PostProcessParent.pass", + "isTemplated": false + }, + { + "file": "Passes/SMAAConfiguration.azasset", + "isTemplated": false + }, + { + "file": "Passes/Taa.pass", + "isTemplated": false + }, + { + "file": "Platform/Linux/linux_project.cmake", + "isTemplated": false + }, + { + "file": "Platform/Linux/linux_project.json", + "isTemplated": false + }, + { + "file": "Platform/Mac/mac_project.cmake", + "isTemplated": false + }, + { + "file": "Platform/Mac/mac_project.json", + "isTemplated": false + }, + { + "file": "Platform/Windows/windows_project.cmake", + "isTemplated": false + }, + { + "file": "Platform/Windows/windows_project.json", + "isTemplated": false + }, + { + "file": "Prefabs/Cell.prefab", + "isTemplated": false + }, + { + "file": "Prefabs/PandaRobot.prefab", + "isTemplated": false + }, + { + "file": "Prefabs/ToyBox_fbx.prefab", + "isTemplated": false + }, + { + "file": "ReflectionProbes/Entity6__8035B0D1-451A-4226-A488-0C8E6949F6F5__iblspecularcm256.dds", + "isTemplated": false + }, + { + "file": "Registry/assetprocessor_settings.setreg", + "isTemplated": false + }, + { + "file": "Registry/awscoreconfiguration.setreg", + "isTemplated": false + }, + { + "file": "Registry/physxdebugconfiguration.setreg", + "isTemplated": false + }, + { + "file": "Registry/physxdefaultsceneconfiguration.setreg", + "isTemplated": false + }, + { + "file": "Registry/physxsystemconfiguration.setreg", + "isTemplated": false + }, + { + "file": "Registry/sceneassetimporter.setreg", + "isTemplated": false + }, + { + "file": "Resources/GameSDK.ico", + "isTemplated": false + }, + { + "file": "Resources/LegacyLogoLauncher.bmp", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/Contents.json", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512_2x.png", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Images.xcassets/Contents.json", + "isTemplated": false + }, + { + "file": "Resources/Platform/Mac/Info.plist", + "isTemplated": true + }, + { + "file": "ShaderLib/README.md", + "isTemplated": false + }, + { + "file": "ShaderLib/scenesrg.srgi", + "isTemplated": false + }, + { + "file": "ShaderLib/viewsrg.srgi", + "isTemplated": false + }, + { + "file": "cmake/EngineFinder.cmake", + "isTemplated": false + }, + { + "file": "user/Registry/editorpreferences.setreg", + "isTemplated": false + }, + { + "file": "user/Registry/ViewBookmarks/robotic-arm_1671539006337141059.setreg", + "isTemplated": false + }, + { + "file": "user/Registry/ViewBookmarks/RoboticPalletization_1691268770764352914.setreg", + "isTemplated": false + }, + { + "file": "game.cfg", + "isTemplated": false + }, + { + "file": "preview.png", + "isTemplated": false + }, + { + "file": "project.json", + "isTemplated": true + } + ], + "createDirectories": [ + { + "dir": "Config" + }, + { + "dir": "DiffuseProbeGrids" + }, + { + "dir": "Examples" + }, + { + "dir": "Gem" + }, + { + "dir": "Gem/Include" + }, + { + "dir": "Gem/Include/${Name}" + }, + { + "dir": "Gem/Platform" + }, + { + "dir": "Gem/Platform/Linux" + }, + { + "dir": "Gem/Platform/Mac" + }, + { + "dir": "Gem/Platform/Windows" + }, + { + "dir": "Gem/Registry" + }, + { + "dir": "Gem/Source" + }, + { + "dir": "Levels" + }, + { + "dir": "Levels/RoboticPalletization" + }, + { + "dir": "Levels/RoboticManipulation" + }, + { + "dir": "Passes" + }, + { + "dir": "Platform" + }, + { + "dir": "Platform/Android" + }, + { + "dir": "Platform/Linux" + }, + { + "dir": "Platform/Mac" + }, + { + "dir": "Platform/Windows" + }, + { + "dir": "Prefabs" + }, + { + "dir": "ReflectionProbes" + }, + { + "dir": "Registry" + }, + { + "dir": "Resources" + }, + { + "dir": "Resources/Platform" + }, + { + "dir": "Resources/Platform/Mac" + }, + { + "dir": "Resources/Platform/Mac/Images.xcassets" + }, + { + "dir": "Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset" + }, + { + "dir": "ShaderLib" + }, + { + "dir": "Shaders" + }, + { + "dir": "user" + }, + { + "dir": "user/Registry" + }, + { + "dir": "user/Registry/ViewBookmarks" + }, + { + "dir": "Shaders/ShaderResourceGroups" + }, + { + "dir": "cmake" + } + ], + "repo_uri": "https://raw.githubusercontent.com/o3de/o3de-extras/development", + "download_source_uri": "https://github.com/o3de/o3de-extras/releases/download/2.0/ros2roboticmanipulationtemplate-1.1.0-template.zip", + "sha256": "7efe89a56731ad2efda60eb302fc73ec9ddf4f1bbb89d9b3cd9a9e357e64d9d3" } ], "projects_data": [