Răsfoiți Sursa

Initial project commit

Signed-off-by: Adam Dabrowski <[email protected]>
Adam Dabrowski 3 ani în urmă
părinte
comite
9e5c7c7eb6
87 a modificat fișierele cu 1382 adăugiri și 2 ștergeri
  1. 1 2
      .gitignore
  2. 20 0
      CMakeLists.txt
  3. 6 0
      Config/default_aws_resource_mappings.json
  4. 11 0
      Config/shader_global_build_options.json
  5. 76 0
      Gem/CMakeLists.txt
  6. 40 0
      Gem/Include/ROS2-Gem-Demo/ROS2-Gem-DemoBus.h
  7. 9 0
      Gem/Platform/Android/PAL_android.cmake
  8. 11 0
      Gem/Platform/Android/ros2-gem-demo_android_files.cmake
  9. 10 0
      Gem/Platform/Android/ros2-gem-demo_shared_android_files.cmake
  10. 9 0
      Gem/Platform/Linux/PAL_linux.cmake
  11. 11 0
      Gem/Platform/Linux/ros2-gem-demo_linux_files.cmake
  12. 10 0
      Gem/Platform/Linux/ros2-gem-demo_shared_linux_files.cmake
  13. 9 0
      Gem/Platform/Mac/PAL_mac.cmake
  14. 12 0
      Gem/Platform/Mac/ros2-gem-demo_mac_files.cmake
  15. 11 0
      Gem/Platform/Mac/ros2-gem-demo_shared_mac_files.cmake
  16. 9 0
      Gem/Platform/Windows/PAL_windows.cmake
  17. 10 0
      Gem/Platform/Windows/ros2-gem-demo_shared_windows_files.cmake
  18. 11 0
      Gem/Platform/Windows/ros2-gem-demo_windows_files.cmake
  19. 9 0
      Gem/Platform/iOS/PAL_ios.cmake
  20. 12 0
      Gem/Platform/iOS/ros2-gem-demo_ios_files.cmake
  21. 10 0
      Gem/Platform/iOS/ros2-gem-demo_shared_ios_files.cmake
  22. 18 0
      Gem/Registry/assetprocessor_settings.setreg
  23. 46 0
      Gem/Source/ROS2-Gem-DemoModule.cpp
  24. 85 0
      Gem/Source/ROS2-Gem-DemoSystemComponent.cpp
  25. 49 0
      Gem/Source/ROS2-Gem-DemoSystemComponent.h
  26. 32 0
      Gem/enabled_gems.cmake
  27. 21 0
      Gem/gem.json
  28. 14 0
      Gem/ros2-gem-demo_files.cmake
  29. 11 0
      Gem/ros2-gem-demo_shared_files.cmake
  30. 8 0
      Platform/Android/android_project.cmake
  31. 9 0
      Platform/Android/android_project.json
  32. 8 0
      Platform/Linux/linux_project.cmake
  33. 3 0
      Platform/Linux/linux_project.json
  34. 8 0
      Platform/Mac/mac_project.cmake
  35. 3 0
      Platform/Mac/mac_project.json
  36. 8 0
      Platform/Windows/windows_project.cmake
  37. 3 0
      Platform/Windows/windows_project.json
  38. 8 0
      Platform/iOS/ios_project.cmake
  39. 3 0
      Platform/iOS/ios_project.json
  40. 23 0
      Registry/assetprocessor_settings.setreg
  41. 10 0
      Registry/awscoreconfiguration.setreg
  42. 3 0
      Resources/GameSDK.ico
  43. 3 0
      Resources/LegacyLogoLauncher.bmp
  44. 6 0
      Resources/Platform/Mac/Images.xcassets/Contents.json
  45. 68 0
      Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/Contents.json
  46. 3 0
      Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png
  47. 3 0
      Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128_2x.png
  48. 3 0
      Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png
  49. 3 0
      Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png
  50. 3 0
      Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png
  51. 3 0
      Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256_2x.png
  52. 3 0
      Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png
  53. 3 0
      Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png
  54. 3 0
      Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png
  55. 3 0
      Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png
  56. 24 0
      Resources/Platform/Mac/Info.plist
  57. 6 0
      Resources/Platform/iOS/Images.xcassets/Contents.json
  58. 169 0
      Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/Contents.json
  59. 3 0
      Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png
  60. 3 0
      Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png
  61. 3 0
      Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png
  62. 3 0
      Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png
  63. 3 0
      Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png
  64. 3 0
      Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png
  65. 116 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/Contents.json
  66. 3 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon152x152.png
  67. 3 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon76x76.png
  68. 3 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadProAppIcon167x167.png
  69. 3 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png
  70. 3 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png
  71. 3 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png
  72. 3 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png
  73. 3 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png
  74. 3 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png
  75. 3 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png
  76. 3 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png
  77. 3 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png
  78. 3 0
      Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png
  79. 45 0
      Resources/Platform/iOS/Info.plist
  80. 5 0
      ShaderLib/README.md
  81. 26 0
      ShaderLib/scenesrg.srgi
  82. 26 0
      ShaderLib/viewsrg.srgi
  83. 0 0
      autoexec.cfg
  84. 92 0
      cmake/EngineFinder.cmake
  85. 3 0
      game.cfg
  86. 3 0
      preview.png
  87. 23 0
      project.json

+ 1 - 2
.gitignore

@@ -19,5 +19,4 @@ server*.cfg
 .mayaSwatches/
 _savebackup/
 *.swatches
-/imgui.ini
-
+/imgui.ini

+ 20 - 0
CMakeLists.txt

@@ -0,0 +1,20 @@
+# {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}
+
+if(NOT PROJECT_NAME)
+    cmake_minimum_required(VERSION 3.20)
+    include(cmake/EngineFinder.cmake OPTIONAL)
+    find_package(o3de REQUIRED)
+    project(ROS2-Gem-Demo
+        LANGUAGES C CXX
+        VERSION 1.0.0.0
+    )
+    o3de_initialize()
+endif()

+ 6 - 0
Config/default_aws_resource_mappings.json

@@ -0,0 +1,6 @@
+{
+    "AWSResourceMappings": {},
+    "AccountId": "EMPTY",
+    "Region": "us-east-1",
+    "Version": "1.0.0"
+}

+ 11 - 0
Config/shader_global_build_options.json

@@ -0,0 +1,11 @@
+{
+    "Type": "JsonSerialization",
+    "Version": 1,
+    "ClassName": "GlobalBuildOptions",
+    "ClassData": {
+        "ShaderCompilerArguments" : {
+            "DefaultMatrixOrder" : "Row",
+            "AzslcAdditionalFreeArguments" : "--strip-unused-srgs"
+        }
+    }
+}

+ 76 - 0
Gem/CMakeLists.txt

@@ -0,0 +1,76 @@
+# {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(gem_path ${CMAKE_CURRENT_LIST_DIR})
+set(gem_json ${gem_path}/gem.json)
+o3de_restricted_path(${gem_json} gem_restricted_path gem_parent_relative_path)
+
+# Currently we are in the ROS2-Gem-Demo/Code folder: ${CMAKE_CURRENT_LIST_DIR}
+# Get the platform specific folder ${pal_dir} for the current folder: ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME}
+# Note: o3de_pal_dir will take care of the details for us, as this may be a restricted platform
+#       in which case it will see if that platform is present here or in the restricted folder.
+#       i.e. It could here : ROS2-Gem-Demo/Code/Platform/<platform_name>  or
+#            <restricted_folder>/<platform_name>/ROS2-Gem-Demo/Code
+o3de_pal_dir(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} ${gem_restricted_path} ${gem_path} ${gem_parent_relative_path})
+
+# Now that we have the platform abstraction layer (PAL) folder for this folder, thats where we will find the
+# traits for this platform. Traits for a platform are defines for things like whether or not something in this project
+# is supported by this platform.
+include(${pal_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
+
+# Now that we have loaded our project traits for this platform, see if this project is even supported on this platform.
+# If its not supported we just return after including the unsupported.
+if(NOT PAL_TRAIT_ROS2-GEM-DEMO_SUPPORTED)
+    return()
+endif()
+
+# We are on a supported platform, so add the ROS2-Gem-Demo target
+# Note: We include the common files and the platform specific files which are set in ros2-gem-demo_files.cmake and
+# in ${pal_dir}/ros2-gem-demo_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
+ly_add_target(
+    NAME ROS2-Gem-Demo.Static STATIC
+    NAMESPACE Gem
+    FILES_CMAKE
+        ros2-gem-demo_files.cmake
+        ${pal_dir}/ros2-gem-demo_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
+    INCLUDE_DIRECTORIES
+        PUBLIC
+            Include
+    BUILD_DEPENDENCIES
+        PRIVATE
+            AZ::AzGameFramework
+            Gem::Atom_AtomBridge.Static
+)
+
+ly_add_target(
+    NAME ROS2-Gem-Demo ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
+    NAMESPACE Gem
+    FILES_CMAKE
+        ros2-gem-demo_shared_files.cmake
+        ${pal_dir}/ros2-gem-demo_shared_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
+    INCLUDE_DIRECTORIES
+        PUBLIC
+            Include
+    BUILD_DEPENDENCIES
+        PRIVATE
+            Gem::ROS2-Gem-Demo.Static
+            AZ::AzCore
+)
+
+# if enabled, ROS2-Gem-Demo is used by all kinds of applications
+ly_create_alias(NAME ROS2-Gem-Demo.Builders NAMESPACE Gem TARGETS Gem::ROS2-Gem-Demo)
+ly_create_alias(NAME ROS2-Gem-Demo.Tools    NAMESPACE Gem TARGETS Gem::ROS2-Gem-Demo)
+ly_create_alias(NAME ROS2-Gem-Demo.Clients  NAMESPACE Gem TARGETS Gem::ROS2-Gem-Demo)
+ly_create_alias(NAME ROS2-Gem-Demo.Servers  NAMESPACE Gem TARGETS Gem::ROS2-Gem-Demo)
+
+################################################################################
+# Gem dependencies
+################################################################################
+
+# Enable the specified list of gems from GEM_FILE or GEMS list for this specific project:
+ly_enable_gems(PROJECT_NAME ROS2-Gem-Demo GEM_FILE enabled_gems.cmake)

+ 40 - 0
Gem/Include/ROS2-Gem-Demo/ROS2-Gem-DemoBus.h

@@ -0,0 +1,40 @@
+// {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}
+
+#pragma once
+
+#include <AzCore/EBus/EBus.h>
+#include <AzCore/Interface/Interface.h>
+
+namespace ROS2_Gem_Demo
+{
+    class ROS2_Gem_DemoRequests
+    {
+    public:
+        AZ_RTTI(ROS2_Gem_DemoRequests, "{0347d2ff-c2db-471f-8ad2-0408d808cc91}");
+        virtual ~ROS2_Gem_DemoRequests() = default;
+        // Put your public methods here
+    };
+
+    class ROS2_Gem_DemoBusTraits
+        : public AZ::EBusTraits
+    {
+    public:
+        //////////////////////////////////////////////////////////////////////////
+        // EBusTraits overrides
+        static constexpr AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single;
+        static constexpr AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single;
+        //////////////////////////////////////////////////////////////////////////
+    };
+
+    using ROS2_Gem_DemoRequestBus = AZ::EBus<ROS2_Gem_DemoRequests, ROS2_Gem_DemoBusTraits>;
+    using ROS2_Gem_DemoInterface = AZ::Interface<ROS2_Gem_DemoRequests>;
+
+} // namespace ROS2_Gem_Demo

+ 9 - 0
Gem/Platform/Android/PAL_android.cmake

@@ -0,0 +1,9 @@
+# {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(PAL_TRAIT_ROS2-GEM-DEMO_SUPPORTED TRUE)

+ 11 - 0
Gem/Platform/Android/ros2-gem-demo_android_files.cmake

@@ -0,0 +1,11 @@
+# {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(FILES
+    PAL_android.cmake
+)

+ 10 - 0
Gem/Platform/Android/ros2-gem-demo_shared_android_files.cmake

@@ -0,0 +1,10 @@
+# {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(FILES
+)

+ 9 - 0
Gem/Platform/Linux/PAL_linux.cmake

@@ -0,0 +1,9 @@
+# {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(PAL_TRAIT_ROS2-GEM-DEMO_SUPPORTED TRUE)

+ 11 - 0
Gem/Platform/Linux/ros2-gem-demo_linux_files.cmake

@@ -0,0 +1,11 @@
+# {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(FILES
+    PAL_linux.cmake
+)

+ 10 - 0
Gem/Platform/Linux/ros2-gem-demo_shared_linux_files.cmake

@@ -0,0 +1,10 @@
+# {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(FILES
+)

+ 9 - 0
Gem/Platform/Mac/PAL_mac.cmake

@@ -0,0 +1,9 @@
+# {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(PAL_TRAIT_ROS2-GEM-DEMO_SUPPORTED TRUE)

+ 12 - 0
Gem/Platform/Mac/ros2-gem-demo_mac_files.cmake

@@ -0,0 +1,12 @@
+# {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(FILES
+    ../../../Resources/Platform/Mac/Info.plist
+    PAL_mac.cmake
+)

+ 11 - 0
Gem/Platform/Mac/ros2-gem-demo_shared_mac_files.cmake

@@ -0,0 +1,11 @@
+# {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(FILES
+    ../../../Resources/Platform/Mac/Info.plist
+)

+ 9 - 0
Gem/Platform/Windows/PAL_windows.cmake

@@ -0,0 +1,9 @@
+# {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(PAL_TRAIT_ROS2-GEM-DEMO_SUPPORTED TRUE)

+ 10 - 0
Gem/Platform/Windows/ros2-gem-demo_shared_windows_files.cmake

@@ -0,0 +1,10 @@
+# {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(FILES
+)

+ 11 - 0
Gem/Platform/Windows/ros2-gem-demo_windows_files.cmake

@@ -0,0 +1,11 @@
+# {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(FILES
+    PAL_windows.cmake
+)

+ 9 - 0
Gem/Platform/iOS/PAL_ios.cmake

@@ -0,0 +1,9 @@
+# {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(PAL_TRAIT_ROS2-GEM-DEMO_SUPPORTED TRUE)

+ 12 - 0
Gem/Platform/iOS/ros2-gem-demo_ios_files.cmake

@@ -0,0 +1,12 @@
+# {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(FILES
+    ../../../Resources/Platform/iOS/Info.plist
+    PAL_ios.cmake
+)

+ 10 - 0
Gem/Platform/iOS/ros2-gem-demo_shared_ios_files.cmake

@@ -0,0 +1,10 @@
+# {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(FILES
+)

+ 18 - 0
Gem/Registry/assetprocessor_settings.setreg

@@ -0,0 +1,18 @@
+{
+    "Amazon": {
+        "AssetProcessor": {
+            "Settings": {
+                "ScanFolder ROS2-Gem-Demo/Assets": {
+                    "watch": "@GEMROOT:ROS2-Gem-Demo@/Assets",
+                    "recursive": 1,
+                    "order": 101
+                },
+                "ScanFolder ROS2-Gem-Demo/Registry": {
+                    "watch": "@GEMROOT:ROS2-Gem-Demo@/Registry",
+                    "recursive": 1,
+                    "order": 102
+                }
+            }
+        }
+    }
+}

+ 46 - 0
Gem/Source/ROS2-Gem-DemoModule.cpp

@@ -0,0 +1,46 @@
+// {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}
+
+#include <AzCore/Memory/SystemAllocator.h>
+#include <AzCore/Module/Module.h>
+
+#include "ROS2-Gem-DemoSystemComponent.h"
+
+namespace ROS2_Gem_Demo
+{
+    class ROS2_Gem_DemoModule
+        : public AZ::Module
+    {
+    public:
+        AZ_RTTI(ROS2_Gem_DemoModule, "{ebbd7642-5b1d-4ecb-901e-f0d52146528b}", AZ::Module);
+        AZ_CLASS_ALLOCATOR(ROS2_Gem_DemoModule, AZ::SystemAllocator, 0);
+
+        ROS2_Gem_DemoModule()
+            : AZ::Module()
+        {
+            // Push results of [MyComponent]::CreateDescriptor() into m_descriptors here.
+            m_descriptors.insert(m_descriptors.end(), {
+                ROS2_Gem_DemoSystemComponent::CreateDescriptor(),
+            });
+        }
+
+        /**
+         * Add required SystemComponents to the SystemEntity.
+         */
+        AZ::ComponentTypeList GetRequiredSystemComponents() const override
+        {
+            return AZ::ComponentTypeList{
+                azrtti_typeid<ROS2_Gem_DemoSystemComponent>(),
+            };
+        }
+    };
+}// namespace ROS2_Gem_Demo
+
+AZ_DECLARE_MODULE_CLASS(Gem_ROS2_Gem_Demo, ROS2_Gem_Demo::ROS2_Gem_DemoModule)

+ 85 - 0
Gem/Source/ROS2-Gem-DemoSystemComponent.cpp

@@ -0,0 +1,85 @@
+// {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}
+
+#include <AzCore/Serialization/SerializeContext.h>
+#include <AzCore/Serialization/EditContext.h>
+#include <AzCore/Serialization/EditContextConstants.inl>
+
+#include "ROS2-Gem-DemoSystemComponent.h"
+
+namespace ROS2_Gem_Demo
+{
+    void ROS2_Gem_DemoSystemComponent::Reflect(AZ::ReflectContext* context)
+    {
+        if (AZ::SerializeContext* serialize = azrtti_cast<AZ::SerializeContext*>(context))
+        {
+            serialize->Class<ROS2_Gem_DemoSystemComponent, AZ::Component>()
+                ->Version(0)
+                ;
+
+            if (AZ::EditContext* ec = serialize->GetEditContext())
+            {
+                ec->Class<ROS2_Gem_DemoSystemComponent>("ROS2_Gem_Demo", "[Description of functionality provided by this System Component]")
+                    ->ClassElement(AZ::Edit::ClassElements::EditorData, "")
+                        ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("System"))
+                        ->Attribute(AZ::Edit::Attributes::AutoExpand, true)
+                    ;
+            }
+        }
+    }
+
+    void ROS2_Gem_DemoSystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided)
+    {
+        provided.push_back(AZ_CRC("ROS2_Gem_DemoService"));
+    }
+
+    void ROS2_Gem_DemoSystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
+    {
+        incompatible.push_back(AZ_CRC("ROS2_Gem_DemoService"));
+    }
+
+    void ROS2_Gem_DemoSystemComponent::GetRequiredServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& required)
+    {
+    }
+
+    void ROS2_Gem_DemoSystemComponent::GetDependentServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& dependent)
+    {
+    }
+
+    ROS2_Gem_DemoSystemComponent::ROS2_Gem_DemoSystemComponent()
+    {
+        if (ROS2_Gem_DemoInterface::Get() == nullptr)
+        {
+            ROS2_Gem_DemoInterface::Register(this);
+        }
+    }
+
+    ROS2_Gem_DemoSystemComponent::~ROS2_Gem_DemoSystemComponent()
+    {
+        if (ROS2_Gem_DemoInterface::Get() == this)
+        {
+            ROS2_Gem_DemoInterface::Unregister(this);
+        }
+    }
+
+    void ROS2_Gem_DemoSystemComponent::Init()
+    {
+    }
+
+    void ROS2_Gem_DemoSystemComponent::Activate()
+    {
+        ROS2_Gem_DemoRequestBus::Handler::BusConnect();
+    }
+
+    void ROS2_Gem_DemoSystemComponent::Deactivate()
+    {
+        ROS2_Gem_DemoRequestBus::Handler::BusDisconnect();
+    }
+}

+ 49 - 0
Gem/Source/ROS2-Gem-DemoSystemComponent.h

@@ -0,0 +1,49 @@
+// {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}
+
+#pragma once
+
+#include <AzCore/Component/Component.h>
+
+#include <ROS2-Gem-Demo/ROS2-Gem-DemoBus.h>
+
+namespace ROS2_Gem_Demo
+{
+    class ROS2_Gem_DemoSystemComponent
+        : public AZ::Component
+        , protected ROS2_Gem_DemoRequestBus::Handler
+    {
+    public:
+        AZ_COMPONENT(ROS2_Gem_DemoSystemComponent, "{24d1ad58-703b-4153-bcf7-0d8d2f83d25f}");
+
+        static void Reflect(AZ::ReflectContext* context);
+
+        static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
+        static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible);
+        static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
+        static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
+
+        ROS2_Gem_DemoSystemComponent();
+        ~ROS2_Gem_DemoSystemComponent();
+
+    protected:
+        ////////////////////////////////////////////////////////////////////////
+        // ROS2_Gem_DemoRequestBus interface implementation
+
+        ////////////////////////////////////////////////////////////////////////
+
+        ////////////////////////////////////////////////////////////////////////
+        // AZ::Component interface implementation
+        void Init() override;
+        void Activate() override;
+        void Deactivate() override;
+        ////////////////////////////////////////////////////////////////////////
+    };
+}

+ 32 - 0
Gem/enabled_gems.cmake

@@ -0,0 +1,32 @@
+# {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
+    ROS2-Gem-Demo
+    Atom
+    AudioSystem
+    AWSCore
+    CameraFramework
+    DebugDraw
+    EditorPythonBindings
+    EMotionFX
+    GameState
+    ImGui
+    LandscapeCanvas
+    LyShine
+    PhysX
+    PrimitiveAssets
+    PrefabBuilder
+    SaveData
+    ScriptCanvasPhysics
+    ScriptEvents
+    StartingPointInput
+    TextureAtlas
+    WhiteBox
+    ROS2
+)

+ 21 - 0
Gem/gem.json

@@ -0,0 +1,21 @@
+{
+    "gem_name": "ROS2-Gem-Demo",
+    "display_name": "ROS2-Gem-Demo",
+    "license": "What license ROS2-Gem-Demo uses goes here: i.e. Apache-2.0 or MIT",
+    "license_url": "Link to the license web site goes here: i.e. https://opensource.org/licenses/Apache-2.0 Or https://opensource.org/licenses/MIT",
+    "origin": "The name of the originator goes here. i.e. XYZ Inc.",
+    "origin_url": "The primary repo for ROS2-Gem-Demo goes here: i.e. http://www.mydomain.com",
+    "type": "",
+    "summary": "A short description of ROS2-Gem-Demo.",
+    "canonical_tags": [
+        "Gem"
+    ],
+    "user_tags": [
+        "ROS2-Gem-Demo"
+    ],
+    "icon_path": "preview.png",
+    "requirements": "",
+    "documentation_url": "",
+    "dependencies": [
+    ]
+}

+ 14 - 0
Gem/ros2-gem-demo_files.cmake

@@ -0,0 +1,14 @@
+# {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(FILES
+    Include/ROS2-Gem-Demo/ROS2-Gem-DemoBus.h
+    Source/ROS2-Gem-DemoSystemComponent.cpp
+    Source/ROS2-Gem-DemoSystemComponent.h
+    enabled_gems.cmake
+)

+ 11 - 0
Gem/ros2-gem-demo_shared_files.cmake

@@ -0,0 +1,11 @@
+# {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(FILES
+    Source/ROS2-Gem-DemoModule.cpp
+)

+ 8 - 0
Platform/Android/android_project.cmake

@@ -0,0 +1,8 @@
+# {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}
+

+ 9 - 0
Platform/Android/android_project.json

@@ -0,0 +1,9 @@
+{
+    "Tags": ["Android"],
+    "android_settings" : {
+        "package_name" : "org.o3de.ROS2-Gem-Demo",
+        "version_number" : 1,
+        "version_name" : "1.0.0.0",
+        "orientation" : "landscape"
+    }
+}

+ 8 - 0
Platform/Linux/linux_project.cmake

@@ -0,0 +1,8 @@
+# {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}
+

+ 3 - 0
Platform/Linux/linux_project.json

@@ -0,0 +1,3 @@
+{
+  "Tags": ["Linux"]
+}

+ 8 - 0
Platform/Mac/mac_project.cmake

@@ -0,0 +1,8 @@
+# {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}
+

+ 3 - 0
Platform/Mac/mac_project.json

@@ -0,0 +1,3 @@
+{
+  "Tags": ["Mac"]
+}

+ 8 - 0
Platform/Windows/windows_project.cmake

@@ -0,0 +1,8 @@
+# {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}
+

+ 3 - 0
Platform/Windows/windows_project.json

@@ -0,0 +1,3 @@
+{
+  "Tags": ["Windows"]
+}

+ 8 - 0
Platform/iOS/ios_project.cmake

@@ -0,0 +1,8 @@
+# {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}
+

+ 3 - 0
Platform/iOS/ios_project.json

@@ -0,0 +1,3 @@
+{
+    "Tags": ["iOS"]
+}

+ 23 - 0
Registry/assetprocessor_settings.setreg

@@ -0,0 +1,23 @@
+{
+    "Amazon": {
+        "AssetProcessor": {
+            "Settings": {
+                "ScanFolder Project/ShaderLib": {
+                    "watch": "@PROJECTROOT@/ShaderLib",
+                    "recursive": 1,
+                    "order": 1
+                },
+                "ScanFolder Project/Shaders": {
+                    "watch": "@PROJECTROOT@/Shaders",
+                    "recurisve": 1,
+                    "order": 2
+                },
+                "ScanFolder Project/Registry": {
+                    "watch": "@PROJECTROOT@/Registry",
+                    "recursive": 1,
+                    "order": 3
+                }
+            }
+        }
+    }
+}

+ 10 - 0
Registry/awscoreconfiguration.setreg

@@ -0,0 +1,10 @@
+{
+    "Amazon":
+    {
+        "AWSCore":
+        {
+            "ProfileName": "default",
+            "ResourceMappingConfigFileName": "default_aws_resource_mappings.json"
+        }
+    }
+}

+ 3 - 0
Resources/GameSDK.ico

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:41239f8345fa91fe546442208461ad3cd17c7a7a7047af45018b97363bfea204
+size 109783

+ 3 - 0
Resources/LegacyLogoLauncher.bmp

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7c8433178baebafe984ca23d9325d3c71b5a177fc3b3b869afbb01a583542fbe
+size 462842

+ 6 - 0
Resources/Platform/Mac/Images.xcassets/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 68 - 0
Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/Contents.json

@@ -0,0 +1,68 @@
+{
+  "images" : [
+    {
+      "size" : "16x16",
+      "idiom" : "mac",
+      "filename" : "icon_16.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "16x16",
+      "idiom" : "mac",
+      "filename" : "icon_16_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "32x32",
+      "idiom" : "mac",
+      "filename" : "icon_32.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "32x32",
+      "idiom" : "mac",
+      "filename" : "icon_32_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "128x128",
+      "idiom" : "mac",
+      "filename" : "icon_128.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "128x128",
+      "idiom" : "mac",
+      "filename" : "icon_128_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "256x256",
+      "idiom" : "mac",
+      "filename" : "icon_256.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "256x256",
+      "idiom" : "mac",
+      "filename" : "icon_256_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "512x512",
+      "idiom" : "mac",
+      "filename" : "icon_512.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "512x512",
+      "idiom" : "mac",
+      "filename" : "icon_512_2x.png",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 3 - 0
Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f3c651ca45a83d0f68bdaa466826a29b2ca6f674e225d90e68b7dbadc2ba582d
+size 6620

+ 3 - 0
Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:094620c172320b062f9a1f8cc758ef4bbee11bc0a6049f46ad6b42f9bf613c92
+size 9679

+ 3 - 0
Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f7d5b15add5104d91a03df7d86898f4bc415d095d11c23555b24440497371948
+size 1061

+ 3 - 0
Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:148fdae6493d7b7e1bb6cc6aae1861e0469838f54dcb3c15cc157a548c707fec
+size 1910

+ 3 - 0
Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:094620c172320b062f9a1f8cc758ef4bbee11bc0a6049f46ad6b42f9bf613c92
+size 9679

+ 3 - 0
Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:934502e242ff7a2e34e21eed1424b5e0953e701761d158520b3297944132328e
+size 18716

+ 3 - 0
Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:148fdae6493d7b7e1bb6cc6aae1861e0469838f54dcb3c15cc157a548c707fec
+size 1910

+ 3 - 0
Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:749bcd29d73e5ef2d1ef8b2d878626d0bca09c6b0d5f1c9dc6cefe7b9082c8cc
+size 3758

+ 3 - 0
Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:934502e242ff7a2e34e21eed1424b5e0953e701761d158520b3297944132328e
+size 18716

+ 3 - 0
Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5719043940db268dccd2e20bd9d6aa13131890d43edf002a173714ae33890422
+size 29510

+ 24 - 0
Resources/Platform/Mac/Info.plist

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<false/>
+	<key>CFBundleDisplayName</key>
+	<string>ROS2-Gem-Demo</string>
+	<key>CFBundleExecutable</key>
+	<string>ROS2-Gem-Demo.GameLauncher</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.amazon.ROS2-Gem-Demo</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0.0</string>
+	<key>CFBundleSignature</key>
+	<string>03DE</string>
+	<key>CFBundleVersion</key>
+	<string>1.0.0</string>
+	<key>LSApplicationCategoryType</key>
+	<string>public.app-category.puzzle-games</string>
+</dict>
+</plist>

+ 6 - 0
Resources/Platform/iOS/Images.xcassets/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 169 - 0
Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/Contents.json

@@ -0,0 +1,169 @@
+{
+  "images" : [
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "2436h",
+      "filename" : "iPhoneLaunchImage1125x2436.png",
+      "minimum-system-version" : "11.0",
+      "orientation" : "portrait",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "2436h",
+      "filename" : "iPhoneLaunchImage2436x1125.png",
+      "minimum-system-version" : "11.0",
+      "orientation" : "landscape",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "736h",
+      "filename" : "iPhoneLaunchImage1242x2208.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "736h",
+      "filename" : "iPhoneLaunchImage2208x1242.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "landscape",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "667h",
+      "filename" : "iPhoneLaunchImage750x1334.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "filename" : "iPhoneLaunchImage640x960.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "retina4",
+      "filename" : "iPhoneLaunchImage640x1136.png",
+      "minimum-system-version" : "7.0",
+      "orientation" : "portrait",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage768x1024.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage1024x768.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage1536x2048.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage2048x1536.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "subtype" : "retina4",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a4018d9df45b4a04d4cf24a40fe01aa7e30e44a9fdd8ad9a41b0d87791786c12
+size 30442

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2eea06cb8ad05acefe9664551af5645d52d9763b82473b1fd4a2b2b6f62e96d3
+size 53550

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:90991aca91ab7222fdb85c03947cff38f549a6492551e7447e0c8f55022aae48
+size 52467

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6c8439a64d18dbff17dd67f6405bf49f99695e9b22fc2cc541dc72c6e3167307
+size 30564

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f752615184160d7a78f28d9eef354c86e544f11eb1dde9f651d7acd315b3f2e6
+size 35934

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a43f1d893e85aa99d335a657ec0f6c13a741db976c033451ab9a2328b8a5970
+size 35559

+ 116 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/Contents.json

@@ -0,0 +1,116 @@
+{
+  "images" : [
+    {
+      "size" : "20x20",
+      "idiom" : "iphone",
+      "filename" : "iPhoneNotificationIcon40x40.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "iphone",
+      "filename" : "iPhoneNotificationIcon60x60.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSettingsIcon58x58.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSettingsIcon87x87.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSpotlightIcon80x80.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSpotlightIcon120x120.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "iPhoneAppIcon120x120.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "iPhoneAppIcon180x180.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "ipad",
+      "filename" : "iPadNotificationIcon20x20.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "ipad",
+      "filename" : "iPadNotificationIcon40x40.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "iPadSettingsIcon29x29.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "iPadSettingsIcon58x58.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "iPadSpotlightIcon40x40.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "iPadSpotlightIcon80x80.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "iPadAppIcon76x76.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "iPadAppIcon152x152.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "83.5x83.5",
+      "idiom" : "ipad",
+      "filename" : "iPadProAppIcon167x167.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "1024x1024",
+      "idiom" : "ios-marketing",
+      "filename" : "iOSAppStoreIcon1024x1024.png",
+      "scale" : "1x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon152x152.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ebfc95bd4c0cbcc53d0ef9d314d26e09a347a22dabbf210597f405d9ed8646bf
+size 7729

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon76x76.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:99cb7da9282cfcfa64598455827f27ca6791d45ca0d2c3c2dc090d82468dac03
+size 4447

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadProAppIcon167x167.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:101568e946f1d4cea86d666187bbf71116bbf62e6eaf6d80bc3c5e2e184bdb15
+size 7938

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf930ffd4efb0b7b627e05aac6e0f56252ea206623e8b5d097d803aa315cdfb8
+size 1812

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ba5fea53b349e254b4625035a308d5731cb06f6d0adc278874d14db2627962cb
+size 3424

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf087f357cd439d14651073ac079542c60f0648a30dced2a8d19912124b3f8b6
+size 2310

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:421ad4db14c28ed18666158f9ec30747c5b8c757405c1efb32442978911b0c06
+size 4437

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d0044ebf7e0a5dd23ed64a1289c705d8f6c3c41a62d65e5a1371058855b8cec
+size 6546

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b8717c5f2109dfce1bf7b017278059d4915b524a6eb7e83cfb1926e54ed6869
+size 7383

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ba5fea53b349e254b4625035a308d5731cb06f6d0adc278874d14db2627962cb
+size 3424

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a32908a839a6cb0ca2a76d6aa60376ba8a14b4428f06c13149ec277514eb5676
+size 4533

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d0044ebf7e0a5dd23ed64a1289c705d8f6c3c41a62d65e5a1371058855b8cec
+size 6546

+ 3 - 0
Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:421ad4db14c28ed18666158f9ec30747c5b8c757405c1efb32442978911b0c06
+size 4437

+ 45 - 0
Resources/Platform/iOS/Info.plist

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>ROS2-Gem-Demo</string>
+	<key>CFBundleExecutable</key>
+	<string>ROS2-Gem-Demo.GameLauncher</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.amazon.lumberyard.ROS2-Gem-Demo</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>ROS2-Gem-Demo</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>arm64</string>
+		<string>metal</string>
+	</array>
+	<key>UIRequiresFullScreen</key>
+	<true/>
+	<key>UIStatusBarHidden</key>
+	<true/>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+	</array>
+</dict>
+</plist>

+ 5 - 0
ShaderLib/README.md

@@ -0,0 +1,5 @@
+# Customizing Shader Resource Groups
+
+Please read:  
+*\<engine\>/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/README.md*  
+for details on how to customize scenesrg.srgi and viewsrg.srgi.  

+ 26 - 0
ShaderLib/scenesrg.srgi

@@ -0,0 +1,26 @@
+// {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}
+
+#pragma once
+
+// Please read README.md for an explanation on why scenesrg.srgi and viewsrg.srgi are
+// located in this folder (And how you can optionally customize your own scenesrg.srgi
+// and viewsrg.srgi in your game project).
+
+#include <Atom/Features/SrgSemantics.azsli>
+
+partial ShaderResourceGroup SceneSrg : SRG_PerScene
+{
+/* Intentionally Empty. Helps define the SrgSemantic for SceneSrg once.*/
+};
+
+#define AZ_COLLECTING_PARTIAL_SRGS
+#include <Atom/Feature/Common/Assets/ShaderResourceGroups/SceneSrgAll.azsli>
+#undef AZ_COLLECTING_PARTIAL_SRGS

+ 26 - 0
ShaderLib/viewsrg.srgi

@@ -0,0 +1,26 @@
+// {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}
+
+#pragma once
+
+// Please read README.md for an explanation on why scenesrg.srgi and viewsrg.srgi are
+// located in this folder (And how you can optionally customize your own scenesrg.srgi
+// and viewsrg.srgi in your game project).
+
+#include <Atom/Features/SrgSemantics.azsli>
+
+partial ShaderResourceGroup ViewSrg : SRG_PerView
+{
+/* Intentionally Empty. Helps define the SrgSemantic for ViewSrg once.*/
+};
+
+#define AZ_COLLECTING_PARTIAL_SRGS
+#include <Atom/Feature/Common/Assets/ShaderResourceGroups/ViewSrgAll.azsli>
+#undef AZ_COLLECTING_PARTIAL_SRGS

+ 0 - 0
autoexec.cfg


+ 92 - 0
cmake/EngineFinder.cmake

@@ -0,0 +1,92 @@
+# {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.
+
+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()
+
+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
+            endif()
+        endif()
+    endforeach()
+endif()
+
+if(DEFINED ENV{USERPROFILE} AND EXISTS $ENV{USERPROFILE})
+    set(manifest_path $ENV{USERPROFILE}/.o3de/o3de_manifest.json) # Windows
+else()
+    set(manifest_path $ENV{HOME}/.o3de/o3de_manifest.json) # Unix
+endif()
+
+set(registration_error [=[
+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.
+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)
+    if(json_error)
+        message(FATAL_ERROR "Unable to read key 'engines_path' 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}")
+    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})
+        if(json_error)
+            message(FATAL_ERROR "Unable to read 'engines_path/${engine_path_index}' from '${manifest_path}'\nError: ${json_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()
+
+            if(engine_path)
+                list(APPEND CMAKE_MODULE_PATH "${engine_path}/cmake")
+                return()
+            endif()
+        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}")
+    endif()
+endif()

+ 3 - 0
game.cfg

@@ -0,0 +1,3 @@
+-- Enable warnings when asset loads take longer than the given millisecond threshold
+cl_assetLoadWarningEnable=true
+cl_assetLoadWarningMsThreshold=100

+ 3 - 0
preview.png

@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1cf8339fb51f82a68d2ab475c0476960e75a79d96d239c5b7cd272fbe4990ffe
+size 2770

+ 23 - 0
project.json

@@ -0,0 +1,23 @@
+{
+    "project_name": "ROS2-Gem-Demo",
+    "project_id": "{13ee6f7a-c9d6-4919-b36b-ec4cd0a903cb}",
+    "origin": "The primary repo for ROS2-Gem-Demo goes here: i.e. http://www.mydomain.com",
+    "license": "What license ROS2-Gem-Demo uses goes here: i.e. https://opensource.org/licenses/Apache-2.0 Or https://opensource.org/licenses/MIT etc.",
+    "display_name": "ROS2-Gem-Demo",
+    "summary": "A short description of ROS2-Gem-Demo.",
+    "canonical_tags": [
+        "Project"
+    ],
+    "user_tags": [
+        "ROS2-Gem-Demo"
+    ],
+    "icon_path": "preview.png",
+    "engine": "o3de",
+    "external_subdirectories": [
+        "Gem"
+    ],
+    "restricted": "ROS2-Gem-Demo",
+    "gem_names": [
+        "ROS2"
+    ]
+}