Parcourir la source

Merge pull request #6 from guillaume-haerinck/script_only

Update project to use the "script only" gem type
Nicholas Lawson il y a 1 mois
Parent
commit
b07afc7d4c
98 fichiers modifiés avec 580 ajouts et 1520 suppressions
  1. 2 2
      Gems/BasePlanet/Assets/Characters/MainPlayer/MainChar.prefab
  2. 2 2
      Gems/BasePlanet/Assets/Characters/MainPlayer/Main_Player.prefab
  3. 14 15
      Gems/BasePlanet/CMakeLists.txt
  4. 9 5
      Gems/BasePlanet/Registry/AssetProcessorPlatformConfig.setreg
  5. 19 2
      Gems/BasePlanet/gem.json
  6. 0 7
      Gems/RecastNavigation/CMakeLists.txt
  7. 0 9
      Gems/RecastNavigation/Code/CMakeLists.txt
  8. 0 45
      Gems/RecastNavigation/Code/Include/RecastNavigation/DetourNavigationBus.h
  9. 0 75
      Gems/RecastNavigation/Code/Include/RecastNavigation/NavMeshQuery.h
  10. 0 95
      Gems/RecastNavigation/Code/Include/RecastNavigation/RecastHelpers.h
  11. 0 35
      Gems/RecastNavigation/Code/Include/RecastNavigation/RecastNavigationBus.h
  12. 0 80
      Gems/RecastNavigation/Code/Include/RecastNavigation/RecastNavigationMeshBus.h
  13. 0 49
      Gems/RecastNavigation/Code/Include/RecastNavigation/RecastNavigationProviderBus.h
  14. 0 86
      Gems/RecastNavigation/Code/Include/RecastNavigation/RecastSmartPointer.h
  15. 0 2
      Gems/RecastNavigation/Code/Platform/Windows/Default/RecastNavigation.API_profile.cmake
  16. 0 2
      Gems/RecastNavigation/Code/Platform/Windows/Default/RecastNavigation.Editor.API_profile.cmake
  17. 0 10
      Gems/RecastNavigation/Code/Platform/Windows/Default/RecastNavigation.Editor.Private.Object_profile.cmake
  18. 0 10
      Gems/RecastNavigation/Code/Platform/Windows/Default/RecastNavigation.Editor_profile.cmake
  19. 0 10
      Gems/RecastNavigation/Code/Platform/Windows/Default/RecastNavigation.Private.Object_profile.cmake
  20. 0 10
      Gems/RecastNavigation/Code/Platform/Windows/Default/RecastNavigation_profile.cmake
  21. 0 222
      Gems/RecastNavigation/Code/Platform/Windows/Default/permutation.cmake
  22. 0 13
      Gems/RecastNavigation/Code/Platform/Windows/platform_windows.cmake
  23. 0 18
      Gems/RecastNavigation/Registry/assetprocessor_settings.setreg
  24. 0 21
      Gems/RecastNavigation/gem.json
  25. 0 3
      Gems/RecastNavigation/preview.png
  26. 4 0
      Project/.command_settings
  27. 1 0
      Project/.gitignore
  28. 15 0
      Project/AssetBundling/SeedLists/Example.seed
  29. 0 0
      Project/Assets/JUMP.inputbindings
  30. 0 0
      Project/Assets/Stick.inputbindings
  31. 0 0
      Project/Assets/UICanvas/InteractableUI.uicanvas
  32. 0 0
      Project/Assets/UICanvas/MainUI.uicanvas
  33. 0 0
      Project/Assets/UICanvas/MainUI_Nav.uicanvas
  34. 0 0
      Project/Assets/UICanvas/ShipCanvas.uicanvas
  35. 0 0
      Project/Assets/UICanvas/Status.uicanvas
  36. 29 3
      Project/CMakeLists.txt
  37. 11 0
      Project/CMakePresets.json
  38. 0 6
      Project/Config/default_aws_resource_mappings.json
  39. 0 69
      Project/Gem/CMakeLists.txt
  40. 0 31
      Project/Gem/Include/Planet_Survival_Game/Planet_Survival_GameBus.h
  41. 0 7
      Project/Gem/Planet_Survival_Game_files.cmake
  42. 0 4
      Project/Gem/Planet_Survival_Game_shared_files.cmake
  43. 0 2
      Project/Gem/Platform/Linux/PAL_linux.cmake
  44. 0 11
      Project/Gem/Platform/Linux/Planet_Survival_Game_linux_files.cmake
  45. 0 10
      Project/Gem/Platform/Linux/Planet_Survival_Game_shared_linux_files.cmake
  46. 0 2
      Project/Gem/Platform/Windows/PAL_windows.cmake
  47. 0 10
      Project/Gem/Platform/Windows/Planet_Survival_Game_shared_windows_files.cmake
  48. 0 11
      Project/Gem/Platform/Windows/Planet_Survival_Game_windows_files.cmake
  49. 0 18
      Project/Gem/Registry/assetprocessor_settings.setreg
  50. 0 37
      Project/Gem/Source/Planet_Survival_GameModule.cpp
  51. 0 76
      Project/Gem/Source/Planet_Survival_GameSystemComponent.cpp
  52. 0 40
      Project/Gem/Source/Planet_Survival_GameSystemComponent.h
  53. 0 35
      Project/Gem/enabled_gems.cmake
  54. 0 21
      Project/Gem/gem.json
  55. 1 1
      Project/Levels/Main/Main.prefab
  56. 1 1
      Project/Platform/Android/android_project.json
  57. 1 1
      Project/Prefabs/Status_UI.prefab
  58. 6 2
      Project/Registry/assetprocessor_settings.setreg
  59. 9 0
      Project/Registry/assimp_settings.setreg
  60. 0 10
      Project/Registry/awscoreconfiguration.setreg
  61. 0 3
      Project/Resources/LegacyLogoLauncher.bmp
  62. 67 67
      Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/Contents.json
  63. 0 0
      Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128.png
  64. 0 0
      Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128_2x.png
  65. 0 0
      Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16.png
  66. 0 0
      Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16_2x.png
  67. 0 0
      Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256.png
  68. 0 0
      Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256_2x.png
  69. 0 0
      Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32.png
  70. 0 0
      Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32_2x.png
  71. 0 0
      Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512.png
  72. 0 0
      Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512_2x.png
  73. 3 3
      Project/Resources/Platform/Mac/Info.plist
  74. 115 115
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/Contents.json
  75. 0 0
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon152x152.png
  76. 0 0
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon76x76.png
  77. 0 0
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadProAppIcon167x167.png
  78. 0 0
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon29x29.png
  79. 0 0
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon58x58.png
  80. 0 0
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon40x40.png
  81. 0 0
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon80x80.png
  82. 0 0
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon120x120.png
  83. 0 0
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon180x180.png
  84. 0 0
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon58x58.png
  85. 0 0
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon87x87.png
  86. 0 0
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon120x120.png
  87. 0 0
      Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon80x80.png
  88. 4 4
      Project/Resources/Platform/iOS/Info.plist
  89. 3 0
      Project/Resources/Splash.bmp
  90. 2 5
      Project/ShaderLib/scenesrg.srgi
  91. 2 5
      Project/ShaderLib/viewsrg.srgi
  92. 14 0
      Project/autoexec.cfg
  93. 134 44
      Project/cmake/EngineFinder.cmake
  94. 27 0
      Project/package.bat
  95. 40 0
      Project/package.sh
  96. 44 13
      Project/project.json
  97. 0 24
      Project/project.json.bak0
  98. 1 1
      README.md

+ 2 - 2
Gems/BasePlanet/Assets/Characters/MainPlayer/MainChar.prefab

@@ -761,9 +761,9 @@
                         "$type": "InputConfigurationComponent",
                         "Input Event Bindings": {
                             "assetId": {
-                                "guid": "{576ADA97-7A41-51E1-94D4-4C080B0D9BC7}"
+                                "guid": "{876A576F-EF02-5042-A845-E9A50895DB76}"
                             },
-                            "assetHint": "stick.inputbindings"
+                            "assetHint": "Assets/Stick.inputbindings"
                         }
                     }
                 }

+ 2 - 2
Gems/BasePlanet/Assets/Characters/MainPlayer/Main_Player.prefab

@@ -732,9 +732,9 @@
                         "$type": "InputConfigurationComponent",
                         "Input Event Bindings": {
                             "assetId": {
-                                "guid": "{576ADA97-7A41-51E1-94D4-4C080B0D9BC7}"
+                                "guid": "{876A576F-EF02-5042-A845-E9A50895DB76}"
                             },
-                            "assetHint": "stick.inputbindings"
+                            "assetHint": "Assets/Stick.inputbindings"
                         }
                     }
                 }

+ 14 - 15
Gems/BasePlanet/CMakeLists.txt

@@ -1,17 +1,16 @@
-#
-# 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.
-#
-# Other additions:
-# SPDX-License-Identifier: Apache-2.0 OR MIT
-# ^ any code, text, data or non-image files in this repository.
-#
-# SPDX-License-Identifier: CC-BY-4.0
-# ^ any additional content/assets, images, 3D geometry, etc.
-#
-#
 
-# This will export its "SourcePaths" to the generated "cmake_dependencies.<project>.assetbuilder.setreg"
+o3de_gem_setup("BasePlanet")
+
+# This indicates to the Builders applications(AssetProcessor, AssetBuilder, AssetBundler)
+# that the gem should be added to the "cmake_dependencies.<project>.assetbuilder.setreg"
+# which is generated when cmake configure occurs.
+# Also tooling applications such as the Editor needs the CMake alias
+# to see the gem as active
 if(PAL_TRAIT_BUILD_HOST_TOOLS)
-    ly_create_alias(NAME BasePlanet.Builders NAMESPACE Gem)
-endif()
+    ly_create_alias(NAME ${gem_name}.Builders NAMESPACE Gem)
+    ly_create_alias(NAME ${gem_name}.Tools NAMESPACE Gem)
+
+    # Add in CMake dependencies for each gem dependency listed in this gem's gem.json file
+    # for the Tools and Builders gem variants
+    o3de_add_variant_dependencies_for_gem_dependencies(GEM_NAME ${gem_name} VARIANTS Tools Builders)
+endif()

+ 9 - 5
Gems/BasePlanet/Registry/AssetProcessorPlatformConfig.setreg

@@ -2,11 +2,15 @@
     "Amazon": {
         "AssetProcessor": {
             "Settings": {
-                // ------------------------------------------------------------------------------
-                // Sample Gems, Block source folders
-                // ------------------------------------------------------------------------------
-                "Exclude Work In Progress Folders": {
-                    "pattern": ".*\\\\/.[Ss]rc\\\\/.*"
+                "ScanFolder BasePlanet/Assets": {
+                    "watch": "@GEMROOT:BasePlanet@/Assets",
+                    "recursive": 1,
+                    "order": 101
+                },
+                "ScanFolder BasePlanet/Registry": {
+                    "watch": "@GEMROOT:BasePlanet@/Registry",
+                    "recursive": 1,
+                    "order": 102
                 }
             }
         }

+ 19 - 2
Gems/BasePlanet/gem.json

@@ -1,8 +1,12 @@
 {
     "gem_name": "BasePlanet",
+    "version": "1.0.0",
     "display_name": "Samples:BasePlanet Assets",
-    "origin": "https://github.com/shawstar/BASE_PLANET_3",
     "license": "Content/Assets: CC-BY-4.0, Code: Apache-2.0 Or MIT",
+    "license_url": "",
+    "origin": "o3de",
+    "origin_url": "https://github.com/o3de/PlanetSurvivalGame",
+    "type": "Asset",
     "summary": "An O3DE sample game Gem with sample assets.",
     "canonical_tags": [
         "Gem"
@@ -12,5 +16,18 @@
         "Assets",
         "Samples"
     ],
-    "icon_path": "preview.png"
+    "platforms": [
+        "iOS",
+        "Windows",
+        "Android",
+        "Linux"
+    ],
+    "icon_path": "preview.png",
+    "requirements": "",
+    "documentation_url": "",
+    "dependencies": [],
+    "repo_uri": "",
+    "compatible_engines": [],
+    "engine_api_dependencies": [],
+    "restricted": "BasePlanet"
 }

+ 0 - 7
Gems/RecastNavigation/CMakeLists.txt

@@ -1,7 +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
-#
-#

+ 0 - 9
Gems/RecastNavigation/Code/CMakeLists.txt

@@ -1,9 +0,0 @@
-#
-# Copyright (c) Contributors to the Open 3D Engine Project.
-# For complete copyright and license terms please see the LICENSE at the root of this distribution.
-#
-# SPDX-License-Identifier: Apache-2.0 OR MIT
-#
-#
-
-include(Platform/${PAL_PLATFORM_NAME}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)

+ 0 - 45
Gems/RecastNavigation/Code/Include/RecastNavigation/DetourNavigationBus.h

@@ -1,45 +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
- *
- */
-
-#pragma once
-
-#include <AzCore/Component/ComponentBus.h>
-#include <AzCore/Math/Vector3.h>
-#include <AzCore/RTTI/BehaviorContext.h>
-
-namespace RecastNavigation
-{
-    //! Interface for path finding API.
-    class DetourNavigationRequests
-        : public AZ::ComponentBus
-    {
-    public:
-        //! An entity with a navigation mesh is required to calculate paths.
-        //! @param navMeshEntity an entity with @RecastNavigationMeshComponent
-        virtual void SetNavigationMeshEntity(AZ::EntityId navMeshEntity) = 0;
-
-        //! An entity with a navigation mesh is required to calculate paths.
-        //! @return the associated entity with @RecastNavigationMeshComponent
-        virtual AZ::EntityId GetNavigationMeshEntity() const = 0;
-
-        //! Blocking call that finds a walkable path between two entities.
-        //! @param fromEntity The starting point of the path from the position of this entity.
-        //! @param toEntity The end point of the path is at the position of this entity.
-        //! @return If a path is found, returns a vector of waypoints. An empty vector is returned if a path was not found.
-        virtual AZStd::vector<AZ::Vector3> FindPathBetweenEntities(AZ::EntityId fromEntity, AZ::EntityId toEntity) = 0;
-
-        //! Blocking call that finds a walkable path between two world positions.
-        //! @param fromWorldPosition The starting point of the path.
-        //! @param toWorldPosition The end point of the path to find.
-        //! @return If a path is found, returns a vector of waypoints. An empty vector is returned if a path was not found.
-        virtual AZStd::vector<AZ::Vector3> FindPathBetweenPositions(const AZ::Vector3& fromWorldPosition, const AZ::Vector3& toWorldPosition) = 0;
-    };
-
-    //! Request EBus for a path finding component.
-    using DetourNavigationRequestBus = AZ::EBus<DetourNavigationRequests>;
-} // namespace RecastNavigation

+ 0 - 75
Gems/RecastNavigation/Code/Include/RecastNavigation/NavMeshQuery.h

@@ -1,75 +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
- *
- */
-
-#pragma once
-
-#include <DetourNavMesh.h>
-#include <RecastNavigation/RecastSmartPointer.h>
-
-namespace RecastNavigation
-{
-    //! Holds pointers to Recast navigation mesh objects and the associated mutex.
-    //! This structure should be used when performing operations on a navigation mesh.
-    //! In order to access NavMesh or NavMeshQuery objects, use the object LockGuard(NavMeshQuery&).
-    class NavMeshQuery
-    {
-    public:
-        class LockGuard;
-
-        NavMeshQuery(dtNavMesh* navMesh, dtNavMeshQuery* navQuery)
-        {
-            m_mesh.reset(navMesh);
-            m_query.reset(navQuery);
-        }
-
-        //! A lock guard class with accessors for navigation mesh and query objects.
-        //! A lock is held in place until this object goes out of scope.
-        //! Release this object as soon as you are done working with the navigation mesh.
-        class LockGuard
-        {
-        public:
-            //! Grabs a lock on a mutex in @NavMeshQuery
-            //! @param navMesh navigation mesh to hold on to
-            explicit LockGuard(NavMeshQuery& navMesh)
-                : m_lock(navMesh.m_mutex)
-                , m_mesh(navMesh.m_mesh.get())
-                , m_query(navMesh.m_query.get())
-            {
-            }
-
-            //! Navigation mesh accessor.
-            dtNavMesh* GetNavMesh()
-            {
-                return m_mesh;
-            }
-
-            //! Navigation mesh query accessor.
-            dtNavMeshQuery* GetNavQuery()
-            {
-                return m_query;
-            }
-
-        private:
-            AZStd::lock_guard<AZStd::recursive_mutex> m_lock;
-            dtNavMesh* m_mesh = nullptr;
-            dtNavMeshQuery* m_query = nullptr;
-
-            AZ_DISABLE_COPY_MOVE(LockGuard);
-        };
-
-    private:
-        //! Recast navigation mesh object.
-        RecastPointer<dtNavMesh> m_mesh;
-
-        //! Recast navigation query object that can be used to find paths.
-        RecastPointer<dtNavMeshQuery> m_query;
-
-        //! A mutex for accessing and modifying the navigation mesh.
-        AZStd::recursive_mutex m_mutex;
-    };
-} // namespace RecastNavigation

+ 0 - 95
Gems/RecastNavigation/Code/Include/RecastNavigation/RecastHelpers.h

@@ -1,95 +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
- *
- */
-
-#pragma once
-
-#include <AzCore/Math/Aabb.h>
-#include <AzCore/Math/Vector3.h>
-#include <AzCore/std/containers/vector.h>
-#include <AzCore/std/function/function_template.h>
-#include <AzCore/std/smart_ptr/shared_ptr.h>
-
-namespace RecastNavigation
-{
-    //! A helper class to manage different coordinate systems between O3DE and Recast Navigation library.
-    //! In O3DE, +Z is up. In Recast library, +Y is up.
-    //! The data in this class is kept always in Recast format with +Y. Use @AsVector3WithZup to get a vector in O3DE format.
-    class RecastVector3
-    {
-    public:
-        RecastVector3() = default;
-
-        //! A constructor from O3DE coordinate values.
-        static RecastVector3 CreateFromVector3SwapYZ(const AZ::Vector3& in)
-        {
-            RecastVector3 out;
-            out.m_xyz[0] = in.GetX(),
-            out.m_xyz[1] = in.GetZ(),
-            out.m_xyz[2] = in.GetY();
-            return out;
-        }
-
-        //! A constructor from Recast coordinate values.
-        static RecastVector3 CreateFromFloatValuesWithoutAxisSwapping(const float* data)
-        {
-            RecastVector3 out;
-            out.m_xyz[0] = data[0];
-            out.m_xyz[1] = data[1];
-            out.m_xyz[2] = data[2];
-            return out;
-        }
-
-        //! @returns raw data without any conversion between coordinate systems. Useful when working with Recast library API.
-        float* GetData() { return &m_xyz[0]; }
-
-        //! @returns vector in O3DE coordinate space, with +Z being up. Useful when passing data from Recast to O3DE.
-        [[nodiscard]] AZ::Vector3 AsVector3WithZup() const
-        {
-            return { m_xyz[0], m_xyz[2] , m_xyz[1] };
-        }
-
-        float m_xyz[3] = { 0.f, 0.f, 0.f };
-    };
-
-    //! A collection of triangle data within a volume defined by an axis aligned bounding box.
-    class TileGeometry
-    {
-    public:
-        AZ::Aabb m_worldBounds = AZ::Aabb::CreateNull();
-        AZ::Aabb m_scanBounds = AZ::Aabb::CreateNull(); // includes @m_worldBounds and additional border extents
-
-        int m_tileX = 0; // tile coordinate within the navigation grid along X-axis
-        int m_tileY = 0; // tile coordinate within the navigation grid along Y-axis
-
-        //! A callback to the async object that requested tile geometry. Useful to return the tile data from a task back to the original caller.
-        AZStd::function<void(AZStd::shared_ptr<TileGeometry>)> m_tileCallback;
-
-        //! Indexed vertices.
-        AZStd::vector<RecastVector3> m_vertices;
-        AZStd::vector<AZ::s32> m_indices;
-
-        //! @returns true if there are no vertices in this tile.
-        bool IsEmpty() const
-        {
-            return m_vertices.empty();
-        }
-    };
-
-    //! Navigation data in binary Recast form.
-    struct NavigationTileData
-    {
-        //! @returns true if the Recast data is not empty.
-        bool IsValid() const
-        {
-            return m_size > 0 && m_data != nullptr;
-        }
-
-        unsigned char* m_data = nullptr;
-        int m_size = 0;
-    };
-} // namespace RecastNavigation

+ 0 - 35
Gems/RecastNavigation/Code/Include/RecastNavigation/RecastNavigationBus.h

@@ -1,35 +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
- *
- */
-
-#pragma once
-
-#include <AzCore/EBus/EBus.h>
-#include <AzCore/Interface/Interface.h>
-
-namespace RecastNavigation
-{
-    class RecastNavigationRequests
-    {
-    public:
-        AZ_RTTI(RecastNavigationRequests, "{d1c2f552-287d-4aa1-a5b8-5b234c9106f3}");
-        virtual ~RecastNavigationRequests() = default;
-    };
-
-    class RecastNavigationBusTraits
-        : public AZ::EBusTraits
-    {
-    public:
-        // EBusTraits overrides ...
-        static constexpr AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single;
-        static constexpr AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single;
-    };
-
-    using RecastNavigationRequestBus = AZ::EBus<RecastNavigationRequests, RecastNavigationBusTraits>;
-    using RecastNavigationInterface = AZ::Interface<RecastNavigationRequests>;
-
-} // namespace RecastNavigation

+ 0 - 80
Gems/RecastNavigation/Code/Include/RecastNavigation/RecastNavigationMeshBus.h

@@ -1,80 +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
- *
- */
-
-#pragma once
-
-#include <DetourNavMesh.h>
-#include <AzCore/Component/ComponentBus.h>
-#include <AzCore/RTTI/BehaviorContext.h>
-#include <RecastNavigation/NavMeshQuery.h>
-#include <RecastNavigation/RecastSmartPointer.h>
-
-namespace RecastNavigation
-{
-    //! The interface for request API of @RecastNavigationMeshRequestBus.
-    class RecastNavigationMeshRequests
-        : public AZ::ComponentBus
-    {
-    public:
-        //! Re-calculates the navigation mesh within the defined world area. Blocking call.
-        //! @returns false if another update operation is already in progress
-        virtual bool UpdateNavigationMeshBlockUntilCompleted() = 0;
-
-        //! Re-calculates the navigation mesh within the defined world area. Notifies when completed using @RecastNavigationMeshNotificationBus.
-        //! @returns false if another update operation is already in progress
-        virtual bool UpdateNavigationMeshAsync() = 0;
-
-        //! @returns the underlying navigation objects with the associated synchronization object.
-        virtual AZStd::shared_ptr<NavMeshQuery> GetNavigationObject() = 0;
-    };
-
-    //! Request EBus for a navigation mesh component.
-    using RecastNavigationMeshRequestBus = AZ::EBus<RecastNavigationMeshRequests>;
-
-    //! The interface for notification API of @RecastNavigationMeshNotificationBus.
-    class RecastNavigationMeshNotifications
-        : public AZ::ComponentBus
-    {
-    public:
-        //! Notifies when a navigation mesh is re-calculated and updated.
-        //! @param navigationMeshEntity the entity the navigation mesh is on. This is helpful for Script Canvas use.
-        virtual void OnNavigationMeshUpdated(AZ::EntityId navigationMeshEntity) = 0;
-
-        //! Notifies when a navigation mesh has started to re-calculate the navigation mesh.
-        //! @param navigationMeshEntity the entity the navigation mesh is on. This is helpful for Script Canvas use.
-        virtual void OnNavigationMeshBeganRecalculating(AZ::EntityId navigationMeshEntity) = 0;
-    };
-
-    //! Notification EBus for a navigation mesh component.
-    using RecastNavigationMeshNotificationBus = AZ::EBus<RecastNavigationMeshNotifications>;
-
-    //! Scripting reflection helper for @RecastNavigationMeshNotificationBus.
-    class RecastNavigationNotificationHandler
-        : public RecastNavigationMeshNotificationBus::Handler
-        , public AZ::BehaviorEBusHandler
-    {
-    public:
-        AZ_EBUS_BEHAVIOR_BINDER(RecastNavigationNotificationHandler,
-            "{819FF083-C28A-4620-B59E-78EB7D2CB432}",
-            AZ::SystemAllocator, OnNavigationMeshUpdated, OnNavigationMeshBeganRecalculating);
-
-        //! Notifies when a navigation mesh is updated.
-        //! @param navigationMeshEntity the entity with the navigation mesh. This makes for an easier to work in Script Cavnas.
-        void OnNavigationMeshUpdated(AZ::EntityId navigationMeshEntity) override
-        {
-            Call(FN_OnNavigationMeshUpdated, navigationMeshEntity);
-        }
-
-        //! Notifies when a navigation mesh has started to re-calculated navigation tile data.
-        //! @param navigationMeshEntity the entity the navigation mesh is on. This is helpful for Script Canvas use.
-        void OnNavigationMeshBeganRecalculating(AZ::EntityId navigationMeshEntity) override
-        {
-            Call(FN_OnNavigationMeshBeganRecalculating, navigationMeshEntity);
-        }
-    };
-} // namespace RecastNavigation

+ 0 - 49
Gems/RecastNavigation/Code/Include/RecastNavigation/RecastNavigationProviderBus.h

@@ -1,49 +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
- *
- */
-
-#pragma once
-
-#include <AzCore/Component/ComponentBus.h>
-#include <RecastNavigation/RecastHelpers.h>
-
-namespace RecastNavigation
-{
-    //! The interface for @RecastNavigationProviderRequestBus.
-    class RecastNavigationProviderRequests
-        : public AZ::ComponentBus
-    {
-    public:
-        //! Collects the geometry (triangles) within the configured area.
-        //! @param tileSize A navigation mesh is made up of tiles. Each tile is a square of the same size.
-        //! @param borderSize An additional extent in each dimension around each tile. In order for navigation tiles to connect
-        //!               to their respective neighboring tiles, they need additional geometry in the near vicinity.
-        //! @returns a container with triangle data for each tile.
-        virtual AZStd::vector<AZStd::shared_ptr<TileGeometry>> CollectGeometry(float tileSize, float borderSize) = 0;
-
-        //! Collects the geometry (triangles) within the configured area and returns the result via the callback @tileCallback.
-        //! @param tileSize A navigation mesh is made up of tiles. Each tile is a square of the same size.
-        //! @param borderSize An additional extent in each dimension around each tile. In order for navigation tiles to connect
-        //!               to their respective neighboring tiles, they need additional geometry in the near vicinity.
-        //! @param tileCallback will be called once for each tile with geometry data and one last time to indicate the end of the operation with an empty shared_ptr
-        //! @returns true if an async operation was scheduled, false otherwise
-        virtual bool CollectGeometryAsync(float tileSize, float borderSize,
-            AZStd::function<void(AZStd::shared_ptr<TileGeometry>)> tileCallback) = 0;
-
-        //! A navigation mesh is made up of tiles. Each tile is a square of the same size.
-        //! @param tileSize size of square tiles that make up a navigation mesh.
-        //! @returns number of tiles that would be necessary to the cover the required area provided by @GetWorldBounds.
-        virtual int GetNumberOfTiles(float tileSize) const = 0;
-
-        //! Returns the world bounds that this surveyor is configured to collect geometry.
-        //! @returns an axis aligned bounding box of the world bounds.
-        virtual AZ::Aabb GetWorldBounds() const = 0;
-    };
-
-    //! Request EBus for a navigation provider component that collects geometry data.
-    using RecastNavigationProviderRequestBus = AZ::EBus<RecastNavigationProviderRequests>;
-} // namespace RecastNavigation

+ 0 - 86
Gems/RecastNavigation/Code/Include/RecastNavigation/RecastSmartPointer.h

@@ -1,86 +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
- *
- */
-
-#pragma once
-#include <DetourNavMesh.h>
-#include <DetourNavMeshQuery.h>
-#include <Recast.h>
-#include <AzCore/std/smart_ptr/unique_ptr.h>
-
-namespace RecastNavigation
-{
-    template <typename T>
-    struct CustomRecastDeleter;
-
-    //! A memory management helper for various Recast objects that require different methods to free memory.
-    template <typename T>
-    using RecastPointer = AZStd::unique_ptr<T, CustomRecastDeleter<T>>;
-
-    template <>
-    struct CustomRecastDeleter<rcHeightfield>
-    {
-        void operator ()(rcHeightfield* p)
-        {
-            rcFreeHeightField(p);
-        }
-    };
-
-    template <>
-    struct CustomRecastDeleter<rcCompactHeightfield>
-    {
-        void operator ()(rcCompactHeightfield* p)
-        {
-            rcFreeCompactHeightfield(p);
-        }
-    };
-
-    template <>
-    struct CustomRecastDeleter<rcContourSet>
-    {
-        void operator ()(rcContourSet* p)
-        {
-            rcFreeContourSet(p);
-        }
-    };
-
-    template <>
-    struct CustomRecastDeleter<rcPolyMesh>
-    {
-        void operator ()(rcPolyMesh* p)
-        {
-            rcFreePolyMesh(p);
-        }
-    };
-
-    template <>
-    struct CustomRecastDeleter<rcPolyMeshDetail>
-    {
-        void operator ()(rcPolyMeshDetail* p)
-        {
-            rcFreePolyMeshDetail(p);
-        }
-    };
-
-    template <>
-    struct CustomRecastDeleter<dtNavMesh>
-    {
-        void operator ()(dtNavMesh* p)
-        {
-            dtFreeNavMesh(p);
-        }
-    };
-
-    template <>
-    struct CustomRecastDeleter<dtNavMeshQuery>
-    {
-        void operator ()(dtNavMeshQuery* p)
-        {
-            dtFreeNavMeshQuery(p);
-        }
-    };
-} // namespace RecastNavigation

+ 0 - 2
Gems/RecastNavigation/Code/Platform/Windows/Default/RecastNavigation.API_profile.cmake

@@ -1,2 +0,0 @@
-# Generated by O3DE install
-

+ 0 - 2
Gems/RecastNavigation/Code/Platform/Windows/Default/RecastNavigation.Editor.API_profile.cmake

@@ -1,2 +0,0 @@
-# Generated by O3DE install
-

+ 0 - 10
Gems/RecastNavigation/Code/Platform/Windows/Default/RecastNavigation.Editor.Private.Object_profile.cmake

@@ -1,10 +0,0 @@
-# Generated by O3DE install
-
-set_property(TARGET RecastNavigation.Editor.Private.Object
-    APPEND_STRING PROPERTY IMPORTED_LOCATION
-        $<$<CONFIG:profile>:${LY_ROOT_FOLDER}/lib/Windows/profile/Default/RecastNavigation.Editor.Private.Object.lib>
-)
-set_property(TARGET RecastNavigation.Editor.Private.Object
-    PROPERTY IMPORTED_LOCATION_PROFILE
-        ${LY_ROOT_FOLDER}/lib/Windows/profile/Default/RecastNavigation.Editor.Private.Object.lib
-)

+ 0 - 10
Gems/RecastNavigation/Code/Platform/Windows/Default/RecastNavigation.Editor_profile.cmake

@@ -1,10 +0,0 @@
-# Generated by O3DE install
-
-set_property(TARGET RecastNavigation.Editor
-    APPEND_STRING PROPERTY IMPORTED_LOCATION
-        $<$<CONFIG:profile>:${LY_ROOT_FOLDER}/bin/Windows/profile/Default/./RecastNavigation.Editor.dll>
-)
-set_property(TARGET RecastNavigation.Editor
-    PROPERTY IMPORTED_LOCATION_PROFILE
-        ${LY_ROOT_FOLDER}/bin/Windows/profile/Default/./RecastNavigation.Editor.dll
-)

+ 0 - 10
Gems/RecastNavigation/Code/Platform/Windows/Default/RecastNavigation.Private.Object_profile.cmake

@@ -1,10 +0,0 @@
-# Generated by O3DE install
-
-set_property(TARGET RecastNavigation.Private.Object
-    APPEND_STRING PROPERTY IMPORTED_LOCATION
-        $<$<CONFIG:profile>:${LY_ROOT_FOLDER}/lib/Windows/profile/Default/RecastNavigation.Private.Object.lib>
-)
-set_property(TARGET RecastNavigation.Private.Object
-    PROPERTY IMPORTED_LOCATION_PROFILE
-        ${LY_ROOT_FOLDER}/lib/Windows/profile/Default/RecastNavigation.Private.Object.lib
-)

+ 0 - 10
Gems/RecastNavigation/Code/Platform/Windows/Default/RecastNavigation_profile.cmake

@@ -1,10 +0,0 @@
-# Generated by O3DE install
-
-set_property(TARGET RecastNavigation
-    APPEND_STRING PROPERTY IMPORTED_LOCATION
-        $<$<CONFIG:profile>:${LY_ROOT_FOLDER}/bin/Windows/profile/Default/./RecastNavigation.dll>
-)
-set_property(TARGET RecastNavigation
-    PROPERTY IMPORTED_LOCATION_PROFILE
-        ${LY_ROOT_FOLDER}/bin/Windows/profile/Default/./RecastNavigation.dll
-)

+ 0 - 222
Gems/RecastNavigation/Code/Platform/Windows/Default/permutation.cmake

@@ -1,222 +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(recastLibraries DebugUtils;Detour;DetourCrowd;DetourTileCache;Recast)
-    foreach(recastLibrary ${recastLibraries})
-        add_library(RecastNavigation::${recastLibrary} STATIC IMPORTED GLOBAL)
-
-        set_target_properties(RecastNavigation::${recastLibrary} 
-            PROPERTIES 
-                IMPORTED_LOCATION 
-                    "${LY_ROOT_FOLDER}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}${recastLibrary}${CMAKE_STATIC_LIBRARY_SUFFIX}")
-
-        target_compile_definitions(RecastNavigation::${recastLibrary} 
-            INTERFACE 
-                DT_POLYREF64)
-
-        ly_target_include_system_directories(TARGET RecastNavigation::${recastLibrary} 
-            INTERFACE 
-                "${LY_ROOT_FOLDER}/include/recastnavigation")
-    endforeach()
-
-# Generated by O3DE
-
-ly_add_target(
-    NAME RecastNavigation.API IMPORTED HEADERONLY
-    NAMESPACE Gem
-    COMPILE_DEFINITIONS
-        INTERFACE
-
-    INCLUDE_DIRECTORIES
-        INTERFACE
-            Include
-    BUILD_DEPENDENCIES
-        INTERFACE
-            AZ::AzCore
-            RecastNavigation::Detour
-            RecastNavigation::Recast
-    RUNTIME_DEPENDENCIES
-
-    TARGET_PROPERTIES
-
-)
-
-
-
-set(configs debug;profile;release)
-foreach(config ${configs})
-    include("Platform/Windows/Default/RecastNavigation.API_${config}.cmake" OPTIONAL)
-endforeach()
-
-# Generated by O3DE
-
-ly_add_target(
-    NAME RecastNavigation.Private.Object IMPORTED STATIC
-    NAMESPACE Gem
-    COMPILE_DEFINITIONS
-        INTERFACE
-
-    INCLUDE_DIRECTORIES
-        INTERFACE
-            
-    BUILD_DEPENDENCIES
-        INTERFACE
-            AZ::AzCore
-            AZ::AzFramework
-            RecastNavigation::DebugUtils
-            RecastNavigation::Detour
-            RecastNavigation::Recast
-            Gem::LmbrCentral.Static
-            Gem::DebugDraw.Static
-    RUNTIME_DEPENDENCIES
-
-    TARGET_PROPERTIES
-
-)
-
-
-
-set(configs debug;profile;release)
-foreach(config ${configs})
-    include("Platform/Windows/Default/RecastNavigation.Private.Object_${config}.cmake" OPTIONAL)
-endforeach()
-
-# Generated by O3DE
-
-ly_add_target(
-    NAME RecastNavigation IMPORTED GEM_MODULE
-    NAMESPACE Gem
-    COMPILE_DEFINITIONS
-        INTERFACE
-
-    INCLUDE_DIRECTORIES
-        INTERFACE
-            Include
-    BUILD_DEPENDENCIES
-        INTERFACE
-            Gem::RecastNavigation.API
-    RUNTIME_DEPENDENCIES
-        Gem::RecastNavigation.Private.Object
-    TARGET_PROPERTIES
-
-)
-
-
-
-set(configs debug;profile;release)
-foreach(config ${configs})
-    include("Platform/Windows/Default/RecastNavigation_${config}.cmake" OPTIONAL)
-endforeach()
-
-# Generated by O3DE
-
-ly_add_target(
-    NAME RecastNavigation.Editor.API IMPORTED HEADERONLY
-    NAMESPACE Gem
-    COMPILE_DEFINITIONS
-        INTERFACE
-
-    INCLUDE_DIRECTORIES
-        INTERFACE
-            Include
-    BUILD_DEPENDENCIES
-        INTERFACE
-            AZ::AzToolsFramework
-    RUNTIME_DEPENDENCIES
-
-    TARGET_PROPERTIES
-
-)
-
-
-
-set(configs debug;profile;release)
-foreach(config ${configs})
-    include("Platform/Windows/Default/RecastNavigation.Editor.API_${config}.cmake" OPTIONAL)
-endforeach()
-
-# Generated by O3DE
-
-ly_add_target(
-    NAME RecastNavigation.Editor.Private.Object IMPORTED STATIC
-    NAMESPACE Gem
-    COMPILE_DEFINITIONS
-        INTERFACE
-
-    INCLUDE_DIRECTORIES
-        INTERFACE
-            
-    BUILD_DEPENDENCIES
-        INTERFACE
-            AZ::AzToolsFramework
-            Gem::RecastNavigation.Private.Object
-            Gem::LmbrCentral.Static
-            Gem::DebugDraw.Static
-    RUNTIME_DEPENDENCIES
-
-    TARGET_PROPERTIES
-
-)
-
-
-
-set(configs debug;profile;release)
-foreach(config ${configs})
-    include("Platform/Windows/Default/RecastNavigation.Editor.Private.Object_${config}.cmake" OPTIONAL)
-endforeach()
-
-# Generated by O3DE
-
-ly_add_target(
-    NAME RecastNavigation.Editor IMPORTED GEM_MODULE
-    NAMESPACE Gem
-    COMPILE_DEFINITIONS
-        INTERFACE
-
-    INCLUDE_DIRECTORIES
-        INTERFACE
-            Include
-    BUILD_DEPENDENCIES
-        INTERFACE
-            Gem::RecastNavigation.Editor.API
-    RUNTIME_DEPENDENCIES
-        Gem::RecastNavigation.Editor.Private.Object
-    TARGET_PROPERTIES
-
-)
-
-
-
-set(configs debug;profile;release)
-foreach(config ${configs})
-    include("Platform/Windows/Default/RecastNavigation.Editor_${config}.cmake" OPTIONAL)
-endforeach()
-
-if(NOT TARGET RecastNavigation.Clients)
-   ly_create_alias( NAME RecastNavigation.Clients NAMESPACE Gem TARGETS Gem::RecastNavigation)
-endif()
-if(NOT TARGET RecastNavigation.Servers)
-   ly_create_alias( NAME RecastNavigation.Servers NAMESPACE Gem TARGETS Gem::RecastNavigation)
-endif()
-if(NOT TARGET RecastNavigation.Clients.API)
-   ly_create_alias( NAME RecastNavigation.Clients.API NAMESPACE Gem TARGETS Gem::RecastNavigation.API)
-endif()
-if(NOT TARGET RecastNavigation.Servers.API)
-   ly_create_alias( NAME RecastNavigation.Servers.API NAMESPACE Gem TARGETS Gem::RecastNavigation.API)
-endif()
-if(NOT TARGET RecastNavigation.Tools)
-   ly_create_alias( NAME RecastNavigation.Tools NAMESPACE Gem TARGETS Gem::RecastNavigation.Editor)
-endif()
-if(NOT TARGET RecastNavigation.Builders)
-   ly_create_alias( NAME RecastNavigation.Builders NAMESPACE Gem TARGETS Gem::RecastNavigation.Editor)
-endif()
-if(NOT TARGET RecastNavigation.Tools.API)
-   ly_create_alias( NAME RecastNavigation.Tools.API NAMESPACE Gem TARGETS Gem::RecastNavigation.Editor.API)
-endif()
-if(NOT TARGET RecastNavigation.Builders.API)
-   ly_create_alias( NAME RecastNavigation.Builders.API NAMESPACE Gem TARGETS Gem::RecastNavigation.Editor.API)
-endif()

+ 0 - 13
Gems/RecastNavigation/Code/Platform/Windows/platform_windows.cmake

@@ -1,13 +0,0 @@
-#
-# Copyright (c) Contributors to the Open 3D Engine Project.
-# For complete copyright and license terms please see the LICENSE at the root of this distribution.
-#
-# SPDX-License-Identifier: Apache-2.0 OR MIT
-#
-#
-
-if(LY_MONOLITHIC_GAME)
-    include(Platform/Windows/Monolithic/permutation.cmake OPTIONAL)
-else()
-    include(Platform/Windows/Default/permutation.cmake)
-endif()

+ 0 - 18
Gems/RecastNavigation/Registry/assetprocessor_settings.setreg

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

+ 0 - 21
Gems/RecastNavigation/gem.json

@@ -1,21 +0,0 @@
-{
-    "gem_name": "RecastNavigation",
-    "display_name": "RecastNavigation",
-    "license": "Apache-2.0 Or MIT and zlib license for Recast library",
-    "license_url": "https://github.com/o3de/o3de/blob/development/LICENSE.txt",
-    "origin": "Open 3D Engine - o3de.org",
-    "origin_url": "https://github.com/o3de/o3de",
-    "type": "Code",
-    "summary": "Recast Navigation gem provides navigation features using Recast/Detour library that can be found at https://github.com/recastnavigation/recastnavigation",
-    "canonical_tags": [
-        "Gem"
-    ],
-    "user_tags": [
-        "Navigation"
-    ],
-    "icon_path": "preview.png",
-    "requirements": "This gem uses https://github.com/recastnavigation/recastnavigation which is acquired using FetchContent CMake feature.",
-    "documentation_url": "",
-    "dependencies": [],
-    "restricted": "RecastNavigation"
-}

+ 0 - 3
Gems/RecastNavigation/preview.png

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

+ 4 - 0
Project/.command_settings

@@ -0,0 +1,4 @@
+[export_project]
+option.build.assets = True
+seedlist.paths = AssetBundling/SeedLists/*.seed
+archive.output.format = zip

+ 1 - 0
Project/.gitignore

@@ -4,3 +4,4 @@
 [Uu]ser_test*/
 _savebackup/
 CMakeUserPresets.json
+*.bak0

+ 15 - 0
Project/AssetBundling/SeedLists/Example.seed

@@ -0,0 +1,15 @@
+{
+    "Type": "JsonSerialization",
+    "Version": 1,
+    "ClassName": "AZStd::vector<SeedInfo, allocator>",
+    "ClassData": [
+        {
+            "assetId": {
+                "guid": "{B3C48432-037D-5AA5-BB1B-6D7AE19E89DF}",
+                "subId": 204440690
+            },
+            "platformFlags": 2,
+            "pathHint": "levels/start/start.spawnable"
+        }
+    ]
+}

+ 0 - 0
Project/JUMP.inputbindings → Project/Assets/JUMP.inputbindings


+ 0 - 0
Project/Stick.inputbindings → Project/Assets/Stick.inputbindings


+ 0 - 0
Project/InteractableUI.uicanvas → Project/Assets/UICanvas/InteractableUI.uicanvas


+ 0 - 0
Project/MainUI.uicanvas → Project/Assets/UICanvas/MainUI.uicanvas


+ 0 - 0
Project/MainUI_Nav.uicanvas → Project/Assets/UICanvas/MainUI_Nav.uicanvas


+ 0 - 0
Project/ShipCanvas.uicanvas → Project/Assets/UICanvas/ShipCanvas.uicanvas


+ 0 - 0
Project/Status.uicanvas → Project/Assets/UICanvas/Status.uicanvas


+ 29 - 3
Project/CMakeLists.txt

@@ -1,9 +1,35 @@
 
 if(NOT PROJECT_NAME)
-    cmake_minimum_required(VERSION 3.20)
-    include(cmake/EngineFinder.cmake OPTIONAL)
+    cmake_minimum_required(VERSION 3.22)
+
+    # Utility function to look for an optional 'engine_finder_cmake_path'setting 
+    function(get_engine_finder_cmake_path project_json_file_path path_value)
+        if(NOT ${path_value} AND EXISTS "${project_json_file_path}")
+            file(READ "${project_json_file_path}" project_json_data)
+            string(JSON engine_finder_cmake_value ERROR_VARIABLE json_error GET ${project_json_data} "engine_finder_cmake_path")
+            cmake_path(APPEND CMAKE_CURRENT_SOURCE_DIR "${engine_finder_cmake_value}" engine_finder_cmake_value)
+            if(NOT json_error AND EXISTS "${engine_finder_cmake_value}")
+                set(${path_value} "${engine_finder_cmake_value}" PARENT_SCOPE)
+            elseif(json_error AND ${engine_finder_cmake_value} STREQUAL "NOTFOUND")
+                # When the error value is just NOTFOUND that means there is a JSON
+                # parsing error, and not simply a missing key 
+                message(WARNING "Unable to read 'engine_finder_cmake_path'.\nError: ${json_error} ${engine_finder_cmake_value}")
+            endif()
+        endif()
+    endfunction()
+    
+    # Check for optional 'engine_finder_cmake_path' in order of preference
+    # We support per-project customization to make it easier to upgrade 
+    # or revert to a custom EngineFinder.cmake 
+    get_engine_finder_cmake_path("${CMAKE_CURRENT_SOURCE_DIR}/user/project.json" engine_finder_cmake_path)
+    get_engine_finder_cmake_path("${CMAKE_CURRENT_SOURCE_DIR}/project.json" engine_finder_cmake_path)
+    if(NOT engine_finder_cmake_path)
+        set(engine_finder_cmake_path cmake/EngineFinder.cmake)
+    endif()
+
+    include(${engine_finder_cmake_path} OPTIONAL)
     find_package(o3de REQUIRED)
-    project(Planet_Survival_Game
+    project(PlanetSurvivalGame
         LANGUAGES C CXX
         VERSION 1.0.0.0
     )

+ 11 - 0
Project/CMakePresets.json

@@ -0,0 +1,11 @@
+{
+    "version": 4,
+    "cmakeMinimumRequired": {
+        "major": 3,
+        "minor": 23,
+        "patch": 0
+    },
+    "include": [
+        "user/cmake/engine/CMakePresets.json"
+    ]
+}

+ 0 - 6
Project/Config/default_aws_resource_mappings.json

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

+ 0 - 69
Project/Gem/CMakeLists.txt

@@ -1,69 +0,0 @@
-
-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 Planet_Survival_Game/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 : Planet_Survival_Game/Code/Platform/<platform_name>  or
-#            <restricted_folder>/<platform_name>/Planet_Survival_Game/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_Planet_Survival_Game_SUPPORTED)
-    return()
-endif()
-
-# We are on a supported platform, so add the Planet_Survival_Game target
-# Note: We include the common files and the platform specific files which are set in Planet_Survival_Game_files.cmake and
-# in ${pal_dir}/Planet_Survival_Game_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
-ly_add_target(
-    NAME Planet_Survival_Game.Static STATIC
-    NAMESPACE Gem
-    FILES_CMAKE
-        Planet_Survival_Game_files.cmake
-        ${pal_dir}/Planet_Survival_Game_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
-    INCLUDE_DIRECTORIES
-        PUBLIC
-            Include
-    BUILD_DEPENDENCIES
-        PRIVATE
-            AZ::AzGameFramework
-            Gem::Atom_AtomBridge.Static
-)
-
-ly_add_target(
-    NAME Planet_Survival_Game ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
-    NAMESPACE Gem
-    FILES_CMAKE
-        Planet_Survival_Game_shared_files.cmake
-        ${pal_dir}/Planet_Survival_Game_shared_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
-    INCLUDE_DIRECTORIES
-        PUBLIC
-            Include
-    BUILD_DEPENDENCIES
-        PRIVATE
-            Gem::Planet_Survival_Game.Static
-            AZ::AzCore
-)
-
-# if enabled, Planet_Survival_Game is used by all kinds of applications
-ly_create_alias(NAME Planet_Survival_Game.Builders NAMESPACE Gem TARGETS Gem::Planet_Survival_Game)
-ly_create_alias(NAME Planet_Survival_Game.Tools    NAMESPACE Gem TARGETS Gem::Planet_Survival_Game)
-ly_create_alias(NAME Planet_Survival_Game.Clients  NAMESPACE Gem TARGETS Gem::Planet_Survival_Game)
-ly_create_alias(NAME Planet_Survival_Game.Servers  NAMESPACE Gem TARGETS Gem::Planet_Survival_Game)
-
-################################################################################
-# Gem dependencies
-################################################################################
-
-# Enable the specified list of gems from GEM_FILE or GEMS list for this specific project:
-ly_enable_gems(PROJECT_NAME Planet_Survival_Game GEM_FILE enabled_gems.cmake)

+ 0 - 31
Project/Gem/Include/Planet_Survival_Game/Planet_Survival_GameBus.h

@@ -1,31 +0,0 @@
-
-#pragma once
-
-#include <AzCore/EBus/EBus.h>
-#include <AzCore/Interface/Interface.h>
-
-namespace Planet_Survival_Game
-{
-    class Planet_Survival_GameRequests
-    {
-    public:
-        AZ_RTTI(Planet_Survival_GameRequests, "{87D132B3-503D-4E2A-AF2F-A857C1AADF00}");
-        virtual ~Planet_Survival_GameRequests() = default;
-        // Put your public methods here
-    };
-
-    class Planet_Survival_GameBusTraits
-        : public AZ::EBusTraits
-    {
-    public:
-        //////////////////////////////////////////////////////////////////////////
-        // EBusTraits overrides
-        static constexpr AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single;
-        static constexpr AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single;
-        //////////////////////////////////////////////////////////////////////////
-    };
-
-    using Planet_Survival_GameRequestBus = AZ::EBus<Planet_Survival_GameRequests, Planet_Survival_GameBusTraits>;
-    using Planet_Survival_GameInterface = AZ::Interface<Planet_Survival_GameRequests>;
-
-} // namespace Planet_Survival_Game

+ 0 - 7
Project/Gem/Planet_Survival_Game_files.cmake

@@ -1,7 +0,0 @@
-
-set(FILES
-    Include/Planet_Survival_Game/Planet_Survival_GameBus.h
-    Source/Planet_Survival_GameSystemComponent.cpp
-    Source/Planet_Survival_GameSystemComponent.h
-    enabled_gems.cmake
-)

+ 0 - 4
Project/Gem/Planet_Survival_Game_shared_files.cmake

@@ -1,4 +0,0 @@
-
-set(FILES
-    Source/Planet_Survival_GameModule.cpp
-)

+ 0 - 2
Project/Gem/Platform/Linux/PAL_linux.cmake

@@ -1,2 +0,0 @@
-
-set(PAL_TRAIT_Planet_Survival_Game_SUPPORTED TRUE)

+ 0 - 11
Project/Gem/Platform/Linux/Planet_Survival_Game_linux_files.cmake

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

+ 0 - 10
Project/Gem/Platform/Linux/Planet_Survival_Game_shared_linux_files.cmake

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

+ 0 - 2
Project/Gem/Platform/Windows/PAL_windows.cmake

@@ -1,2 +0,0 @@
-
-set(PAL_TRAIT_Planet_Survival_Game_SUPPORTED TRUE)

+ 0 - 10
Project/Gem/Platform/Windows/Planet_Survival_Game_shared_windows_files.cmake

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

+ 0 - 11
Project/Gem/Platform/Windows/Planet_Survival_Game_windows_files.cmake

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

+ 0 - 18
Project/Gem/Registry/assetprocessor_settings.setreg

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

+ 0 - 37
Project/Gem/Source/Planet_Survival_GameModule.cpp

@@ -1,37 +0,0 @@
-
-#include <AzCore/Memory/SystemAllocator.h>
-#include <AzCore/Module/Module.h>
-
-#include "Planet_Survival_GameSystemComponent.h"
-
-namespace Planet_Survival_Game
-{
-    class Planet_Survival_GameModule
-        : public AZ::Module
-    {
-    public:
-        AZ_RTTI(Planet_Survival_GameModule, "{3E1809E9-25EE-4AB2-8FA7-539FCFCC27B6}", AZ::Module);
-        AZ_CLASS_ALLOCATOR(Planet_Survival_GameModule, AZ::SystemAllocator, 0);
-
-        Planet_Survival_GameModule()
-            : AZ::Module()
-        {
-            // Push results of [MyComponent]::CreateDescriptor() into m_descriptors here.
-            m_descriptors.insert(m_descriptors.end(), {
-                Planet_Survival_GameSystemComponent::CreateDescriptor(),
-            });
-        }
-
-        /**
-         * Add required SystemComponents to the SystemEntity.
-         */
-        AZ::ComponentTypeList GetRequiredSystemComponents() const override
-        {
-            return AZ::ComponentTypeList{
-                azrtti_typeid<Planet_Survival_GameSystemComponent>(),
-            };
-        }
-    };
-}// namespace Planet_Survival_Game
-
-AZ_DECLARE_MODULE_CLASS(Gem_Planet_Survival_Game, Planet_Survival_Game::Planet_Survival_GameModule)

+ 0 - 76
Project/Gem/Source/Planet_Survival_GameSystemComponent.cpp

@@ -1,76 +0,0 @@
-
-#include <AzCore/Serialization/SerializeContext.h>
-#include <AzCore/Serialization/EditContext.h>
-#include <AzCore/Serialization/EditContextConstants.inl>
-
-#include "Planet_Survival_GameSystemComponent.h"
-
-namespace Planet_Survival_Game
-{
-    void Planet_Survival_GameSystemComponent::Reflect(AZ::ReflectContext* context)
-    {
-        if (AZ::SerializeContext* serialize = azrtti_cast<AZ::SerializeContext*>(context))
-        {
-            serialize->Class<Planet_Survival_GameSystemComponent, AZ::Component>()
-                ->Version(0)
-                ;
-
-            if (AZ::EditContext* ec = serialize->GetEditContext())
-            {
-                ec->Class<Planet_Survival_GameSystemComponent>("Planet_Survival_Game", "[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 Planet_Survival_GameSystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided)
-    {
-        provided.push_back(AZ_CRC("Planet_Survival_GameService"));
-    }
-
-    void Planet_Survival_GameSystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
-    {
-        incompatible.push_back(AZ_CRC("Planet_Survival_GameService"));
-    }
-
-    void Planet_Survival_GameSystemComponent::GetRequiredServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& required)
-    {
-    }
-
-    void Planet_Survival_GameSystemComponent::GetDependentServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& dependent)
-    {
-    }
-
-    Planet_Survival_GameSystemComponent::Planet_Survival_GameSystemComponent()
-    {
-        if (Planet_Survival_GameInterface::Get() == nullptr)
-        {
-            Planet_Survival_GameInterface::Register(this);
-        }
-    }
-
-    Planet_Survival_GameSystemComponent::~Planet_Survival_GameSystemComponent()
-    {
-        if (Planet_Survival_GameInterface::Get() == this)
-        {
-            Planet_Survival_GameInterface::Unregister(this);
-        }
-    }
-
-    void Planet_Survival_GameSystemComponent::Init()
-    {
-    }
-
-    void Planet_Survival_GameSystemComponent::Activate()
-    {
-        Planet_Survival_GameRequestBus::Handler::BusConnect();
-    }
-
-    void Planet_Survival_GameSystemComponent::Deactivate()
-    {
-        Planet_Survival_GameRequestBus::Handler::BusDisconnect();
-    }
-}

+ 0 - 40
Project/Gem/Source/Planet_Survival_GameSystemComponent.h

@@ -1,40 +0,0 @@
-
-#pragma once
-
-#include <AzCore/Component/Component.h>
-
-#include <Planet_Survival_Game/Planet_Survival_GameBus.h>
-
-namespace Planet_Survival_Game
-{
-    class Planet_Survival_GameSystemComponent
-        : public AZ::Component
-        , protected Planet_Survival_GameRequestBus::Handler
-    {
-    public:
-        AZ_COMPONENT(Planet_Survival_GameSystemComponent, "{7992C978-D39C-4654-81A8-669FAF3CE627}");
-
-        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);
-
-        Planet_Survival_GameSystemComponent();
-        ~Planet_Survival_GameSystemComponent();
-
-    protected:
-        ////////////////////////////////////////////////////////////////////////
-        // Planet_Survival_GameRequestBus interface implementation
-
-        ////////////////////////////////////////////////////////////////////////
-
-        ////////////////////////////////////////////////////////////////////////
-        // AZ::Component interface implementation
-        void Init() override;
-        void Activate() override;
-        void Deactivate() override;
-        ////////////////////////////////////////////////////////////////////////
-    };
-}

+ 0 - 35
Project/Gem/enabled_gems.cmake

@@ -1,35 +0,0 @@
-
-set(ENABLED_GEMS
-    Planet_Survival_Game
-    Atom
-    AudioSystem
-    AWSCore
-    CameraFramework
-    DebugDraw
-    EditorPythonBindings
-    EMotionFX
-    GameState
-    ImGui
-    LandscapeCanvas
-    LyShine
-    PhysX
-    PrimitiveAssets
-    PrefabBuilder
-    SaveData
-    ScriptCanvasPhysics
-    ScriptEvents
-    StartingPointInput
-    TextureAtlas
-    WhiteBox
-    BasePlanet
-    Camera
-    StartingPointCamera
-    LyShineExamples
-    MessagePopup
-    Stars
-    DiffuseProbeGrid
-    Vegetation
-    NvCloth
-    RecastNavigation
-    ScriptCanvasDeveloper
-)

+ 0 - 21
Project/Gem/gem.json

@@ -1,21 +0,0 @@
-{
-    "gem_name": "Planet_Survival_Game",
-    "display_name": "Planet_Survival_Game",
-    "license": "What license Planet_Survival_Game 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 Planet_Survival_Game goes here: i.e. http://www.mydomain.com",
-    "type": "",
-    "summary": "A short description of Planet_Survival_Game.",
-    "canonical_tags": [
-        "Gem"
-    ],
-    "user_tags": [
-        "Planet_Survival_Game"
-    ],
-    "icon_path": "preview.png",
-    "requirements": "",
-    "documentation_url": "",
-    "dependencies": [
-    ]
-}

+ 1 - 1
Project/Levels/Main/Main.prefab

@@ -1762,7 +1762,7 @@
                     "m_template": {
                         "$type": "UiCanvasAssetRefComponent",
                         "CanvasAssetRef": {
-                            "AssetPath": "mainui_nav.uicanvas"
+                            "AssetPath": "Assets/UICanvas/MainUI_Nav.uicanvas"
                         },
                         "IsAutoLoad": true
                     }

+ 1 - 1
Project/Platform/Android/android_project.json

@@ -1,7 +1,7 @@
 {
     "Tags": ["Android"],
     "android_settings" : {
-        "package_name" : "org.o3de.BASE_PLANET_3",
+        "package_name" : "org.o3de.PlanetSurvivalGame",
         "version_number" : 1,
         "version_name" : "1.0.0.0",
         "orientation" : "landscape"

+ 1 - 1
Project/Prefabs/Status_UI.prefab

@@ -60,7 +60,7 @@
                     "m_template": {
                         "$type": "UiCanvasAssetRefComponent",
                         "CanvasAssetRef": {
-                            "AssetPath": "status.uicanvas"
+                            "AssetPath": "Assets/UICanvas/Status.uicanvas"
                         },
                         "IsAutoLoad": true
                     }

+ 6 - 2
Project/Registry/assetprocessor_settings.setreg

@@ -9,14 +9,18 @@
                 },
                 "ScanFolder Project/Shaders": {
                     "watch": "@PROJECTROOT@/Shaders",
-                    "recurisve": 1,
+                    "recursive": 1,
                     "order": 2
                 },
                 "ScanFolder Project/Registry": {
                     "watch": "@PROJECTROOT@/Registry",
                     "recursive": 1,
                     "order": 3
-                }
+                },
+                "Exclude export scripts": {
+                    "pattern": ".*\\\\/ExportScripts\\\\/.*"
+                },
+                "ProjectRelativeGemsScanFolderPriority":"higher"
             }
         }
     }

+ 9 - 0
Project/Registry/assimp_settings.setreg

@@ -0,0 +1,9 @@
+{
+    "O3DE": {
+        "Preferences": {
+            "SceneAPI": {
+                "AssImpReadRootTransform": true
+            }
+        }
+    }
+}

+ 0 - 10
Project/Registry/awscoreconfiguration.setreg

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

+ 0 - 3
Project/Resources/LegacyLogoLauncher.bmp

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

+ 67 - 67
Project/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/Contents.json → Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/Contents.json

@@ -1,68 +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"
-  }
+{
+  "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"
+  }
 }

+ 0 - 0
Project/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png → Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128.png


+ 0 - 0
Project/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128_2x.png → Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_128_2x.png


+ 0 - 0
Project/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png → Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16.png


+ 0 - 0
Project/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png → Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_16_2x.png


+ 0 - 0
Project/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png → Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256.png


+ 0 - 0
Project/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256_2x.png → Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_256_2x.png


+ 0 - 0
Project/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png → Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32.png


+ 0 - 0
Project/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png → Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_32_2x.png


+ 0 - 0
Project/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png → Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512.png


+ 0 - 0
Project/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png → Project/Resources/Platform/Mac/Images.xcassets/AppIcon.appiconset/icon_512_2x.png


+ 3 - 3
Project/Resources/Platform/Mac/Info.plist

@@ -5,11 +5,11 @@
 	<key>CFBundleInfoDictionaryVersion</key>
 	<false/>
 	<key>CFBundleDisplayName</key>
-	<string>BASE_PLANET_3</string>
+	<string>PlanetSurvivalGame</string>
 	<key>CFBundleExecutable</key>
-	<string>BASE_PLANET_3.GameLauncher</string>
+	<string>PlanetSurvivalGame.GameLauncher</string>
 	<key>CFBundleIdentifier</key>
-	<string>com.amazon.BASE_PLANET_3</string>
+	<string>com.amazon.PlanetSurvivalGame</string>
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>

+ 115 - 115
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/Contents.json → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/Contents.json

@@ -1,116 +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"
-  }
+{
+  "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"
+  }
 }

+ 0 - 0
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon152x152.png → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon152x152.png


+ 0 - 0
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon76x76.png → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadAppIcon76x76.png


+ 0 - 0
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadProAppIcon167x167.png → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadProAppIcon167x167.png


+ 0 - 0
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon29x29.png


+ 0 - 0
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSettingsIcon58x58.png


+ 0 - 0
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon40x40.png


+ 0 - 0
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPadSpotlightIcon80x80.png


+ 0 - 0
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon120x120.png


+ 0 - 0
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneAppIcon180x180.png


+ 0 - 0
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon58x58.png


+ 0 - 0
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSettingsIcon87x87.png


+ 0 - 0
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon120x120.png


+ 0 - 0
Project/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png → Project/Resources/Platform/iOS/Images.xcassets/AppIcon.appiconset/iPhoneSpotlightIcon80x80.png


+ 4 - 4
Project/Resources/Platform/iOS/Info.plist

@@ -5,15 +5,15 @@
 	<key>CFBundleDevelopmentRegion</key>
 	<string>en</string>
 	<key>CFBundleDisplayName</key>
-	<string>BASE_PLANET_3</string>
+	<string>PlanetSurvivalGame</string>
 	<key>CFBundleExecutable</key>
-	<string>BASE_PLANET_3.GameLauncher</string>
+	<string>PlanetSurvivalGame.GameLauncher</string>
 	<key>CFBundleIdentifier</key>
-	<string>com.amazon.lumberyard.BASE_PLANET_3</string>
+	<string>com.amazon.lumberyard.PlanetSurvivalGame</string>
 	<key>CFBundleInfoDictionaryVersion</key>
 	<string>6.0</string>
 	<key>CFBundleName</key>
-	<string>BASE_PLANET_3</string>
+	<string>PlanetSurvivalGame</string>
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>

+ 3 - 0
Project/Resources/Splash.bmp

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

+ 2 - 5
Project/ShaderLib/scenesrg.srgi

@@ -10,6 +10,7 @@
 
 #pragma once
 
+// this file is included by 'scenesrg_all.srgi', which is included by each shader using the scene-srg.
 // 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).
@@ -18,9 +19,5 @@
 
 partial ShaderResourceGroup SceneSrg : SRG_PerScene
 {
-/* Intentionally Empty. Helps define the SrgSemantic for SceneSrg once.*/
+    /* Intentionally Empty. Add fields here based on the project's needs */
 };
-
-#define AZ_COLLECTING_PARTIAL_SRGS
-#include <Atom/Feature/Common/Assets/ShaderResourceGroups/SceneSrgAll.azsli>
-#undef AZ_COLLECTING_PARTIAL_SRGS

+ 2 - 5
Project/ShaderLib/viewsrg.srgi

@@ -10,6 +10,7 @@
 
 #pragma once
 
+// this file is included by 'viewsrg_all.srgi', which is included by each shader using the view-srg.
 // 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).
@@ -18,9 +19,5 @@
 
 partial ShaderResourceGroup ViewSrg : SRG_PerView
 {
-/* Intentionally Empty. Helps define the SrgSemantic for ViewSrg once.*/
+    /* Intentionally Empty. Add fields here based on the project's needs */
 };
-
-#define AZ_COLLECTING_PARTIAL_SRGS
-#include <Atom/Feature/Common/Assets/ShaderResourceGroups/ViewSrgAll.azsli>
-#undef AZ_COLLECTING_PARTIAL_SRGS

+ 14 - 0
Project/autoexec.cfg

@@ -0,0 +1,14 @@
+; edit this file to make it load whatever level you want on startup automatically
+; You can also add additional commands in here that you want it to exec on startup.
+loadlevel start
+
+; uncomment the following line in any game packages that have all the
+; assets precompiled, so that it doesn't try to launch the Asset Processor in
+; actual shipping builds.
+
+; bg_ConnectToAssetProcessor 0
+
+; uncomment the following line to hide any debug display info from the top
+; right corner of the screen.
+
+; r_DisplayInfo 0

+ 134 - 44
Project/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.
+# 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()
 
+# before proceeding, check and set a global variable if its a "script only" project
+file(READ ${CMAKE_CURRENT_SOURCE_DIR}/project.json o3de_project_json)
+string(JSON project_is_script_only ERROR_VARIABLE json_error GET ${o3de_project_json} "script_only")
+if(project_is_script_only AND NOT json_error)
+    # we only set it if there's no error and it is a script only project
+    message(STATUS "This is a script-only project, no C++ compiler will be used")
+    set_property(GLOBAL PROPERTY "O3DE_SCRIPT_ONLY" TRUE)
+endif()
+
+# Option 2: Use the engine from the 'engine_path' field in <project>/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 '<project>/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,104 @@ 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)
+    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()

+ 27 - 0
Project/package.bat

@@ -0,0 +1,27 @@
+REM --------------------------------------------------------------------------------------------------
+REM 
+REM Copyright (c) Contributors to the Open 3D Engine Project.
+REM For complete copyright and license terms please see the LICENSE at the root of this distribution.
+REM 
+REM SPDX-License-Identifier: Apache-2.0 OR MIT
+REM 
+REM --------------------------------------------------------------------------------------------------
+
+
+REM This script is meant to export the project into a standalone shippable project that others can run.
+REM However, the project developer is expected to modify it to add steps or change it to their needs.
+REM
+REM To get more information about the possible tweakable parameters, run 
+REM (engine folder)\scripts\o3de.bat export-project -es ExportScripts/export_source_built_project.py --script-help
+
+set O3DE_PATH=F:/o3de
+set O3DE_PROJECT_PATH=D:/PlanetSurvivalGame/Project
+set O3DE_PROJECT_SEEDLIST=%O3DE_PROJECT_PATH%\AssetBundling\SeedLists\Example.seed
+set OUTPUT_PATH=%O3DE_PROJECT_PATH%\ProjectPackages
+
+REM change this to release or debug if you want it to make a release or debug package
+REM (Only works if the installer you have actually includes release and debug binaries)
+set OUTPUT_CONFIGURATION=profile
+
+%O3DE_PATH%\scripts\o3de.bat export-project -es ExportScripts\export_source_built_project.py --project-path %O3DE_PROJECT_PATH% --no-monolithic-build --log-level INFO -assets --config %OUTPUT_CONFIGURATION% --archive-output zip --seedlist %O3DE_PROJECT_SEEDLIST% -out %OUTPUT_PATH%
+

+ 40 - 0
Project/package.sh

@@ -0,0 +1,40 @@
+#
+# 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
+#
+#
+
+# This script is meant to export the project into a standalone shippable project that others can run.
+# However, the project developer is expected to modify it to add steps or change it to their needs.
+
+# To get more information about the possible tweakable parameters, run 
+# (engine folder)/scripts/o3de.sh export-project -es ExportScripts/export_source_built_project.py --script-help
+
+# The output of this script will be placed in the "ProjectPackages" folder and will include
+# * A standalone version of the project game client, shippable, with all the assets and binaries
+# * A standalone version of the project server (if the project has one), shippable, with all the assets and binaries
+# * A standalone version of the project's "Unified" (Client + 'listen' Server), with assets and binaries
+# * zip files of each of the above (based on the --archive-output zip) option below - xz, bz2, gzip and 'none' 
+#   are also available.
+
+O3DE_PATH=F:/o3de
+O3DE_PROJECT_PATH=D:/PlanetSurvivalGame/Project
+
+# The seedlist is a list of assets that will be included in the package (it automatically computes dependencies
+# based on these assets and will include dependencies recusively on anything in the seed list.  Modify it
+# to include your own 'root' assets that you want to include in the package using the AssetBundler tool
+O3DE_PROJECT_SEEDLIST=${O3DE_PROJECT_PATH}/AssetBundling/SeedLists/Example.seed
+OUTPUT_PATH=${O3DE_PROJECT_PATH}/ProjectPackages
+
+# change this to release, profile, or debug 
+# (Only works if the installer you have actually includes release, profile or debug binaries)
+
+# note that script-only-projects cannot support monolithic configurations and the default installer
+# only includes monolithic release configuration (along with non-monolithic debug and profile).
+# you can build your own installer that has non-monolithic release, and then use release, in that case,
+# but otherwise, stick to either profile or debug.
+OUTPUT_CONFIGURATION=profile
+
+${O3DE_PATH}/scripts/o3de.sh export-project -es ExportScripts/export_source_built_project.py --project-path ${O3DE_PROJECT_PATH} -nomono  --log-level INFO -assets --config ${OUTPUT_CONFIGURATION} --archive-output zip --seedlist ${O3DE_PROJECT_SEEDLIST} -out ${OUTPUT_PATH}

+ 44 - 13
Project/project.json

@@ -1,25 +1,56 @@
 {
-    "project_name": "Planet_Survival_Game",
-    "project_id": "{EEB91659-9D39-41AF-8BCD-A0398B3CDFB6}",
-    "origin": "The primary repo for Planet_Survival_Game goes here: i.e. http://www.mydomain.com",
-    "license": "What license Planet_Survival_Game uses goes here: i.e. https://opensource.org/licenses/Apache-2.0 Or https://opensource.org/licenses/MIT etc.",
-    "display_name": "Planet_Survival_Game",
-    "summary": "A short description of Planet_Survival_Game.",
+    "project_name": "PlanetSurvivalGame",
+    "version": "1.0.0",
+    "project_id": "{E2634FE2-9182-495D-8640-C1B006734B27}",
+    "origin": "The primary repo for PlanetSurvivalGame goes here: i.e. http://www.mydomain.com",
+    "license": "What license PlanetSurvivalGame uses goes here: i.e. https://opensource.org/licenses/Apache-2.0 Or https://opensource.org/licenses/MIT etc.",
+    "display_name": "PlanetSurvivalGame",
+    "summary": "A short description of PlanetSurvivalGame.",
+    "script_only": true,
     "canonical_tags": [
         "Project"
     ],
     "user_tags": [
-        "Planet_Survival_Game"
+        "PlanetSurvivalGame"
     ],
     "icon_path": "preview.png",
     "engine": "o3de",
+    "restricted": "PlanetSurvivalGame",
+    "gem_names": [
+        "Atom",
+        "AudioSystem",
+        "BasePlanet",
+        "Camera",
+        "CameraFramework",
+        "Compression",
+        "DebugDraw",
+        "DiffuseProbeGrid",
+        "EMotionFX",
+        "EditorPythonBindings",
+        "GameState",
+        "ImGui",
+        "LandscapeCanvas",
+        "LyShine",
+        "LyShineExamples",
+        "MessagePopup",
+        "NvCloth",
+        "PhysX",
+        "PrefabBuilder",
+        "PrimitiveAssets",
+        "RecastNavigation",
+        "RemoteTools",
+        "SaveData",
+        "ScriptCanvasPhysics",
+        "ScriptEvents",
+        "Stars",
+        "StartingPointCamera",
+        "StartingPointInput",
+        "TextureAtlas",
+        "Vegetation",
+        "WhiteBox"
+    ],
     "external_subdirectories": [
-        "Gem",
         "../Gems/BasePlanet"
     ],
-    "restricted": "Planet_Survival_Game",
-    "gem_names": [
-        "BasePlanet"
-    ],
-    "engine_version": "2.2.2"
+    "engine_version": "4.2.0"
 }

+ 0 - 24
Project/project.json.bak0

@@ -1,24 +0,0 @@
-{
-    "project_name": "Planet_Survival_Game",
-    "project_id": "{EEB91659-9D39-41AF-8BCD-A0398B3CDFB6}",
-    "origin": "The primary repo for Planet_Survival_Game goes here: i.e. http://www.mydomain.com",
-    "license": "What license Planet_Survival_Game uses goes here: i.e. https://opensource.org/licenses/Apache-2.0 Or https://opensource.org/licenses/MIT etc.",
-    "display_name": "Planet_Survival_Game",
-    "summary": "A short description of Planet_Survival_Game.",
-    "canonical_tags": [
-        "Project"
-    ],
-    "user_tags": [
-        "Planet_Survival_Game"
-    ],
-    "icon_path": "preview.png",
-    "engine": "o3de-sdk",
-    "external_subdirectories": [
-        "Gem",
-        "../Gems/BasePlanet"
-    ],
-    "restricted": "Planet_Survival_Game",
-    "gem_names": [
-        "BasePlanet"
-    ]
-}

+ 1 - 1
README.md

@@ -1,4 +1,4 @@
-<u>Supported o3de versions</u> : **23.10**
+<u>Supported o3de versions</u> : **24.09.2**
 
 # Planet Survival Game: Point and Click, Turn Based Strategy Game (By Starr Shaw)