Merge pull request #1011 from aws-lumberyard-dev/ly-as-sdk/LYN-2948
Integration of the LY as an SDK work
This commit is contained in:
@@ -4,6 +4,7 @@ __pycache__
|
||||
AssetProcessorTemp/**
|
||||
[Bb]uild/**
|
||||
[Cc]ache/
|
||||
/install/
|
||||
Editor/EditorEventLog.xml
|
||||
Editor/EditorLayout.xml
|
||||
**/*egg-info/**
|
||||
@@ -19,3 +20,4 @@ _savebackup/
|
||||
TestResults/**
|
||||
*.swatches
|
||||
/imgui.ini
|
||||
/scripts/project_manager/logs/
|
||||
|
||||
@@ -20,31 +20,49 @@ if(json_error)
|
||||
message(FATAL_ERROR "Unable to read key 'engine' from 'project.json', error: ${json_error}")
|
||||
endif()
|
||||
|
||||
# Read the list of paths from ~.o3de/o3de_manifest.json
|
||||
file(TO_CMAKE_PATH "$ENV{USERPROFILE}" home_directory) # Windows
|
||||
if((NOT home_directory) OR (NOT EXISTS ${home_directory}))
|
||||
file(TO_CMAKE_PATH "$ENV{HOME}" home_directory)# Unix
|
||||
if(DEFINED ENV{USERPROFILE} AND EXISTS $ENV{USERPROFILE})
|
||||
set(manifest_path $ENV{USERPROFILE}/.o3de/o3de_manifest.json) # Windows
|
||||
else()
|
||||
set(manifest_path $ENV{HOME}/.o3de/o3de_manifest.json) # Unix
|
||||
endif()
|
||||
|
||||
if (NOT home_directory)
|
||||
message(FATAL_ERROR "Cannot find user home directory, the o3de manifest cannot be found")
|
||||
endif()
|
||||
# Set manifest path to path in the user home directory
|
||||
set(manifest_path ${home_directory}/.o3de/o3de_manifest.json)
|
||||
|
||||
# Read the ~/.o3de/o3de_manifest.json file and look through the 'engines_path' object.
|
||||
# Find a key that matches LY_ENGINE_NAME_TO_USE and use that as the engine path.
|
||||
if(EXISTS ${manifest_path})
|
||||
file(READ ${manifest_path} manifest_json)
|
||||
string(JSON engines_count ERROR_VARIABLE json_error LENGTH ${manifest_json} engines)
|
||||
|
||||
string(JSON engines_path_count ERROR_VARIABLE json_error LENGTH ${manifest_json} engines_path)
|
||||
if(json_error)
|
||||
message(FATAL_ERROR "Unable to read key 'engines' from '${manifest_path}', error: ${json_error}")
|
||||
message(FATAL_ERROR "Unable to read key 'engines_path' from '${manifest_path}', error: ${json_error}")
|
||||
endif()
|
||||
|
||||
math(EXPR engines_count "${engines_count}-1")
|
||||
foreach(engine_path_index RANGE ${engines_count})
|
||||
string(JSON engine_path ERROR_VARIABLE json_error GET ${manifest_json} engines ${engine_path_index})
|
||||
if(${json_error})
|
||||
message(FATAL_ERROR "Unable to read engines[${engine_path_index}] '${manifest_path}', error: ${json_error}")
|
||||
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, error: ${json_error}")
|
||||
endif()
|
||||
|
||||
math(EXPR engines_path_count "${engines_path_count}-1")
|
||||
foreach(engine_path_index RANGE ${engines_path_count})
|
||||
string(JSON engine_name ERROR_VARIABLE json_error MEMBER ${manifest_json} engines_path ${engine_path_index})
|
||||
if(json_error)
|
||||
message(FATAL_ERROR "Unable to read 'engines_path/${engine_path_index}' from '${manifest_path}', error: ${json_error}")
|
||||
endif()
|
||||
|
||||
if(LY_ENGINE_NAME_TO_USE STREQUAL engine_name)
|
||||
string(JSON engine_path ERROR_VARIABLE json_error GET ${manifest_json} engines_path ${engine_name})
|
||||
if(json_error)
|
||||
message(FATAL_ERROR "Unable to read value from 'engines_path/${engine_name}', error: ${json_error}")
|
||||
endif()
|
||||
|
||||
if(engine_path)
|
||||
list(APPEND CMAKE_MODULE_PATH "${engine_path}/cmake")
|
||||
break()
|
||||
endif()
|
||||
endif()
|
||||
list(APPEND CMAKE_MODULE_PATH "${engine_path}/cmake")
|
||||
endforeach()
|
||||
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 "Engine registration is required before configuring a project. Please register an engine by running 'scripts/o3de register --this-engine'")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -28,30 +28,41 @@ ly_add_target(
|
||||
Gem::Atom_AtomBridge.Static
|
||||
)
|
||||
|
||||
# if enabled, AutomatedTesting is used by all kinds of applications
|
||||
ly_create_alias(NAME AutomatedTesting.Builders NAMESPACE Gem TARGETS Gem::AutomatedTesting)
|
||||
ly_create_alias(NAME AutomatedTesting.Tools NAMESPACE Gem TARGETS Gem::AutomatedTesting)
|
||||
ly_create_alias(NAME AutomatedTesting.Clients NAMESPACE Gem TARGETS Gem::AutomatedTesting)
|
||||
ly_create_alias(NAME AutomatedTesting.Servers NAMESPACE Gem TARGETS Gem::AutomatedTesting)
|
||||
|
||||
################################################################################
|
||||
# Gem dependencies
|
||||
################################################################################
|
||||
ly_add_project_dependencies(
|
||||
PROJECT_NAME
|
||||
AutomatedTesting
|
||||
TARGETS
|
||||
AutomatedTesting.GameLauncher
|
||||
DEPENDENCIES_FILES
|
||||
runtime_dependencies.cmake
|
||||
${pal_dir}/runtime_dependencies.cmake
|
||||
)
|
||||
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
ly_add_project_dependencies(
|
||||
PROJECT_NAME
|
||||
AutomatedTesting
|
||||
TARGETS
|
||||
AssetBuilder
|
||||
AssetProcessor
|
||||
AssetProcessorBatch
|
||||
Editor
|
||||
DEPENDENCIES_FILES
|
||||
tool_dependencies.cmake
|
||||
${pal_dir}/tool_dependencies.cmake
|
||||
)
|
||||
# The GameLauncher uses "Clients" gem variants:
|
||||
ly_enable_gems(PROJECT_NAME AutomatedTesting GEM_FILE enabled_gems.cmake
|
||||
TARGETS AutomatedTesting.GameLauncher
|
||||
VARIANTS Clients)
|
||||
|
||||
# If we build a server, then apply the gems to the server
|
||||
if(PAL_TRAIT_BUILD_SERVER_SUPPORTED)
|
||||
# if we're making a server, then add the "Server" gem variants to it:
|
||||
ly_enable_gems(PROJECT_NAME AutomatedTesting GEM_FILE enabled_gems.cmake
|
||||
TARGETS AutomatedTesting.ServerLauncher
|
||||
VARIANTS Servers)
|
||||
|
||||
set_property(GLOBAL APPEND PROPERTY LY_LAUNCHER_SERVER_PROJECTS AutomatedTesting)
|
||||
endif()
|
||||
|
||||
if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
# The Editor uses "Tools" gem variants:
|
||||
ly_enable_gems(
|
||||
PROJECT_NAME AutomatedTesting GEM_FILE enabled_gems.cmake
|
||||
TARGETS Editor
|
||||
VARIANTS Tools)
|
||||
|
||||
# The pipeline tools use "Builders" gem variants:
|
||||
ly_enable_gems(
|
||||
PROJECT_NAME AutomatedTesting GEM_FILE enabled_gems.cmake
|
||||
TARGETS AssetBuilder AssetProcessor AssetProcessorBatch
|
||||
VARIANTS Builders)
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the "License"). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
set(ENABLED_GEMS
|
||||
ImGui
|
||||
ScriptEvents
|
||||
ExpressionEvaluation
|
||||
Gestures
|
||||
CertificateManager
|
||||
DebugDraw
|
||||
SceneProcessing
|
||||
GraphCanvas
|
||||
InAppPurchases
|
||||
AutomatedTesting
|
||||
EditorPythonBindings
|
||||
QtForPython
|
||||
PythonAssetBuilder
|
||||
Metastream
|
||||
AudioSystem
|
||||
Camera
|
||||
EMotionFX
|
||||
PhysX
|
||||
CameraFramework
|
||||
StartingPointMovement
|
||||
StartingPointCamera
|
||||
ScriptCanvas
|
||||
ScriptCanvasPhysics
|
||||
ScriptCanvasTesting
|
||||
LyShineExamples
|
||||
StartingPointInput
|
||||
PhysXDebug
|
||||
WhiteBox
|
||||
FastNoise
|
||||
SurfaceData
|
||||
GradientSignal
|
||||
Vegetation
|
||||
GraphModel
|
||||
LandscapeCanvas
|
||||
NvCloth
|
||||
Blast
|
||||
Maestro
|
||||
TextureAtlas
|
||||
LmbrCentral
|
||||
LyShine
|
||||
HttpRequestor
|
||||
Atom_AtomBridge
|
||||
AWSCore
|
||||
AWSClientAuth
|
||||
AWSMetrics
|
||||
)
|
||||
@@ -1,48 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the License). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an AS IS BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
# Extracted from Game
|
||||
set(GEM_DEPENDENCIES
|
||||
Gem::Maestro
|
||||
Gem::TextureAtlas
|
||||
Gem::LmbrCentral
|
||||
Gem::LyShine
|
||||
Gem::HttpRequestor
|
||||
Gem::ScriptEvents
|
||||
Gem::ExpressionEvaluation
|
||||
Gem::Gestures
|
||||
Gem::CertificateManager
|
||||
Gem::DebugDraw
|
||||
Gem::AudioSystem
|
||||
Gem::InAppPurchases
|
||||
Gem::AutomatedTesting
|
||||
Gem::Metastream
|
||||
Gem::Camera
|
||||
Gem::EMotionFX
|
||||
Gem::PhysX
|
||||
Gem::CameraFramework
|
||||
Gem::StartingPointMovement
|
||||
Gem::StartingPointCamera
|
||||
Gem::ScriptCanvas
|
||||
Gem::ImGui
|
||||
Gem::LyShineExamples
|
||||
Gem::StartingPointInput
|
||||
Gem::ScriptCanvasPhysics
|
||||
Gem::PhysXDebug
|
||||
Gem::WhiteBox
|
||||
Gem::FastNoise
|
||||
Gem::SurfaceData
|
||||
Gem::GradientSignal
|
||||
Gem::Vegetation
|
||||
Gem::Atom_AtomBridge
|
||||
Gem::NvCloth
|
||||
Gem::Blast
|
||||
)
|
||||
@@ -1,60 +0,0 @@
|
||||
#
|
||||
# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
# its licensors.
|
||||
#
|
||||
# For complete copyright and license terms please see the LICENSE at the root of this
|
||||
# distribution (the License). All use of this software is governed by the License,
|
||||
# or, if provided, by the license below or the license accompanying this file. Do not
|
||||
# remove or modify any license notices. This file is distributed on an AS IS BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
#
|
||||
|
||||
# Extracted from Editor.xml
|
||||
set(GEM_DEPENDENCIES
|
||||
Gem::Maestro.Editor
|
||||
Gem::TextureAtlas.Editor
|
||||
Gem::LmbrCentral.Editor
|
||||
Gem::LyShine.Editor
|
||||
Gem::HttpRequestor
|
||||
Gem::ScriptEvents.Editor
|
||||
Gem::ExpressionEvaluation
|
||||
Gem::Gestures
|
||||
Gem::CertificateManager
|
||||
Gem::DebugDraw.Editor
|
||||
Gem::SceneProcessing.Editor
|
||||
Gem::GraphCanvas.Editor
|
||||
Gem::InAppPurchases
|
||||
Gem::AutomatedTesting
|
||||
Gem::EditorPythonBindings.Editor
|
||||
Gem::PythonAssetBuilder.Editor
|
||||
Gem::Metastream
|
||||
Gem::AudioSystem.Editor
|
||||
Gem::Camera.Editor
|
||||
Gem::EMotionFX.Editor
|
||||
Gem::PhysX.Editor
|
||||
Gem::CameraFramework
|
||||
Gem::StartingPointMovement
|
||||
Gem::StartingPointCamera
|
||||
Gem::ScriptCanvas.Editor
|
||||
Gem::ScriptEvents.Editor
|
||||
Gem::ImGui.Editor
|
||||
Gem::LyShineExamples
|
||||
Gem::StartingPointInput.Editor
|
||||
Gem::ScriptCanvasPhysics
|
||||
Gem::ScriptCanvasTesting.Editor
|
||||
Gem::PhysXDebug.Editor
|
||||
Gem::WhiteBox.Editor
|
||||
Gem::FastNoise.Editor
|
||||
Gem::SurfaceData.Editor
|
||||
Gem::GradientSignal.Editor
|
||||
Gem::Vegetation.Editor
|
||||
Gem::GraphModel.Editor
|
||||
Gem::LandscapeCanvas.Editor
|
||||
Gem::EMotionFX.Editor
|
||||
Gem::ImGui.Editor
|
||||
Gem::Atom_RHI.Private
|
||||
Gem::Atom_Feature_Common.Editor
|
||||
Gem::Atom_AtomBridge.Editor
|
||||
Gem::NvCloth.Editor
|
||||
Gem::Blast.Editor
|
||||
)
|
||||
+63
-69
@@ -25,34 +25,13 @@ include(cmake/LySet.cmake)
|
||||
include(cmake/Version.cmake)
|
||||
include(cmake/OutputDirectory.cmake)
|
||||
|
||||
# Set the engine_path and engine_json
|
||||
set(o3de_engine_path ${CMAKE_CURRENT_LIST_DIR})
|
||||
set(o3de_engine_json ${o3de_engine_path}/engine.json)
|
||||
|
||||
if(NOT PROJECT_NAME)
|
||||
project(O3DE
|
||||
LANGUAGES C CXX
|
||||
VERSION ${LY_VERSION_STRING}
|
||||
)
|
||||
|
||||
# o3de manifest
|
||||
include(cmake/o3de_manifest.cmake)
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Resolve this engines name and restricted path
|
||||
################################################################################
|
||||
o3de_engine_name(${o3de_engine_json} o3de_engine_name)
|
||||
o3de_restricted_path(${o3de_engine_json} o3de_engine_restricted_path)
|
||||
message(STATUS "O3DE Engine Name: ${o3de_engine_name}")
|
||||
message(STATUS "O3DE Engine Path: ${o3de_engine_path}")
|
||||
if(o3de_engine_restricted_path)
|
||||
message(STATUS "O3DE Engine Restricted Path: ${o3de_engine_restricted_path}")
|
||||
endif()
|
||||
|
||||
# add the engines cmake folder to the CMAKE_MODULE_PATH
|
||||
list(APPEND CMAKE_MODULE_PATH "${o3de_engine_path}/cmake")
|
||||
|
||||
################################################################################
|
||||
# Initialize
|
||||
################################################################################
|
||||
@@ -60,6 +39,7 @@ include(cmake/GeneralSettings.cmake)
|
||||
include(cmake/FileUtil.cmake)
|
||||
include(cmake/PAL.cmake)
|
||||
include(cmake/PALTools.cmake)
|
||||
include(cmake/RuntimeDependencies.cmake)
|
||||
include(cmake/Install.cmake)
|
||||
include(cmake/Configurations.cmake) # Requires to be after PAL so we get platform variable definitions
|
||||
include(cmake/Dependencies.cmake)
|
||||
@@ -67,92 +47,106 @@ include(cmake/Deployment.cmake)
|
||||
include(cmake/3rdParty.cmake)
|
||||
include(cmake/LYPython.cmake)
|
||||
include(cmake/LYWrappers.cmake)
|
||||
include(cmake/Gems.cmake)
|
||||
include(cmake/UnitTest.cmake)
|
||||
include(cmake/LYTestWrappers.cmake)
|
||||
include(cmake/Monolithic.cmake)
|
||||
include(cmake/SettingsRegistry.cmake)
|
||||
include(cmake/TestImpactFramework/LYTestImpactFramework.cmake)
|
||||
include(cmake/CMakeFiles.cmake)
|
||||
include(cmake/O3DEJson.cmake)
|
||||
|
||||
################################################################################
|
||||
# Subdirectory processing
|
||||
################################################################################
|
||||
|
||||
function(add_engine_json_external_subdirectories)
|
||||
read_json_external_subdirs(external_subdis ${LY_ROOT_FOLDER}/engine.json)
|
||||
foreach(external_subdir ${external_subdis})
|
||||
file(REAL_PATH ${external_subdir} real_external_subdir BASE_DIRECTORY ${LY_ROOT_FOLDER})
|
||||
list(APPEND engine_external_subdirs ${real_external_subdir})
|
||||
endforeach()
|
||||
|
||||
set_property(GLOBAL APPEND PROPERTY LY_EXTERNAL_SUBDIRS ${engine_external_subdirs})
|
||||
endfunction()
|
||||
|
||||
# Add the projects first so the Launcher can find them
|
||||
include(cmake/Projects.cmake)
|
||||
|
||||
if(NOT INSTALLED_ENGINE)
|
||||
|
||||
# Add the rest of the targets
|
||||
add_subdirectory(Code)
|
||||
add_subdirectory(scripts)
|
||||
|
||||
# SPEC-1417 will investigate and fix this
|
||||
if(NOT PAL_PLATFORM_NAME STREQUAL "Mac")
|
||||
add_subdirectory(Tools/LyTestTools/tests/)
|
||||
add_subdirectory(Tools/RemoteConsole/ly_remote_console/tests/)
|
||||
endif()
|
||||
|
||||
# Add external subdirectories listed in the engine.json. LY_EXTERNAL_SUBDIRS is a cache variable so the user can add extra
|
||||
# external subdirectories
|
||||
add_engine_json_external_subdirectories()
|
||||
get_property(external_subdirs GLOBAL PROPERTY LY_EXTERNAL_SUBDIRS)
|
||||
list(APPEND LY_EXTERNAL_SUBDIRS ${external_subdirs})
|
||||
|
||||
# Loop over the additional external subdirectories and invoke add_subdirectory on them
|
||||
foreach(external_directory ${LY_EXTERNAL_SUBDIRS})
|
||||
# Hash the extenal_directory name and append it to the Binary Directory section of add_subdirectory
|
||||
# This is to deal with potential situations where multiple external directories has the same last directory name
|
||||
# For example if D:/Company1/RayTracingGem and F:/Company2/Path/RayTracingGem were both added as a subdirectory
|
||||
file(REAL_PATH ${external_directory} full_directory_path)
|
||||
string(SHA256 full_directory_hash ${full_directory_path})
|
||||
# Truncate the full_directory_hash down to 8 characters to avoid hitting the Windows 260 character path limit
|
||||
# when the external subdirectory contains relative paths of significant length
|
||||
string(SUBSTRING ${full_directory_hash} 0 8 full_directory_hash)
|
||||
# Use the last directory as the suffix path to use for the Binary Directory
|
||||
get_filename_component(directory_name ${external_directory} NAME)
|
||||
add_subdirectory(${external_directory} ${CMAKE_BINARY_DIR}/External/${directory_name}-${full_directory_hash})
|
||||
endforeach()
|
||||
|
||||
else()
|
||||
ly_find_o3de_packages()
|
||||
endif()
|
||||
|
||||
# Add external subdirectories listed in the manifest
|
||||
list(APPEND LY_EXTERNAL_SUBDIRS ${o3de_engine_external_subdirectories})
|
||||
|
||||
set(enabled_platforms
|
||||
${PAL_PLATFORM_NAME}
|
||||
${LY_PAL_TOOLS_ENABLED})
|
||||
|
||||
# Add any engine restricted platforms as external subdirs
|
||||
o3de_add_engine_restricted_platform_external_subdirs()
|
||||
|
||||
if(NOT INSTALLED_ENGINE)
|
||||
add_subdirectory(scripts)
|
||||
endif()
|
||||
|
||||
# SPEC-1417 will investigate and fix this
|
||||
if(NOT PAL_PLATFORM_NAME STREQUAL "Mac")
|
||||
add_subdirectory(Tools/LyTestTools/tests/)
|
||||
add_subdirectory(Tools/RemoteConsole/ly_remote_console/tests/)
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# Post-processing
|
||||
################################################################################
|
||||
|
||||
# Loop over the additional external subdirectories and invoke add_subdirectory on them
|
||||
foreach(external_directory ${LY_EXTERNAL_SUBDIRS})
|
||||
# Hash the extenal_directory name and append it to the Binary Directory section of add_subdirectory
|
||||
# This is to deal with potential situations where multiple external directories has the same last directory name
|
||||
# For example if D:/Company1/RayTracingGem and F:/Company2/Path/RayTracingGem were both added as a subdirectory
|
||||
file(REAL_PATH ${external_directory} full_directory_path)
|
||||
string(SHA256 full_directory_hash ${full_directory_path})
|
||||
# Truncate the full_directory_hash down to 8 characters to avoid hitting the Windows 260 character path limit
|
||||
# when the external subdirectory contains relative paths of significant length
|
||||
string(SUBSTRING ${full_directory_hash} 0 8 full_directory_hash)
|
||||
# Use the last directory as the suffix path to use for the Binary Directory
|
||||
get_filename_component(directory_name ${external_directory} NAME)
|
||||
add_subdirectory(${external_directory} ${CMAKE_BINARY_DIR}/External/${directory_name}-${full_directory_hash})
|
||||
endforeach()
|
||||
|
||||
# The following steps have to be done after all targets are registered:
|
||||
# Defer generation of the StaticModules.inl file which is needed to create the AZ::Module derived class in monolithic
|
||||
# builds until after all the targets are known
|
||||
ly_delayed_generate_static_modules_inl()
|
||||
|
||||
# 1. generate a settings registry .setreg file for all ly_add_project_dependencies() and ly_add_target_dependencies() calls
|
||||
# 1. Add any dependencies registered via ly_enable_gems
|
||||
ly_enable_gems_delayed()
|
||||
|
||||
# 2. generate a settings registry .setreg file for all ly_add_project_dependencies() and ly_add_target_dependencies() calls
|
||||
# to provide applications with the filenames of gem modules to load
|
||||
# This must be done before ly_delayed_target_link_libraries() as that inserts BUILD_DEPENDENCIES as MANUALLY_ADDED_DEPENDENCIES
|
||||
# if the build dependency is a MODULE_LIBRARY. That would cause a false load dependency to be generated
|
||||
ly_delayed_generate_settings_registry()
|
||||
# 2. link targets where the dependency was yet not declared, we need to have the declaration so we do different
|
||||
|
||||
# 3. link targets where the dependency was yet not declared, we need to have the declaration so we do different
|
||||
# linking logic depending on the type of target
|
||||
ly_delayed_target_link_libraries()
|
||||
# 3. generate a registry file for unit testing for platforms that support unit testing
|
||||
|
||||
# 4. generate a registry file for unit testing for platforms that support unit testing
|
||||
if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
ly_delayed_generate_unit_test_module_registry()
|
||||
endif()
|
||||
# 4. inject runtime dependencies to the targets. We need to do this after (1) since we are going to walk through
|
||||
# the dependencies
|
||||
include(cmake/RuntimeDependencies.cmake)
|
||||
# 5. Perform test impact framework post steps once all of the targets have been enumerated
|
||||
ly_test_impact_post_step()
|
||||
# 6. Generate the O3DE find file and setup install locations for scripts, tools, assets etc., required by the engine
|
||||
if(NOT INSTALLED_ENGINE)
|
||||
ly_setup_o3de_install()
|
||||
|
||||
# IMPORTANT: must be included last
|
||||
# 5. inject runtime dependencies to the targets. We need to do this after (1) since we are going to walk through
|
||||
# the dependencies
|
||||
ly_delayed_generate_runtime_dependencies()
|
||||
|
||||
# 6. Perform test impact framework post steps once all of the targets have been enumerated
|
||||
ly_test_impact_post_step()
|
||||
|
||||
# 7. Generate the O3DE find file and setup install locations for scripts, tools, assets etc., required by the engine
|
||||
if(NOT INSTALLED_ENGINE)
|
||||
# 8. Generate the O3DE find file and setup install locations for scripts, tools, assets etc., required by the engine
|
||||
ly_setup_o3de_install()
|
||||
# 9. CPack information (to be included after install)
|
||||
include(cmake/Packaging.cmake)
|
||||
endif()
|
||||
|
||||
@@ -36,8 +36,8 @@ namespace LegacyLevelSystem
|
||||
//------------------------------------------------------------------------
|
||||
static void LoadLevel(const AZ::ConsoleCommandContainer& arguments)
|
||||
{
|
||||
AZ_Error("SpawnableLevelSystem", arguments.empty(), "LoadLevel requires a level file name to be provided.");
|
||||
AZ_Error("SpawnableLevelSystem", arguments.size() > 1, "LoadLevel requires a single level file name to be provided.");
|
||||
AZ_Error("SpawnableLevelSystem", !arguments.empty(), "LoadLevel requires a level file name to be provided.");
|
||||
AZ_Error("SpawnableLevelSystem", arguments.size() == 1, "LoadLevel requires a single level file name to be provided.");
|
||||
|
||||
if (!arguments.empty() && gEnv->pSystem && gEnv->pSystem->GetILevelSystem() && !gEnv->IsEditor())
|
||||
{
|
||||
|
||||
@@ -864,11 +864,6 @@ bool CSystem::InitShine([[maybe_unused]] const SSystemInitParams& initParams)
|
||||
|
||||
EBUS_EVENT(UiSystemBus, InitializeSystem);
|
||||
|
||||
if (!m_env.pLyShine)
|
||||
{
|
||||
AZ_Error(AZ_TRACE_SYSTEM_WINDOW, false, "LYShine System did not initialize correctly. Please check that the LyShine gem is enabled for this project in *_dependencies.cmake.");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1260,7 +1260,7 @@ namespace AZ
|
||||
// So auto load is turned off if option "AutoLoad" key is bool that is false
|
||||
if (valueName == "AutoLoad" && !value)
|
||||
{
|
||||
// Strip off the AutoLoead entry from the path
|
||||
// Strip off the AutoLoad entry from the path
|
||||
auto autoLoadKey = AZ::StringFunc::TokenizeLast(path, "/");
|
||||
if (!autoLoadKey)
|
||||
{
|
||||
@@ -1330,7 +1330,7 @@ namespace AZ
|
||||
{
|
||||
auto CompareDynamicModuleDescriptor = [&dynamicLibraryPath](const DynamicModuleDescriptor& entry)
|
||||
{
|
||||
return entry.m_dynamicLibraryPath.contains(dynamicLibraryPath);
|
||||
return AZ::IO::PathView(entry.m_dynamicLibraryPath).Stem() == AZ::IO::PathView(dynamicLibraryPath).Stem();
|
||||
};
|
||||
if (auto moduleIter = AZStd::find_if(gemModules.begin(), gemModules.end(), CompareDynamicModuleDescriptor);
|
||||
moduleIter == gemModules.end())
|
||||
|
||||
@@ -95,6 +95,12 @@ namespace AZ::IO
|
||||
constexpr int Compare(AZStd::string_view pathString) const noexcept;
|
||||
constexpr int Compare(const value_type* pathString) const noexcept;
|
||||
|
||||
// Extension for fixed strings
|
||||
//! extension: fixed string types with MaxPathLength capacity
|
||||
//! Returns a new instance of an AZStd::fixed_string with capacity of MaxPathLength
|
||||
//! made from the internal string
|
||||
constexpr AZStd::fixed_string<MaxPathLength> FixedMaxPathString() const noexcept;
|
||||
|
||||
// decomposition
|
||||
//! Given a windows path of "C:\O3DE\foo\bar\name.txt" and a posix path of
|
||||
//! "/O3DE/foo/bar/name.txt"
|
||||
|
||||
@@ -915,6 +915,11 @@ namespace AZ::IO
|
||||
return compare_string_view(path);
|
||||
}
|
||||
|
||||
constexpr AZStd::fixed_string<MaxPathLength> PathView::FixedMaxPathString() const noexcept
|
||||
{
|
||||
return AZStd::fixed_string<MaxPathLength>(m_path.begin(), m_path.end());
|
||||
}
|
||||
|
||||
// decomposition
|
||||
constexpr auto PathView::RootName() const -> PathView
|
||||
{
|
||||
|
||||
@@ -512,7 +512,7 @@ namespace AZ
|
||||
// Load DLLs specified in the application descriptor
|
||||
for (const auto& moduleDescriptor : modules)
|
||||
{
|
||||
// For each module that is loaded, attempt to set the module's folder as a path for dependent module resolution
|
||||
// For each module that is loaded, attempt to set the module's folder as a path for dependent module resolution
|
||||
moduleSearchPathHelper.SetModuleSearchPath(moduleDescriptor);
|
||||
|
||||
LoadModuleOutcome result = LoadDynamicModule(moduleDescriptor.m_dynamicLibraryPath.c_str(), lastStepToPerform, maintainReferences);
|
||||
|
||||
@@ -88,6 +88,35 @@ namespace AZ::Internal
|
||||
m_enginePaths.emplace_back(EngineInfo{AZ::IO::FixedMaxPath{value}.LexicallyNormal(), {}});
|
||||
}
|
||||
|
||||
AZ::SettingsRegistryInterface::VisitResponse Traverse(
|
||||
[[maybe_unused]] AZStd::string_view path, AZStd::string_view valueName,
|
||||
AZ::SettingsRegistryInterface::VisitAction action, AZ::SettingsRegistryInterface::Type type) override
|
||||
{
|
||||
auto response = AZ::SettingsRegistryInterface::VisitResponse::Continue;
|
||||
if (action == AZ::SettingsRegistryInterface::VisitAction::Begin)
|
||||
{
|
||||
if (type == AZ::SettingsRegistryInterface::Type::Array)
|
||||
{
|
||||
if (valueName.compare("engines") != 0)
|
||||
{
|
||||
response = AZ::SettingsRegistryInterface::VisitResponse::Skip;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (action == AZ::SettingsRegistryInterface::VisitAction::Value)
|
||||
{
|
||||
if (type == AZ::SettingsRegistryInterface::Type::String)
|
||||
{
|
||||
if (valueName.compare("path") != 0)
|
||||
{
|
||||
response = AZ::SettingsRegistryInterface::VisitResponse::Skip;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
AZStd::vector<EngineInfo> m_enginePaths{};
|
||||
};
|
||||
|
||||
|
||||
+2
-1
@@ -35,7 +35,8 @@ namespace AzFramework::AssetSystem::Platform
|
||||
if (!AZ::IO::SystemFile::Exists(assetProcessorPath.c_str()))
|
||||
{
|
||||
// Check for existence of one under a "bin" directory, i.e. engineRoot is an SDK structure.
|
||||
assetProcessorPath = AZ::IO::FixedMaxPath{engineRoot} / "bin" / AZ_BUILD_CONFIGURATION_TYPE / "AssetProcessor";
|
||||
assetProcessorPath =
|
||||
AZ::IO::FixedMaxPath{engineRoot} / "bin" / AZ_TRAIT_OS_PLATFORM_NAME / AZ_BUILD_CONFIGURATION_TYPE / "AssetProcessor";
|
||||
|
||||
if (!AZ::IO::SystemFile::Exists(assetProcessorPath.c_str()))
|
||||
{
|
||||
|
||||
+2
-1
@@ -34,7 +34,8 @@ namespace AzFramework::AssetSystem::Platform
|
||||
if (!AZ::IO::SystemFile::Exists(assetProcessorPath.c_str()))
|
||||
{
|
||||
// Check for existence of one under a "bin" directory, i.e. engineRoot is an SDK structure.
|
||||
assetProcessorPath = AZ::IO::FixedMaxPath{engineRoot} / "bin" / AZ_BUILD_CONFIGURATION_TYPE / "AssetProcessor.app";
|
||||
assetProcessorPath =
|
||||
AZ::IO::FixedMaxPath{engineRoot} / "bin" / AZ_TRAIT_OS_PLATFORM_NAME / AZ_BUILD_CONFIGURATION_TYPE / "AssetProcessor.app";
|
||||
|
||||
if (!AZ::IO::SystemFile::Exists(assetProcessorPath.c_str()))
|
||||
{
|
||||
|
||||
+2
-1
@@ -71,7 +71,8 @@ namespace AzFramework::AssetSystem::Platform
|
||||
if (!AZ::IO::SystemFile::Exists(assetProcessorPath.c_str()))
|
||||
{
|
||||
// Check for existence of one under a "bin" directory, i.e. engineRoot is an SDK structure.
|
||||
assetProcessorPath = AZ::IO::FixedMaxPath{engineRoot} / "bin" / AZ_BUILD_CONFIGURATION_TYPE / "AssetProcessor.exe";
|
||||
assetProcessorPath =
|
||||
AZ::IO::FixedMaxPath{engineRoot} / "bin" / AZ_TRAIT_OS_PLATFORM_NAME / AZ_BUILD_CONFIGURATION_TYPE / "AssetProcessor.exe";
|
||||
|
||||
if (!AZ::IO::SystemFile::Exists(assetProcessorPath.c_str()))
|
||||
{
|
||||
|
||||
@@ -488,8 +488,8 @@ namespace O3DELauncher
|
||||
const AZStd::string_view buildTargetName = GetBuildTargetName();
|
||||
AZ::SettingsRegistryMergeUtils::MergeSettingsToRegistry_AddBuildSystemTargetSpecialization(*settingsRegistry, buildTargetName);
|
||||
|
||||
AZ_TracePrintf("Launcher", R"(Running project "%.*s.)" "\n"
|
||||
R"(The project name value has been successfully set in the Settings Registry at key "%s/project_name)"
|
||||
AZ_TracePrintf("Launcher", R"(Running project "%.*s")" "\n"
|
||||
R"(The project name has been successfully set in the Settings Registry at key "%s/project_name")"
|
||||
R"( for Launcher target "%.*s")" "\n",
|
||||
aznumeric_cast<int>(launcherProjectName.size()), launcherProjectName.data(),
|
||||
AZ::SettingsRegistryMergeUtils::ProjectSettingsRootKey,
|
||||
@@ -643,7 +643,8 @@ namespace O3DELauncher
|
||||
if (gEnv && gEnv->pConsole)
|
||||
{
|
||||
// Execute autoexec.cfg to load the initial level
|
||||
AZ::Interface<AZ::IConsole>::Get()->ExecuteConfigFile("autoexec.cfg");
|
||||
auto autoExecFile = AZ::IO::FixedMaxPath{pathToAssets} / "autoexec.cfg";
|
||||
AZ::Interface<AZ::IConsole>::Get()->ExecuteConfigFile(autoExecFile.Native());
|
||||
|
||||
// Find out if console command file was passed
|
||||
// via --console-command-file=%filename% and execute it
|
||||
|
||||
@@ -10,6 +10,11 @@
|
||||
#
|
||||
|
||||
set(ICON_FILE ${project_real_path}/Gem/Resources/GameSDK.ico)
|
||||
if(NOT EXISTS ${ICON_FILE})
|
||||
# Try another project-relative path
|
||||
set(ICON_FILE ${project_real_path}/Resources/GameSDK.ico)
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS ${ICON_FILE})
|
||||
# Try the common LauncherUnified icon instead
|
||||
set(ICON_FILE Resources/GameSDK.ico)
|
||||
|
||||
@@ -129,6 +129,8 @@ ly_add_target(
|
||||
3rdParty::AWSNativeSDK::Core
|
||||
3rdParty::Qt::Network
|
||||
Legacy::EditorCore
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::AtomViewportDisplayInfo
|
||||
)
|
||||
ly_add_source_properties(
|
||||
SOURCES CryEdit.cpp
|
||||
@@ -244,7 +246,8 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
Legacy::CryCommon
|
||||
AZ::AzToolsFramework
|
||||
Legacy::EditorLib
|
||||
Gem::LmbrCentral
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
ly_add_googletest(
|
||||
NAME Legacy::EditorLib.Tests
|
||||
|
||||
@@ -1259,9 +1259,6 @@ CBaseObject* CRenderViewport::GetCameraObject() const
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CRenderViewport::OnEditorNotifyEvent(EEditorNotifyEvent event)
|
||||
{
|
||||
static ICVar* outputToHMD = gEnv->pConsole->GetCVar("output_to_hmd");
|
||||
AZ_Assert(outputToHMD, "cvar output_to_hmd is undeclared");
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case eNotify_OnBeginGameMode:
|
||||
@@ -1282,7 +1279,6 @@ void CRenderViewport::OnEditorNotifyEvent(EEditorNotifyEvent event)
|
||||
|
||||
if (deviceInfo)
|
||||
{
|
||||
outputToHMD->Set(1);
|
||||
m_previousContext = SetCurrentContext(deviceInfo->renderWidth, deviceInfo->renderHeight);
|
||||
if (m_renderer->GetIStereoRenderer())
|
||||
{
|
||||
@@ -1313,10 +1309,6 @@ void CRenderViewport::OnEditorNotifyEvent(EEditorNotifyEvent event)
|
||||
// failed to set the context back when done, or set it back to the wrong one.
|
||||
CryWarning(VALIDATOR_MODULE_3DENGINE, VALIDATOR_WARNING, "RenderViewport render context was not correctly restored by someone else.");
|
||||
}
|
||||
if (gSettings.bEnableGameModeVR)
|
||||
{
|
||||
outputToHMD->Set(0);
|
||||
}
|
||||
RestorePreviousContext(m_previousContext);
|
||||
m_bInRotateMode = false;
|
||||
m_bInMoveMode = false;
|
||||
|
||||
@@ -35,10 +35,12 @@ ly_add_target(
|
||||
AZ::AzToolsFramework
|
||||
Legacy::CryCommon
|
||||
Legacy::EditorLib
|
||||
Gem::LmbrCentral
|
||||
AZ::AtomCore
|
||||
Gem::Atom_RPI.Public
|
||||
Gem::AtomToolsFramework.Static
|
||||
Gem::LmbrCentral.Editor
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral.Editor
|
||||
)
|
||||
|
||||
ly_add_dependencies(Editor ComponentEntityEditorPlugin)
|
||||
@@ -68,7 +70,9 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
AZ::AzToolsFrameworkTestCommon
|
||||
Legacy::CryCommon
|
||||
Legacy::EditorLib
|
||||
Gem::LmbrCentral
|
||||
Gem::LmbrCentral.Editor
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral.Editor
|
||||
)
|
||||
ly_add_googletest(
|
||||
NAME Legacy::ComponentEntityEditorPlugin.Tests
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "ProductAssetTreeItemData.h"
|
||||
|
||||
#include <AzCore/Component/TickBus.h>
|
||||
#include <AzCore/IO/Path/Path.h>
|
||||
#include <AzFramework/StringFunc/StringFunc.h>
|
||||
|
||||
namespace AssetProcessor
|
||||
@@ -159,31 +160,33 @@ namespace AssetProcessor
|
||||
return;
|
||||
}
|
||||
|
||||
AZ::IO::Path productNamePath(product.m_productName, AZ::IO::PosixPathSeparator);
|
||||
|
||||
AZStd::vector<AZStd::string> tokens;
|
||||
AzFramework::StringFunc::Tokenize(product.m_productName.c_str(), tokens, AZ_CORRECT_DATABASE_SEPARATOR, false, true);
|
||||
|
||||
if (tokens.empty())
|
||||
if (productNamePath.empty())
|
||||
{
|
||||
AZ_Warning("AssetProcessor", false, "Product id %d has an invalid name: %s", product.m_productID, product.m_productName.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
AssetTreeItem* parentItem = m_root.get();
|
||||
AZStd::string fullFolderName;
|
||||
for (int i = 0; i < tokens.size() - 1; ++i)
|
||||
AZ::IO::Path currentFullFolderPath;
|
||||
const AZ::IO::PathView filename = productNamePath.Filename();
|
||||
const AZ::IO::PathView fullPathWithoutFilename = productNamePath.RemoveFilename();
|
||||
AZStd::fixed_string<AZ::IO::MaxPathLength> currentPath;
|
||||
for (auto pathIt = fullPathWithoutFilename.begin(); pathIt != fullPathWithoutFilename.end(); ++pathIt)
|
||||
{
|
||||
AzFramework::StringFunc::AssetDatabasePath::Join(fullFolderName.c_str(), tokens[i].c_str(), fullFolderName);
|
||||
AssetTreeItem* nextParent = parentItem->GetChildFolder(tokens[i].c_str());
|
||||
currentPath = pathIt->FixedMaxPathString();
|
||||
currentFullFolderPath /= currentPath;
|
||||
AssetTreeItem* nextParent = parentItem->GetChildFolder(currentPath.c_str());
|
||||
if (!nextParent)
|
||||
{
|
||||
if (!modelIsResetting)
|
||||
{
|
||||
QModelIndex parentIndex = parentItem == m_root.get() ? QModelIndex() : createIndex(parentItem->GetRow(), 0, parentItem);
|
||||
QModelIndex parentIndex = createIndex(parentItem->GetRow(), 0, parentItem);
|
||||
beginInsertRows(parentIndex, parentItem->getChildCount(), parentItem->getChildCount());
|
||||
}
|
||||
nextParent = parentItem->CreateChild(ProductAssetTreeItemData::MakeShared(nullptr, fullFolderName, tokens[i].c_str(), true, AZ::Uuid::CreateNull()));
|
||||
m_productToTreeItem[fullFolderName] = nextParent;
|
||||
nextParent = parentItem->CreateChild(ProductAssetTreeItemData::MakeShared(nullptr, currentFullFolderPath.Native(), currentPath.c_str(), true, AZ::Uuid::CreateNull()));
|
||||
m_productToTreeItem[currentFullFolderPath.Native()] = nextParent;
|
||||
// m_productIdToTreeItem is not used for folders, folders don't have product IDs.
|
||||
|
||||
if (!modelIsResetting)
|
||||
@@ -205,12 +208,12 @@ namespace AssetProcessor
|
||||
|
||||
if (!modelIsResetting)
|
||||
{
|
||||
QModelIndex parentIndex = parentItem == m_root.get() ? QModelIndex() : createIndex(parentItem->GetRow(), 0, parentItem);
|
||||
QModelIndex parentIndex = createIndex(parentItem->GetRow(), 0, parentItem);
|
||||
beginInsertRows(parentIndex, parentItem->getChildCount(), parentItem->getChildCount());
|
||||
}
|
||||
|
||||
AZStd::shared_ptr<ProductAssetTreeItemData> productItemData =
|
||||
ProductAssetTreeItemData::MakeShared(&product, product.m_productName, tokens[tokens.size() - 1].c_str(), false, sourceId);
|
||||
ProductAssetTreeItemData::MakeShared(&product, product.m_productName, AZStd::fixed_string<AZ::IO::MaxPathLength>(filename.Native()).c_str(), false, sourceId);
|
||||
m_productToTreeItem[product.m_productName] =
|
||||
parentItem->CreateChild(productItemData);
|
||||
m_productIdToTreeItem[product.m_productID] = m_productToTreeItem[product.m_productName];
|
||||
|
||||
@@ -63,8 +63,7 @@ namespace AssetProcessor
|
||||
}
|
||||
|
||||
|
||||
auto fullPath = AZ::IO::Path(scanFolder.m_scanFolder) / source.m_sourceName;
|
||||
|
||||
AZ::IO::Path fullPath = AZ::IO::Path(scanFolder.m_scanFolder, AZ::IO::PosixPathSeparator) / source.m_sourceName;
|
||||
|
||||
// It's common for Open 3D Engine game projects and scan folders to be in a subfolder
|
||||
// of the engine install. To improve readability of the source files, strip out
|
||||
@@ -78,34 +77,35 @@ namespace AssetProcessor
|
||||
AzFramework::StringFunc::Replace(fullPath.Native(), m_assetRoot.absolutePath().toUtf8(), "");
|
||||
}
|
||||
|
||||
|
||||
AZStd::vector<AZStd::string> tokens;
|
||||
AzFramework::StringFunc::Tokenize(fullPath.c_str(), tokens, AZ_CORRECT_DATABASE_SEPARATOR, false, true);
|
||||
|
||||
if (tokens.empty())
|
||||
if (fullPath.empty())
|
||||
{
|
||||
AZ_Warning("AssetProcessor", false, "Source id %s has an invalid name: %s",
|
||||
source.m_sourceGuid.ToString<AZStd::string>().c_str(), source.m_sourceName.c_str());
|
||||
AZ_Warning(
|
||||
"AssetProcessor", false, "Source id %s has an invalid name: %s", source.m_sourceGuid.ToString<AZStd::string>().c_str(),
|
||||
source.m_sourceName.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
QModelIndex newIndicesStart;
|
||||
|
||||
AssetTreeItem* parentItem = m_root.get();
|
||||
AZStd::string fullFolderName;
|
||||
for (int i = 0; i < tokens.size() - 1; ++i)
|
||||
AZ::IO::Path currentFullFolderPath;
|
||||
const AZ::IO::PathView filename = fullPath.Filename();
|
||||
const AZ::IO::PathView fullPathWithoutFilename = fullPath.RemoveFilename();
|
||||
AZStd::fixed_string<AZ::IO::MaxPathLength> currentPath;
|
||||
for (auto pathIt = fullPathWithoutFilename.begin(); pathIt != fullPathWithoutFilename.end(); ++pathIt)
|
||||
{
|
||||
AzFramework::StringFunc::AssetDatabasePath::Join(fullFolderName.c_str(), tokens[i].c_str(), fullFolderName);
|
||||
AssetTreeItem* nextParent = parentItem->GetChildFolder(tokens[i].c_str());
|
||||
currentPath = pathIt->FixedMaxPathString();
|
||||
currentFullFolderPath /= currentPath;
|
||||
AssetTreeItem* nextParent = parentItem->GetChildFolder(currentPath.c_str());
|
||||
if (!nextParent)
|
||||
{
|
||||
if (!modelIsResetting)
|
||||
{
|
||||
QModelIndex parentIndex = parentItem == m_root.get() ? QModelIndex() : createIndex(parentItem->GetRow(), 0, parentItem);
|
||||
QModelIndex parentIndex = createIndex(parentItem->GetRow(), 0, parentItem);
|
||||
beginInsertRows(parentIndex, parentItem->getChildCount(), parentItem->getChildCount());
|
||||
}
|
||||
nextParent = parentItem->CreateChild(SourceAssetTreeItemData::MakeShared(nullptr, nullptr, fullFolderName, tokens[i].c_str(), true));
|
||||
m_sourceToTreeItem[fullFolderName] = nextParent;
|
||||
nextParent = parentItem->CreateChild(SourceAssetTreeItemData::MakeShared(nullptr, nullptr, currentFullFolderPath.Native(), currentPath.c_str(), true));
|
||||
m_sourceToTreeItem[currentFullFolderPath.Native()] = nextParent;
|
||||
// Folders don't have source IDs, don't add to m_sourceIdToTreeItem
|
||||
if (!modelIsResetting)
|
||||
{
|
||||
@@ -117,12 +117,12 @@ namespace AssetProcessor
|
||||
|
||||
if (!modelIsResetting)
|
||||
{
|
||||
QModelIndex parentIndex = parentItem == m_root.get() ? QModelIndex() : createIndex(parentItem->GetRow(), 0, parentItem);
|
||||
QModelIndex parentIndex = createIndex(parentItem->GetRow(), 0, parentItem);
|
||||
beginInsertRows(parentIndex, parentItem->getChildCount(), parentItem->getChildCount());
|
||||
}
|
||||
|
||||
m_sourceToTreeItem[source.m_sourceName] =
|
||||
parentItem->CreateChild(SourceAssetTreeItemData::MakeShared(&source, &scanFolder, source.m_sourceName, tokens[tokens.size() - 1].c_str(), false));
|
||||
parentItem->CreateChild(SourceAssetTreeItemData::MakeShared(&source, &scanFolder, source.m_sourceName, AZStd::fixed_string<AZ::IO::MaxPathLength>(filename.Native()).c_str(), false));
|
||||
m_sourceIdToTreeItem[source.m_sourceID] = m_sourceToTreeItem[source.m_sourceName];
|
||||
if (!modelIsResetting)
|
||||
{
|
||||
|
||||
@@ -37,11 +37,8 @@ ly_add_target(
|
||||
PRIVATE
|
||||
PY_PACKAGE="${python_package_name}"
|
||||
INCLUDE_DIRECTORIES
|
||||
PUBLIC
|
||||
.
|
||||
PRIVATE
|
||||
Source
|
||||
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
3rdParty::Qt::Core
|
||||
|
||||
@@ -25,7 +25,7 @@ namespace O3DE::ProjectManager
|
||||
|
||||
bool GemInfo::IsValid() const
|
||||
{
|
||||
return !m_path.isEmpty() && !m_uuid.IsNull();
|
||||
return !m_name.isEmpty() && !m_path.isEmpty();
|
||||
}
|
||||
|
||||
QString GemInfo::GetPlatformString(Platform platform)
|
||||
|
||||
@@ -64,7 +64,6 @@ namespace O3DE::ProjectManager
|
||||
QString m_path;
|
||||
QString m_name = "Unknown Gem Name";
|
||||
QString m_displayName = "Unknown Gem Name";
|
||||
AZ::Uuid m_uuid;
|
||||
QString m_creator = "Unknown Creator";
|
||||
GemOrigin m_gemOrigin = Local;
|
||||
bool m_isAdded = false; //! Is the gem currently added and enabled in the project?
|
||||
|
||||
@@ -33,8 +33,6 @@ namespace O3DE::ProjectManager
|
||||
item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
||||
|
||||
item->setData(gemInfo.m_name, RoleName);
|
||||
const QString uuidString = gemInfo.m_uuid.ToString<AZStd::string>().c_str();
|
||||
item->setData(uuidString, RoleUuid);
|
||||
item->setData(gemInfo.m_creator, RoleCreator);
|
||||
item->setData(gemInfo.m_gemOrigin, RoleGemOrigin);
|
||||
item->setData(aznumeric_cast<int>(gemInfo.m_platforms), RolePlatforms);
|
||||
@@ -53,7 +51,7 @@ namespace O3DE::ProjectManager
|
||||
appendRow(item);
|
||||
|
||||
const QModelIndex modelIndex = index(rowCount()-1, 0);
|
||||
m_uuidToIndexMap[uuidString] = modelIndex;
|
||||
m_nameToIndexMap[gemInfo.m_name] = modelIndex;
|
||||
}
|
||||
|
||||
void GemModel::Clear()
|
||||
@@ -76,11 +74,6 @@ namespace O3DE::ProjectManager
|
||||
return static_cast<GemInfo::GemOrigin>(modelIndex.data(RoleGemOrigin).toInt());
|
||||
}
|
||||
|
||||
QString GemModel::GetUuidString(const QModelIndex& modelIndex)
|
||||
{
|
||||
return modelIndex.data(RoleUuid).toString();
|
||||
}
|
||||
|
||||
GemInfo::Platforms GemModel::GetPlatforms(const QModelIndex& modelIndex)
|
||||
{
|
||||
return static_cast<GemInfo::Platforms>(modelIndex.data(RolePlatforms).toInt());
|
||||
@@ -111,10 +104,10 @@ namespace O3DE::ProjectManager
|
||||
return modelIndex.data(RoleDocLink).toString();
|
||||
}
|
||||
|
||||
QModelIndex GemModel::FindIndexByUuidString(const QString& uuidString) const
|
||||
QModelIndex GemModel::FindIndexByNameString(const QString& nameString) const
|
||||
{
|
||||
const auto iterator = m_uuidToIndexMap.find(uuidString);
|
||||
if (iterator != m_uuidToIndexMap.end())
|
||||
const auto iterator = m_nameToIndexMap.find(nameString);
|
||||
if (iterator != m_nameToIndexMap.end())
|
||||
{
|
||||
return iterator.value();
|
||||
}
|
||||
@@ -122,11 +115,11 @@ namespace O3DE::ProjectManager
|
||||
return {};
|
||||
}
|
||||
|
||||
void GemModel::FindGemNamesByUuidStrings(QStringList& inOutGemNames)
|
||||
void GemModel::FindGemNamesByNameStrings(QStringList& inOutGemNames)
|
||||
{
|
||||
for (QString& dependingGemString : inOutGemNames)
|
||||
{
|
||||
QModelIndex modelIndex = FindIndexByUuidString(dependingGemString);
|
||||
QModelIndex modelIndex = FindIndexByNameString(dependingGemString);
|
||||
if (modelIndex.isValid())
|
||||
{
|
||||
dependingGemString = GetName(modelIndex);
|
||||
@@ -147,7 +140,7 @@ namespace O3DE::ProjectManager
|
||||
return {};
|
||||
}
|
||||
|
||||
FindGemNamesByUuidStrings(result);
|
||||
FindGemNamesByNameStrings(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -164,7 +157,7 @@ namespace O3DE::ProjectManager
|
||||
return {};
|
||||
}
|
||||
|
||||
FindGemNamesByUuidStrings(result);
|
||||
FindGemNamesByNameStrings(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,8 +33,8 @@ namespace O3DE::ProjectManager
|
||||
void AddGem(const GemInfo& gemInfo);
|
||||
void Clear();
|
||||
|
||||
QModelIndex FindIndexByUuidString(const QString& uuidString) const;
|
||||
void FindGemNamesByUuidStrings(QStringList& inOutGemNames);
|
||||
QModelIndex FindIndexByNameString(const QString& nameString) const;
|
||||
void FindGemNamesByNameStrings(QStringList& inOutGemNames);
|
||||
QStringList GetDependingGemUuids(const QModelIndex& modelIndex);
|
||||
QStringList GetDependingGemNames(const QModelIndex& modelIndex);
|
||||
QStringList GetConflictingGemUuids(const QModelIndex& modelIndex);
|
||||
@@ -43,7 +43,6 @@ namespace O3DE::ProjectManager
|
||||
static QString GetName(const QModelIndex& modelIndex);
|
||||
static QString GetCreator(const QModelIndex& modelIndex);
|
||||
static GemInfo::GemOrigin GetGemOrigin(const QModelIndex& modelIndex);
|
||||
static QString GetUuidString(const QModelIndex& modelIndex);
|
||||
static GemInfo::Platforms GetPlatforms(const QModelIndex& modelIndex);
|
||||
static GemInfo::Types GetTypes(const QModelIndex& modelIndex);
|
||||
static QString GetSummary(const QModelIndex& modelIndex);
|
||||
@@ -59,7 +58,6 @@ namespace O3DE::ProjectManager
|
||||
enum UserRole
|
||||
{
|
||||
RoleName = Qt::UserRole,
|
||||
RoleUuid,
|
||||
RoleCreator,
|
||||
RoleGemOrigin,
|
||||
RolePlatforms,
|
||||
@@ -76,7 +74,7 @@ namespace O3DE::ProjectManager
|
||||
RoleTypes
|
||||
};
|
||||
|
||||
QHash<QString, QModelIndex> m_uuidToIndexMap;
|
||||
QHash<QString, QModelIndex> m_nameToIndexMap;
|
||||
QItemSelectionModel* m_selectionModel = nullptr;
|
||||
};
|
||||
} // namespace O3DE::ProjectManager
|
||||
|
||||
@@ -220,7 +220,7 @@ namespace RedirectOutput
|
||||
}
|
||||
} // namespace RedirectOutput
|
||||
|
||||
namespace O3DE::ProjectManager
|
||||
namespace O3DE::ProjectManager
|
||||
{
|
||||
PythonBindings::PythonBindings(const AZ::IO::PathView& enginePath)
|
||||
: m_enginePath(enginePath)
|
||||
@@ -283,8 +283,11 @@ namespace O3DE::ProjectManager
|
||||
AZ_Warning("ProjectManagerWindow", result != -1, "Append to sys path failed");
|
||||
|
||||
// import required modules
|
||||
m_registration = pybind11::module::import("cmake.Tools.registration");
|
||||
m_engineTemplate = pybind11::module::import("cmake.Tools.engine_template");
|
||||
m_register = pybind11::module::import("o3de.register");
|
||||
m_manifest = pybind11::module::import("o3de.manifest");
|
||||
m_engineTemplate = pybind11::module::import("o3de.engine_template");
|
||||
m_enableGemProject = pybind11::module::import("o3de.enable_gem");
|
||||
m_disableGemProject = pybind11::module::import("o3de.disable_gem");
|
||||
|
||||
return result == 0 && !PyErr_Occurred();
|
||||
} catch ([[maybe_unused]] const std::exception& e)
|
||||
@@ -326,30 +329,30 @@ namespace O3DE::ProjectManager
|
||||
}
|
||||
}
|
||||
|
||||
AZ::Outcome<EngineInfo> PythonBindings::GetEngineInfo()
|
||||
AZ::Outcome<EngineInfo> PythonBindings::GetEngineInfo()
|
||||
{
|
||||
EngineInfo engineInfo;
|
||||
bool result = ExecuteWithLock([&] {
|
||||
pybind11::str enginePath = m_registration.attr("get_this_engine_path")();
|
||||
pybind11::str enginePath = m_manifest.attr("get_this_engine_path")();
|
||||
|
||||
auto o3deData = m_registration.attr("load_o3de_manifest")();
|
||||
auto o3deData = m_manifest.attr("load_o3de_manifest")();
|
||||
if (pybind11::isinstance<pybind11::dict>(o3deData))
|
||||
{
|
||||
engineInfo.m_path = Py_To_String(enginePath);
|
||||
engineInfo.m_defaultGemsFolder = Py_To_String(o3deData["default_gems_folder"]);
|
||||
engineInfo.m_defaultProjectsFolder = Py_To_String(o3deData["default_projects_folder"]);
|
||||
engineInfo.m_defaultRestrictedFolder = Py_To_String(o3deData["default_restricted_folder"]);
|
||||
engineInfo.m_defaultTemplatesFolder = Py_To_String(o3deData["default_templates_folder"]);
|
||||
engineInfo.m_thirdPartyPath = Py_To_String_Optional(o3deData,"third_party_path","");
|
||||
engineInfo.m_path = Py_To_String(enginePath);
|
||||
engineInfo.m_defaultGemsFolder = Py_To_String(o3deData["default_gems_folder"]);
|
||||
engineInfo.m_defaultProjectsFolder = Py_To_String(o3deData["default_projects_folder"]);
|
||||
engineInfo.m_defaultRestrictedFolder = Py_To_String(o3deData["default_restricted_folder"]);
|
||||
engineInfo.m_defaultTemplatesFolder = Py_To_String(o3deData["default_templates_folder"]);
|
||||
engineInfo.m_thirdPartyPath = Py_To_String_Optional(o3deData,"third_party_path","");
|
||||
}
|
||||
|
||||
auto engineData = m_registration.attr("get_engine_data")(pybind11::none(), enginePath);
|
||||
auto engineData = m_manifest.attr("get_engine_json_data")(pybind11::none(), enginePath);
|
||||
if (pybind11::isinstance<pybind11::dict>(engineData))
|
||||
{
|
||||
try
|
||||
{
|
||||
engineInfo.m_version = Py_To_String_Optional(engineData,"O3DEVersion","0.0.0.0");
|
||||
engineInfo.m_name = Py_To_String_Optional(engineData,"engine_name","O3DE");
|
||||
engineInfo.m_version = Py_To_String_Optional(engineData,"O3DEVersion","0.0.0.0");
|
||||
engineInfo.m_name = Py_To_String_Optional(engineData,"engine_name","O3DE");
|
||||
}
|
||||
catch ([[maybe_unused]] const std::exception& e)
|
||||
{
|
||||
@@ -364,13 +367,13 @@ namespace O3DE::ProjectManager
|
||||
}
|
||||
else
|
||||
{
|
||||
return AZ::Success(AZStd::move(engineInfo));
|
||||
return AZ::Success(AZStd::move(engineInfo));
|
||||
}
|
||||
|
||||
return AZ::Failure();
|
||||
}
|
||||
|
||||
bool PythonBindings::SetEngineInfo(const EngineInfo& engineInfo)
|
||||
bool PythonBindings::SetEngineInfo(const EngineInfo& engineInfo)
|
||||
{
|
||||
bool result = ExecuteWithLock([&] {
|
||||
pybind11::str enginePath = engineInfo.m_path.toStdString();
|
||||
@@ -378,17 +381,18 @@ namespace O3DE::ProjectManager
|
||||
pybind11::str defaultGemsFolder = engineInfo.m_defaultGemsFolder.toStdString();
|
||||
pybind11::str defaultTemplatesFolder = engineInfo.m_defaultTemplatesFolder.toStdString();
|
||||
|
||||
auto registrationResult = m_registration.attr("register")(
|
||||
enginePath, // engine_path
|
||||
pybind11::none(), // project_path
|
||||
pybind11::none(), // gem_path
|
||||
pybind11::none(), // template_path
|
||||
pybind11::none(), // restricted_path
|
||||
pybind11::none(), // repo_uri
|
||||
pybind11::none(), // default_engines_folder
|
||||
auto registrationResult = m_register.attr("register")(
|
||||
enginePath, // engine_path
|
||||
pybind11::none(), // project_path
|
||||
pybind11::none(), // gem_path
|
||||
pybind11::none(), // external_subdir_path
|
||||
pybind11::none(), // template_path
|
||||
pybind11::none(), // restricted_path
|
||||
pybind11::none(), // repo_uri
|
||||
pybind11::none(), // default_engines_folder
|
||||
defaultProjectsFolder,
|
||||
defaultGemsFolder,
|
||||
defaultTemplatesFolder
|
||||
defaultGemsFolder,
|
||||
defaultTemplatesFolder
|
||||
);
|
||||
|
||||
if (registrationResult.cast<int>() != 0)
|
||||
@@ -396,13 +400,13 @@ namespace O3DE::ProjectManager
|
||||
result = false;
|
||||
}
|
||||
|
||||
auto manifest = m_registration.attr("load_o3de_manifest")();
|
||||
auto manifest = m_manifest.attr("load_o3de_manifest")();
|
||||
if (pybind11::isinstance<pybind11::dict>(manifest))
|
||||
{
|
||||
try
|
||||
{
|
||||
manifest["third_party_path"] = engineInfo.m_thirdPartyPath.toStdString();
|
||||
m_registration.attr("save_o3de_manifest")(manifest);
|
||||
m_manifest.attr("save_o3de_manifest")(manifest);
|
||||
}
|
||||
catch ([[maybe_unused]] const std::exception& e)
|
||||
{
|
||||
@@ -415,12 +419,12 @@ namespace O3DE::ProjectManager
|
||||
return result;
|
||||
}
|
||||
|
||||
AZ::Outcome<GemInfo> PythonBindings::GetGem(const QString& path)
|
||||
AZ::Outcome<GemInfo> PythonBindings::GetGem(const QString& path)
|
||||
{
|
||||
GemInfo gemInfo = GemInfoFromPath(pybind11::str(path.toStdString()));
|
||||
if (gemInfo.IsValid())
|
||||
{
|
||||
return AZ::Success(AZStd::move(gemInfo));
|
||||
return AZ::Success(AZStd::move(gemInfo));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -428,19 +432,19 @@ namespace O3DE::ProjectManager
|
||||
}
|
||||
}
|
||||
|
||||
AZ::Outcome<QVector<GemInfo>> PythonBindings::GetGems()
|
||||
AZ::Outcome<QVector<GemInfo>> PythonBindings::GetGems()
|
||||
{
|
||||
QVector<GemInfo> gems;
|
||||
|
||||
bool result = ExecuteWithLock([&] {
|
||||
// external gems
|
||||
for (auto path : m_registration.attr("get_gems")())
|
||||
// external gems
|
||||
for (auto path : m_manifest.attr("get_gems")())
|
||||
{
|
||||
gems.push_back(GemInfoFromPath(path));
|
||||
}
|
||||
|
||||
// gems from the engine
|
||||
for (auto path : m_registration.attr("get_engine_gems")())
|
||||
// gems from the engine
|
||||
for (auto path : m_manifest.attr("get_engine_gems")())
|
||||
{
|
||||
gems.push_back(GemInfoFromPath(path));
|
||||
}
|
||||
@@ -452,7 +456,7 @@ namespace O3DE::ProjectManager
|
||||
}
|
||||
else
|
||||
{
|
||||
return AZ::Success(AZStd::move(gems));
|
||||
return AZ::Success(AZStd::move(gems));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -463,7 +467,7 @@ namespace O3DE::ProjectManager
|
||||
[&]
|
||||
{
|
||||
pybind11::str projectPath = path.toStdString();
|
||||
auto pythonRegistrationResult = m_registration.attr("register")(pybind11::none(), projectPath);
|
||||
auto pythonRegistrationResult = m_register.attr("register")(pybind11::none(), projectPath);
|
||||
|
||||
// Returns an exit code so boolify it then invert result
|
||||
registrationResult = !pythonRegistrationResult.cast<bool>();
|
||||
@@ -479,19 +483,23 @@ namespace O3DE::ProjectManager
|
||||
[&]
|
||||
{
|
||||
pybind11::str projectPath = path.toStdString();
|
||||
auto pythonRegistrationResult = m_registration.attr("register")(
|
||||
auto pythonRegistrationResult = m_register.attr("register")(
|
||||
pybind11::none(), // engine_path
|
||||
projectPath, // project_path
|
||||
pybind11::none(), // gem_path
|
||||
pybind11::none(), // external_subdir_path
|
||||
pybind11::none(), // template_path
|
||||
pybind11::none(), // restricted_path
|
||||
pybind11::none(), // repo_uri
|
||||
pybind11::none(), // default_engines_folder
|
||||
pybind11::none(), // default_projects_folder
|
||||
pybind11::none(), // default_gems_folder
|
||||
pybind11::none(), // default_templates_folder
|
||||
pybind11::none(), // default_restricted_folder
|
||||
pybind11::none(), // default_restricted_folder
|
||||
true // remove
|
||||
pybind11::none(), // external_subdir_engine_path
|
||||
pybind11::none(), // external_subdir_project_path
|
||||
true, // remove
|
||||
false // force
|
||||
);
|
||||
|
||||
// Returns an exit code so boolify it then invert result
|
||||
@@ -501,7 +509,7 @@ namespace O3DE::ProjectManager
|
||||
return result && registrationResult;
|
||||
}
|
||||
|
||||
AZ::Outcome<ProjectInfo> PythonBindings::CreateProject(const QString& projectTemplatePath, const ProjectInfo& projectInfo)
|
||||
AZ::Outcome<ProjectInfo> PythonBindings::CreateProject(const QString& projectTemplatePath, const ProjectInfo& projectInfo)
|
||||
{
|
||||
ProjectInfo createdProjectInfo;
|
||||
bool result = ExecuteWithLock([&] {
|
||||
@@ -521,16 +529,16 @@ namespace O3DE::ProjectManager
|
||||
}
|
||||
else
|
||||
{
|
||||
return AZ::Success(AZStd::move(createdProjectInfo));
|
||||
return AZ::Success(AZStd::move(createdProjectInfo));
|
||||
}
|
||||
}
|
||||
|
||||
AZ::Outcome<ProjectInfo> PythonBindings::GetProject(const QString& path)
|
||||
AZ::Outcome<ProjectInfo> PythonBindings::GetProject(const QString& path)
|
||||
{
|
||||
ProjectInfo projectInfo = ProjectInfoFromPath(pybind11::str(path.toStdString()));
|
||||
if (projectInfo.IsValid())
|
||||
{
|
||||
return AZ::Success(AZStd::move(projectInfo));
|
||||
return AZ::Success(AZStd::move(projectInfo));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -541,30 +549,21 @@ namespace O3DE::ProjectManager
|
||||
GemInfo PythonBindings::GemInfoFromPath(pybind11::handle path)
|
||||
{
|
||||
GemInfo gemInfo;
|
||||
gemInfo.m_path = Py_To_String(path);
|
||||
gemInfo.m_path = Py_To_String(path);
|
||||
|
||||
auto data = m_registration.attr("get_gem_data")(pybind11::none(), path);
|
||||
auto data = m_manifest.attr("get_gem_json_data")(pybind11::none(), path);
|
||||
if (pybind11::isinstance<pybind11::dict>(data))
|
||||
{
|
||||
try
|
||||
{
|
||||
// required
|
||||
gemInfo.m_name = Py_To_String(data["Name"]);
|
||||
gemInfo.m_uuid = AZ::Uuid(Py_To_String(data["Uuid"]));
|
||||
gemInfo.m_name = Py_To_String(data["gem_name"]);
|
||||
|
||||
// optional
|
||||
gemInfo.m_displayName = Py_To_String_Optional(data, "DisplayName", gemInfo.m_name);
|
||||
gemInfo.m_summary = Py_To_String_Optional(data, "Summary", "");
|
||||
gemInfo.m_version = Py_To_String_Optional(data, "Version", "");
|
||||
gemInfo.m_displayName = Py_To_String_Optional(data, "DisplayName", gemInfo.m_name);
|
||||
gemInfo.m_summary = Py_To_String_Optional(data, "Summary", "");
|
||||
gemInfo.m_version = Py_To_String_Optional(data, "Version", "");
|
||||
|
||||
if (data.contains("Dependencies"))
|
||||
{
|
||||
for (auto dependency : data["Dependencies"])
|
||||
{
|
||||
const AZ::Uuid uuid = Py_To_String(dependency["Uuid"]);
|
||||
gemInfo.m_dependingGemUuids.push_back(uuid.ToString<AZStd::string>().c_str());
|
||||
}
|
||||
}
|
||||
if (data.contains("Tags"))
|
||||
{
|
||||
for (auto tag : data["Tags"])
|
||||
@@ -588,13 +587,13 @@ namespace O3DE::ProjectManager
|
||||
projectInfo.m_path = Py_To_String(path);
|
||||
projectInfo.m_isNew = false;
|
||||
|
||||
auto projectData = m_registration.attr("get_project_data")(pybind11::none(), path);
|
||||
auto projectData = m_manifest.attr("get_project_json_data")(pybind11::none(), path);
|
||||
if (pybind11::isinstance<pybind11::dict>(projectData))
|
||||
{
|
||||
try
|
||||
{
|
||||
projectInfo.m_projectName = Py_To_String(projectData["project_name"]);
|
||||
projectInfo.m_displayName = Py_To_String_Optional(projectData,"display_name", projectInfo.m_projectName);
|
||||
projectInfo.m_projectName = Py_To_String(projectData["project_name"]);
|
||||
projectInfo.m_displayName = Py_To_String_Optional(projectData,"display_name", projectInfo.m_projectName);
|
||||
}
|
||||
catch ([[maybe_unused]] const std::exception& e)
|
||||
{
|
||||
@@ -605,19 +604,19 @@ namespace O3DE::ProjectManager
|
||||
return projectInfo;
|
||||
}
|
||||
|
||||
AZ::Outcome<QVector<ProjectInfo>> PythonBindings::GetProjects()
|
||||
AZ::Outcome<QVector<ProjectInfo>> PythonBindings::GetProjects()
|
||||
{
|
||||
QVector<ProjectInfo> projects;
|
||||
|
||||
bool result = ExecuteWithLock([&] {
|
||||
// external projects
|
||||
for (auto path : m_registration.attr("get_projects")())
|
||||
// external projects
|
||||
for (auto path : m_manifest.attr("get_projects")())
|
||||
{
|
||||
projects.push_back(ProjectInfoFromPath(path));
|
||||
}
|
||||
|
||||
// projects from the engine
|
||||
for (auto path : m_registration.attr("get_engine_projects")())
|
||||
// projects from the engine
|
||||
for (auto path : m_manifest.attr("get_engine_projects")())
|
||||
{
|
||||
projects.push_back(ProjectInfoFromPath(path));
|
||||
}
|
||||
@@ -629,7 +628,7 @@ namespace O3DE::ProjectManager
|
||||
}
|
||||
else
|
||||
{
|
||||
return AZ::Success(AZStd::move(projects));
|
||||
return AZ::Success(AZStd::move(projects));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -639,10 +638,9 @@ namespace O3DE::ProjectManager
|
||||
pybind11::str pyGemPath = gemPath.toStdString();
|
||||
pybind11::str pyProjectPath = projectPath.toStdString();
|
||||
|
||||
m_registration.attr("add_gem_to_project")(
|
||||
m_enableGemProject.attr("enable_gem_in_project")(
|
||||
pybind11::none(), // gem_name
|
||||
pyGemPath,
|
||||
pybind11::none(), // gem_target
|
||||
pybind11::none(), // project_name
|
||||
pyProjectPath
|
||||
);
|
||||
@@ -657,10 +655,9 @@ namespace O3DE::ProjectManager
|
||||
pybind11::str pyGemPath = gemPath.toStdString();
|
||||
pybind11::str pyProjectPath = projectPath.toStdString();
|
||||
|
||||
m_registration.attr("remove_gem_to_project")(
|
||||
m_disableGemProject.attr("disable_gem_in_project")(
|
||||
pybind11::none(), // gem_name
|
||||
pyGemPath,
|
||||
pybind11::none(), // gem_target
|
||||
pybind11::none(), // project_name
|
||||
pyProjectPath
|
||||
);
|
||||
@@ -669,7 +666,7 @@ namespace O3DE::ProjectManager
|
||||
return result;
|
||||
}
|
||||
|
||||
bool PythonBindings::UpdateProject([[maybe_unused]] const ProjectInfo& projectInfo)
|
||||
bool PythonBindings::UpdateProject([[maybe_unused]] const ProjectInfo& projectInfo)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -677,18 +674,18 @@ namespace O3DE::ProjectManager
|
||||
ProjectTemplateInfo PythonBindings::ProjectTemplateInfoFromPath(pybind11::handle path)
|
||||
{
|
||||
ProjectTemplateInfo templateInfo;
|
||||
templateInfo.m_path = Py_To_String(path);
|
||||
templateInfo.m_path = Py_To_String(path);
|
||||
|
||||
auto data = m_registration.attr("get_template_data")(pybind11::none(), path);
|
||||
auto data = m_manifest.attr("get_template_json_data")(pybind11::none(), path);
|
||||
if (pybind11::isinstance<pybind11::dict>(data))
|
||||
{
|
||||
try
|
||||
{
|
||||
// required
|
||||
templateInfo.m_displayName = Py_To_String(data["display_name"]);
|
||||
templateInfo.m_name = Py_To_String(data["template_name"]);
|
||||
templateInfo.m_summary = Py_To_String(data["summary"]);
|
||||
|
||||
templateInfo.m_displayName = Py_To_String(data["display_name"]);
|
||||
templateInfo.m_name = Py_To_String(data["template_name"]);
|
||||
templateInfo.m_summary = Py_To_String(data["summary"]);
|
||||
|
||||
// optional
|
||||
if (data.contains("canonical_tags"))
|
||||
{
|
||||
@@ -714,12 +711,12 @@ namespace O3DE::ProjectManager
|
||||
return templateInfo;
|
||||
}
|
||||
|
||||
AZ::Outcome<QVector<ProjectTemplateInfo>> PythonBindings::GetProjectTemplates()
|
||||
AZ::Outcome<QVector<ProjectTemplateInfo>> PythonBindings::GetProjectTemplates()
|
||||
{
|
||||
QVector<ProjectTemplateInfo> templates;
|
||||
|
||||
bool result = ExecuteWithLock([&] {
|
||||
for (auto path : m_registration.attr("get_project_templates")())
|
||||
for (auto path : m_manifest.attr("get_project_templates")())
|
||||
{
|
||||
templates.push_back(ProjectTemplateInfoFromPath(path));
|
||||
}
|
||||
@@ -731,7 +728,7 @@ namespace O3DE::ProjectManager
|
||||
}
|
||||
else
|
||||
{
|
||||
return AZ::Success(AZStd::move(templates));
|
||||
return AZ::Success(AZStd::move(templates));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <PythonBindingsInterface.h>
|
||||
#include <AzCore/IO/Path/Path.h>
|
||||
#include <AzCore/IO/Path/Path.h>
|
||||
#include <AzCore/std/parallel/semaphore.h>
|
||||
|
||||
// Qt defines slots, which interferes with the use here.
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
namespace O3DE::ProjectManager
|
||||
{
|
||||
class PythonBindings
|
||||
class PythonBindings
|
||||
: public PythonBindingsInterface::Registrar
|
||||
{
|
||||
public:
|
||||
@@ -68,6 +68,9 @@ namespace O3DE::ProjectManager
|
||||
AZ::IO::FixedMaxPath m_enginePath;
|
||||
pybind11::handle m_engineTemplate;
|
||||
AZStd::recursive_mutex m_lock;
|
||||
pybind11::handle m_registration;
|
||||
pybind11::handle m_register;
|
||||
pybind11::handle m_manifest;
|
||||
pybind11::handle m_enableGemProject;
|
||||
pybind11::handle m_disableGemProject;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -29,6 +29,9 @@ ly_add_target(
|
||||
Gem::HttpRequestor
|
||||
3rdParty::AWSNativeSDK::AWSClientAuth
|
||||
3rdParty::AWSNativeSDK::Core
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::AWSCore
|
||||
Gem::HttpRequestor
|
||||
)
|
||||
|
||||
ly_add_target(
|
||||
@@ -44,13 +47,19 @@ ly_add_target(
|
||||
AZ::AzCore
|
||||
AZ::AzFramework
|
||||
Gem::AWSCore
|
||||
Gem::HttpRequestor
|
||||
3rdParty::AWSNativeSDK::AWSClientAuth
|
||||
3rdParty::AWSNativeSDK::Core
|
||||
PUBLIC
|
||||
Gem::AWSClientAuth.Static
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::AWSCore
|
||||
Gem::HttpRequestor
|
||||
)
|
||||
|
||||
# servers and clients use the above module.
|
||||
ly_create_alias(NAME AWSClientAuth.Servers NAMESPACE Gem TARGETS Gem::AWSClientAuth)
|
||||
ly_create_alias(NAME AWSClientAuth.Clients NAMESPACE Gem TARGETS Gem::AWSClientAuth)
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
@@ -71,10 +80,14 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
3rdParty::AWSNativeSDK::AWSClientAuth
|
||||
AZ::AzCore
|
||||
AZ::AzFramework
|
||||
Gem::AWSCore
|
||||
Gem::AWSClientAuth.Static
|
||||
AZ::AWSNativeSDKInit
|
||||
Gem::AWSClientAuth.Static
|
||||
Gem::AWSCore
|
||||
Gem::HttpRequestor
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::AWSCore
|
||||
AZ::AWSNativeSDKInit
|
||||
Gem::HttpRequestor
|
||||
)
|
||||
ly_add_googletest(
|
||||
NAME Gem::AWSClientAuth.Tests
|
||||
|
||||
@@ -45,6 +45,10 @@ ly_add_target(
|
||||
Gem::AWSCore.Static
|
||||
)
|
||||
|
||||
# clients and servers will use the above Gem::AWSCore module.
|
||||
ly_create_alias(NAME AWSCore.Servers NAMESPACE Gem TARGETS Gem::AWSCore)
|
||||
ly_create_alias(NAME AWSCore.Clients NAMESPACE Gem TARGETS Gem::AWSCore)
|
||||
|
||||
if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
ly_add_target(
|
||||
NAME AWSCore.Editor.Static STATIC
|
||||
@@ -99,6 +103,11 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Gem::AWSCore.Editor.Static
|
||||
)
|
||||
ly_add_dependencies(AWSCore.Editor AWSCore.ResourceMappingTool)
|
||||
|
||||
# Builders and Tools (such as the Editor use AWSCore.Editor) use the .Editor module above.
|
||||
ly_create_alias(NAME AWSCore.Tools NAMESPACE Gem TARGETS Gem::AWSCore.Editor)
|
||||
ly_create_alias(NAME AWSCore.Builders NAMESPACE Gem TARGETS Gem::AWSCore.Editor)
|
||||
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -23,6 +23,7 @@ ly_add_target(
|
||||
PRIVATE
|
||||
AZ::AzCore
|
||||
AZ::AzFramework
|
||||
PUBLIC
|
||||
Gem::AWSCore
|
||||
)
|
||||
|
||||
@@ -40,10 +41,15 @@ ly_add_target(
|
||||
PRIVATE
|
||||
AZ::AzCore
|
||||
AZ::AzFramework
|
||||
Gem::AWSCore
|
||||
Gem::AWSMetrics.Static
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::AWSCore
|
||||
)
|
||||
|
||||
# Servers and Clients use the above metrics module
|
||||
ly_create_alias(NAME AWSMetrics.Servers NAMESPACE Gem TARGETS Gem::AWSMetrics)
|
||||
ly_create_alias(NAME AWSMetrics.Clients NAMESPACE Gem TARGETS Gem::AWSMetrics)
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
@@ -63,8 +69,9 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
AZ::AzTest
|
||||
AZ::AzCore
|
||||
AZ::AzFramework
|
||||
Gem::AWSCore
|
||||
Gem::AWSMetrics.Static
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::AWSCore
|
||||
)
|
||||
ly_add_googletest(
|
||||
NAME Gem::AWSMetrics.Tests
|
||||
|
||||
@@ -44,3 +44,6 @@ ly_add_target(
|
||||
PRIVATE
|
||||
Gem::Achievements.Static
|
||||
)
|
||||
|
||||
# we'll load the above "Gem::Achievements" module in clients only.
|
||||
ly_create_alias(NAME Achievements.Clients NAMESPACE Gem TARGETS Gem::Achievements)
|
||||
|
||||
@@ -43,6 +43,10 @@ ly_add_target(
|
||||
Gem::ImGui
|
||||
)
|
||||
|
||||
# AssetMemoryAnalyzer is available in clients and servers.
|
||||
ly_create_alias(NAME AssetMemoryAnalyzer.Clients NAMESPACE Gem TARGETS Gem::AssetMemoryAnalyzer)
|
||||
ly_create_alias(NAME AssetMemoryAnalyzer.Servers NAMESPACE Gem TARGETS Gem::AssetMemoryAnalyzer)
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
@@ -65,3 +69,4 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
NAME Gem::AssetMemoryAnalyzer.Tests
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -65,3 +65,8 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
NAME Gem::AssetValidation.Tests
|
||||
)
|
||||
endif()
|
||||
|
||||
# AssetValidation should be active in all clients plus tools
|
||||
ly_create_alias(NAME AssetValidation.Clients NAMESPACE Gem TARGETS Gem::AssetValidation)
|
||||
ly_create_alias(NAME AssetValidation.Tools NAMESPACE Gem TARGETS Gem::AssetValidation)
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "ImageProcessingAtom",
|
||||
"display_name": "Atom Image Processing",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "AtomShader",
|
||||
"display_name": "Atom Shader Builder",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "Atom_Bootstrap",
|
||||
"display_name": "Atom Bootstrap",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "Atom_Component_DebugCamera",
|
||||
"display_name": "Atom Debug Camera Component",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "Atom_Feature_Common",
|
||||
"display_name": "Atom Feature Common",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "Atom_RHI_DX12",
|
||||
"display_name": "Atom RHI DX12",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "Atom_RHI_Metal",
|
||||
"display_name": "Atom RHI Metal",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "Atom_RHI_Null",
|
||||
"display_name": "Atom RHI Null",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "Atom_RHI_Vulkan",
|
||||
"display_name": "Atom RHI Vulkan",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "Atom_RHI",
|
||||
"display_name": "Atom RHI",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "Atom_RPI",
|
||||
"display_name": "Atom API",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "AtomToolsFramework",
|
||||
"display_name": "Atom Tools Framework",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
+3
-1
@@ -1,3 +1,5 @@
|
||||
{
|
||||
"gem_name": "Atom"
|
||||
"gem_name": "Atom",
|
||||
"display_name": "Atom",
|
||||
"summary": "Next-Gen Rendering Package for the O3DE engine"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"gem_name": "AtomContent",
|
||||
"origin": "The primary repo for Atom goes here: i.e. http://www.mydomain.com",
|
||||
"license": "What license Atom uses goes here: i.e. https://opensource.org/licenses/MIT",
|
||||
"display_name": "Atom Content",
|
||||
"summary": "ontains multiple packages containing source Assets that can be used with Atom",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
"AtomConent"
|
||||
],
|
||||
"icon_path": "preview.png"
|
||||
}
|
||||
@@ -66,6 +66,10 @@ ly_add_target(
|
||||
Gem::AtomViewportDisplayInfo
|
||||
)
|
||||
|
||||
# Any 'runtime-like' applications should use Gem::Atom_AtomBridge:
|
||||
ly_create_alias(NAME Atom_AtomBridge.Clients NAMESPACE Gem TARGETS Gem::Atom_AtomBridge)
|
||||
ly_create_alias(NAME Atom_AtomBridge.Servers NAMESPACE Gem TARGETS Gem::Atom_AtomBridge)
|
||||
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
ly_add_target(
|
||||
NAME Atom_AtomBridge.Editor ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
|
||||
@@ -108,4 +112,9 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Gem::AtomViewportDisplayInfo
|
||||
Gem::AtomViewportDisplayIcons.Editor
|
||||
)
|
||||
|
||||
|
||||
# Any 'tool' and 'builder' type applications should use Gem::Atom_AtomBridge.Editor:
|
||||
ly_create_alias(NAME Atom_AtomBridge.Builders NAMESPACE Gem TARGETS Gem::Atom_AtomBridge.Editor)
|
||||
ly_create_alias(NAME Atom_AtomBridge.Tools NAMESPACE Gem TARGETS Gem::Atom_AtomBridge.Editor)
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "Atom_AtomBridge",
|
||||
"display_name": "Atom Bridge",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "AtomFont",
|
||||
"display_name": "Atom Font",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "AtomImGuiTools",
|
||||
"display_name": "Atom ImGui",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "AtomViewportDisplayIcons",
|
||||
"display_name": "Atom Viewport Display Icons",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
+4
-1
@@ -303,7 +303,10 @@ namespace AZ::Render
|
||||
lastTime = time;
|
||||
}
|
||||
|
||||
const double averageFPS = aznumeric_cast<double>(m_fpsHistory.size()) / actualInterval.count();
|
||||
const double averageFPS = (actualInterval.count() != 0.0)
|
||||
? aznumeric_cast<double>(m_fpsHistory.size()) / actualInterval.count()
|
||||
: 0.0;
|
||||
|
||||
const double frameIntervalSeconds = m_fpsInterval.count();
|
||||
|
||||
DrawLine(
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "AtomViewportDisplayInfo",
|
||||
"display_name": "Atom Viewport Display Info",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "CommonFeaturesAtom",
|
||||
"display_name": "Common Features Atom",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -43,6 +43,8 @@ ly_add_target(
|
||||
PRIVATE
|
||||
AZ::AzCore
|
||||
Gem::EMotionFX_Atom.Static
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::EMotionFX
|
||||
)
|
||||
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "EMotionFX_Atom",
|
||||
"display_name": "EMotionFX Atom",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"gem_name": "ImguiAtom",
|
||||
"display_name": "Imgui Atom",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
}
|
||||
@@ -1,17 +1,14 @@
|
||||
{
|
||||
"gem_name": "Atom_DccScriptingInterface",
|
||||
"GemFormatVersion": 4,
|
||||
"Uuid": "7bf5a77dacd8438bb4966a66b5a678d8",
|
||||
"Name": "Atom_DccScriptingInterface",
|
||||
"DisplayName": "Atom DccScriptingInterface (DCCsi)",
|
||||
"Version": "0.1.0",
|
||||
"Summary": "A python framework for working with various DCC tools and workflows.",
|
||||
"Tags": ["DCC","Digital","Content","Creation"],
|
||||
"IconPath": "preview.png",
|
||||
"Modules": [
|
||||
{
|
||||
"Name": "Editor",
|
||||
"Type": "EditorModule"
|
||||
}
|
||||
"gem_name": "DccScriptingInterface",
|
||||
"display_name": "Atom DccScriptingInterface (DCCsi)",
|
||||
"summary": "A python framework for working with various DCC tools and workflows.",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
"DCC",
|
||||
"Digital",
|
||||
"Content",
|
||||
"Creation"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
{
|
||||
"gem_name": "AtomLyIntegration"
|
||||
"gem_name": "AtomLyIntegration",
|
||||
"display_name": "Atom O3DE Integration",
|
||||
"summary": "Collection of module targets for integrating Atom with the O3DE engine"
|
||||
}
|
||||
|
||||
@@ -93,6 +93,9 @@ ly_add_target(
|
||||
Gem::AudioEngineWwise.Static
|
||||
)
|
||||
|
||||
# we'll load the above "Gem::AudioEngineWwise" module in clients.
|
||||
ly_create_alias(NAME AudioEngineWwise.Clients NAMESPACE Gem TARGETS Gem::AudioEngineWwise)
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
@@ -206,6 +209,8 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
AZ::AssetBuilderSDK
|
||||
Gem::AudioEngineWwise.Static
|
||||
Gem::AudioSystem.Editor
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::AudioSystem.Editor
|
||||
)
|
||||
|
||||
ly_add_target(
|
||||
@@ -230,6 +235,10 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Gem::AudioSystem.Editor
|
||||
)
|
||||
|
||||
# by default, we'll load the above "Gem::AudioEngineWwise.Editor" module in builders and tools.
|
||||
ly_create_alias(NAME AudioEngineWwise.Builders NAMESPACE Gem TARGETS Gem::AudioEngineWwise.Editor)
|
||||
ly_create_alias(NAME AudioEngineWwise.Tools NAMESPACE Gem TARGETS Gem::AudioEngineWwise.Editor)
|
||||
|
||||
if (PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
ly_add_target(
|
||||
NAME AudioEngineWwise.Editor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
|
||||
@@ -61,22 +61,8 @@ ly_add_target(
|
||||
Gem::AudioSystem.Static
|
||||
)
|
||||
|
||||
################################################################################
|
||||
# Server
|
||||
################################################################################
|
||||
if (PAL_TRAIT_BUILD_SERVER_SUPPORTED)
|
||||
# Stub gem for server. Audio system is client only
|
||||
ly_add_target(
|
||||
NAME AudioSystem.Server GEM_MODULE
|
||||
|
||||
NAMESPACE Gem
|
||||
FILES_CMAKE
|
||||
audiosystem_stub_files.cmake
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
AZ::AzCore
|
||||
)
|
||||
endif ()
|
||||
# AudioSystem should use the above target on clients.
|
||||
ly_create_alias(NAME AudioSystem.Clients NAMESPACE Gem TARGETS Gem::AudioSystem)
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
@@ -101,7 +87,8 @@ if (PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
AZ::AzFramework
|
||||
Legacy::CryCommon
|
||||
Gem::AudioSystem.Static
|
||||
Gem::LmbrCentral
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
ly_add_googletest(
|
||||
NAME Gem::AudioSystem.Tests
|
||||
@@ -230,6 +217,10 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Gem::AudioSystem.Editor.Static
|
||||
)
|
||||
|
||||
# use the above "Editor" target in tools and builders:
|
||||
ly_create_alias(NAME AudioSystem.Tools NAMESPACE Gem TARGETS Gem::AudioSystem.Editor)
|
||||
ly_create_alias(NAME AudioSystem.Builders NAMESPACE Gem TARGETS Gem::AudioSystem.Editor)
|
||||
|
||||
if (PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
ly_add_target(
|
||||
NAME AudioSystem.Editor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
|
||||
@@ -253,3 +244,6 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
)
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -42,3 +42,7 @@ ly_add_target(
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
|
||||
# servers and clients use the above module.
|
||||
ly_create_alias(NAME AutomatedLauncherTesting.Servers NAMESPACE Gem TARGETS Gem::AutomatedLauncherTesting)
|
||||
ly_create_alias(NAME AutomatedLauncherTesting.Clients NAMESPACE Gem TARGETS Gem::AutomatedLauncherTesting)
|
||||
|
||||
@@ -59,6 +59,11 @@ ly_add_target(
|
||||
Gem::PhysX
|
||||
)
|
||||
|
||||
# clients and servers use the above Gem module.
|
||||
ly_create_alias(NAME Blast.Servers NAMESPACE Gem TARGETS Gem::Blast)
|
||||
ly_create_alias(NAME Blast.Clients NAMESPACE Gem TARGETS Gem::Blast)
|
||||
|
||||
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
|
||||
ly_add_target(
|
||||
@@ -110,6 +115,9 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Gem::PhysX.Editor
|
||||
)
|
||||
|
||||
# tools and builders use the above module.
|
||||
ly_create_alias(NAME Blast.Tools NAMESPACE Gem TARGETS Gem::Blast.Editor)
|
||||
ly_create_alias(NAME Blast.Builders NAMESPACE Gem TARGETS Gem::Blast.Editor)
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -39,6 +39,10 @@ ly_add_target(
|
||||
Gem::Camera.Static
|
||||
)
|
||||
|
||||
# clients and servers use the above module:
|
||||
ly_create_alias(NAME Camera.Clients NAMESPACE Gem TARGETS Gem::Camera)
|
||||
ly_create_alias(NAME Camera.Servers NAMESPACE Gem TARGETS Gem::Camera)
|
||||
|
||||
if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
|
||||
ly_add_target(
|
||||
@@ -62,4 +66,7 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Gem::Camera.Static
|
||||
)
|
||||
|
||||
# tools and builders use the above module.
|
||||
ly_create_alias(NAME Camera.Tools NAMESPACE Gem TARGETS Gem::Camera.Editor)
|
||||
ly_create_alias(NAME Camera.Builders NAMESPACE Gem TARGETS Gem::Camera.Editor)
|
||||
endif()
|
||||
|
||||
@@ -38,3 +38,9 @@ ly_add_target(
|
||||
PRIVATE
|
||||
Gem::CameraFramework.Static
|
||||
)
|
||||
|
||||
# Every kind of application uses the above target module.
|
||||
ly_create_alias(NAME CameraFramework.Clients NAMESPACE Gem TARGETS Gem::CameraFramework)
|
||||
ly_create_alias(NAME CameraFramework.Servers NAMESPACE Gem TARGETS Gem::CameraFramework)
|
||||
ly_create_alias(NAME CameraFramework.Tools NAMESPACE Gem TARGETS Gem::CameraFramework)
|
||||
ly_create_alias(NAME CameraFramework.Builders NAMESPACE Gem TARGETS Gem::CameraFramework)
|
||||
|
||||
@@ -41,3 +41,7 @@ ly_add_target(
|
||||
PRIVATE
|
||||
Gem::CertificateManager.Static
|
||||
)
|
||||
|
||||
# we'll load the above "Gem::CertificateManager" module in Clients and Servers
|
||||
ly_create_alias(NAME CertificateManager.Clients NAMESPACE Gem TARGETS Gem::CertificateManager)
|
||||
ly_create_alias(NAME CertificateManager.Servers NAMESPACE Gem TARGETS Gem::CertificateManager)
|
||||
|
||||
@@ -33,6 +33,11 @@ ly_add_target(
|
||||
AZ::CrashHandler
|
||||
)
|
||||
|
||||
# Load the "Gem::CrashReporting" module in Clients and Servers
|
||||
ly_create_alias(NAME CrashReporting.Clients NAMESPACE Gem TARGETS Gem::CrashReporting)
|
||||
ly_create_alias(NAME CrashReporting.Servers NAMESPACE Gem TARGETS Gem::CrashReporting)
|
||||
|
||||
|
||||
ly_add_target(
|
||||
NAME CrashReporting.Uploader APPLICATION
|
||||
NAMESPACE AZ
|
||||
|
||||
@@ -22,6 +22,10 @@ ly_add_target(
|
||||
AZ::AzCore
|
||||
)
|
||||
|
||||
# clients and servers use the above module.
|
||||
ly_create_alias(NAME CustomAssetExample.Clients NAMESPACE Gem TARGETS CustomAssetExample)
|
||||
ly_create_alias(NAME CustomAssetExample.Servers NAMESPACE Gem TARGETS CustomAssetExample)
|
||||
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
ly_add_target(
|
||||
NAME CustomAssetExample.Editor GEM_MODULE
|
||||
@@ -37,4 +41,9 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
AZ::AzCore
|
||||
AZ::AssetBuilderSDK
|
||||
)
|
||||
|
||||
# other tools use the above tools module:
|
||||
ly_create_alias(NAME CustomAssetExample.Builders NAMESPACE Gem TARGETS CustomAssetExample.Editor)
|
||||
ly_create_alias(NAME CustomAssetExample.Tools NAMESPACE Gem TARGETS CustomAssetExample.Editor)
|
||||
|
||||
endif()
|
||||
|
||||
@@ -42,6 +42,9 @@ ly_add_target(
|
||||
Gem::DebugDraw.Static
|
||||
)
|
||||
|
||||
# servers do not need debug draw components, only clients
|
||||
ly_create_alias(NAME DebugDraw.Clients NAMESPACE Gem TARGETS DebugDraw)
|
||||
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
ly_add_target(
|
||||
NAME DebugDraw.Editor GEM_MODULE
|
||||
@@ -62,4 +65,9 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Gem::DebugDraw.Static
|
||||
AZ::AzToolsFramework
|
||||
)
|
||||
|
||||
# builders and tools use DebugDraw.Editor
|
||||
ly_create_alias(NAME DebugDraw.Builders NAMESPACE Gem TARGETS DebugDraw.Editor)
|
||||
ly_create_alias(NAME DebugDraw.Tools NAMESPACE Gem TARGETS DebugDraw.Editor)
|
||||
|
||||
endif()
|
||||
|
||||
@@ -36,10 +36,10 @@ ly_add_target(
|
||||
AZ::AzCore
|
||||
AZ::AzFramework
|
||||
Legacy::CryCommon
|
||||
Gem::LmbrCentral
|
||||
PUBLIC
|
||||
AZ::AtomCore
|
||||
Gem::Atom_RPI.Public
|
||||
Gem::LmbrCentral
|
||||
COMPILE_DEFINITIONS
|
||||
PUBLIC
|
||||
EMFX_DEVELOPMENT_BUILD
|
||||
@@ -67,6 +67,10 @@ ly_add_target(
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
|
||||
# Clients and servers use the above EMotionFX module
|
||||
ly_create_alias(NAME EMotionFX.Clients NAMESPACE Gem TARGETS EMotionFX)
|
||||
ly_create_alias(NAME EMotionFX.Servers NAMESPACE Gem TARGETS EMotionFX)
|
||||
|
||||
if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
|
||||
ly_add_target(
|
||||
@@ -129,6 +133,11 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral.Editor
|
||||
)
|
||||
|
||||
# builders and tools use the above EMotionFX.Editor module
|
||||
ly_create_alias(NAME EMotionFX.Builders NAMESPACE Gem TARGETS EMotionFX.Editor)
|
||||
ly_create_alias(NAME EMotionFX.Tools NAMESPACE Gem TARGETS EMotionFX.Editor)
|
||||
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -64,6 +64,10 @@ ly_add_target(
|
||||
Gem::EditorPythonBindings.Static
|
||||
)
|
||||
|
||||
# builders and tools use EditorPythonBindings.Editor
|
||||
ly_create_alias(NAME EditorPythonBindings.Builders NAMESPACE Gem TARGETS EditorPythonBindings.Editor)
|
||||
ly_create_alias(NAME EditorPythonBindings.Tools NAMESPACE Gem TARGETS EditorPythonBindings.Editor)
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
|
||||
@@ -41,6 +41,12 @@ ly_add_target(
|
||||
Gem::ExpressionEvaluation.Static
|
||||
)
|
||||
|
||||
# all types of applications use the above module
|
||||
ly_create_alias(NAME ExpressionEvaluation.Clients NAMESPACE Gem TARGETS ExpressionEvaluation)
|
||||
ly_create_alias(NAME ExpressionEvaluation.Servers NAMESPACE Gem TARGETS ExpressionEvaluation)
|
||||
ly_create_alias(NAME ExpressionEvaluation.Builders NAMESPACE Gem TARGETS ExpressionEvaluation)
|
||||
ly_create_alias(NAME ExpressionEvaluation.Tools NAMESPACE Gem TARGETS ExpressionEvaluation)
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
|
||||
@@ -23,6 +23,7 @@ ly_add_target(
|
||||
PUBLIC
|
||||
Legacy::CryCommon
|
||||
Gem::GradientSignal
|
||||
PRIVATE
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
|
||||
@@ -42,6 +43,10 @@ ly_add_target(
|
||||
Gem::GradientSignal
|
||||
)
|
||||
|
||||
# Clients and Servers use the above module
|
||||
ly_create_alias(NAME FastNoise.Clients NAMESPACE Gem TARGETS FastNoise)
|
||||
ly_create_alias(NAME FastNoise.Servers NAMESPACE Gem TARGETS FastNoise)
|
||||
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
ly_add_target(
|
||||
NAME FastNoise.Editor.Static STATIC
|
||||
@@ -57,6 +62,8 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
PUBLIC
|
||||
Include
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
Gem::LmbrCentral.Editor
|
||||
PUBLIC
|
||||
Gem::FastNoise.Static
|
||||
AZ::AzToolsFramework
|
||||
@@ -65,7 +72,6 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
|
||||
ly_add_target(
|
||||
NAME FastNoise.Editor GEM_MODULE
|
||||
|
||||
NAMESPACE Gem
|
||||
FILES_CMAKE
|
||||
fastnoise_editor_shared_files.cmake
|
||||
@@ -76,11 +82,18 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Include
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
FastNoise.Editor.Static
|
||||
Gem::FastNoise.Editor.Static
|
||||
Gem::LmbrCentral.Editor
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral.Editor
|
||||
Gem::SurfaceData.Editor
|
||||
)
|
||||
|
||||
# builders and tools load the above tool module.
|
||||
ly_create_alias(NAME FastNoise.Builders NAMESPACE Gem TARGETS FastNoise.Editor)
|
||||
ly_create_alias(NAME FastNoise.Tools NAMESPACE Gem TARGETS FastNoise.Editor)
|
||||
|
||||
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
@@ -103,6 +116,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
PRIVATE
|
||||
AZ::AzTest
|
||||
FastNoise.Editor.Static
|
||||
Gem::LmbrCentral.Editor
|
||||
)
|
||||
ly_add_googletest(
|
||||
NAME Gem::FastNoise.Editor.Tests
|
||||
@@ -120,6 +134,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
PRIVATE
|
||||
AZ::AzTest
|
||||
Gem::FastNoise.Static
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
ly_add_googletest(
|
||||
NAME Gem::FastNoise.Tests
|
||||
|
||||
@@ -40,6 +40,10 @@ ly_add_target(
|
||||
Gem::GameState.Static
|
||||
)
|
||||
|
||||
# Clients and Servers use the above module. There is no editor or tools module required.
|
||||
ly_create_alias(NAME GameState.Clients NAMESPACE Gem TARGETS GameState)
|
||||
ly_create_alias(NAME GameState.Servers NAMESPACE Gem TARGETS GameState)
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
|
||||
@@ -44,4 +44,12 @@ ly_add_target(
|
||||
AZ::AzFramework
|
||||
Gem::LmbrCentral
|
||||
Gem::GameStateSamples.Headers
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::GameState
|
||||
Gem::LocalUser
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
|
||||
# Clients and Servers use the above module. There is no editor or tools module required.
|
||||
ly_create_alias(NAME GameStateSamples.Clients NAMESPACE Gem TARGETS GameStateSamples)
|
||||
ly_create_alias(NAME GameStateSamples.Servers NAMESPACE Gem TARGETS GameStateSamples)
|
||||
|
||||
@@ -43,6 +43,12 @@ ly_add_target(
|
||||
Gem::Gestures.Static
|
||||
)
|
||||
|
||||
# All types of applications use the same module.
|
||||
ly_create_alias(NAME Gestures.Clients NAMESPACE Gem TARGETS Gestures)
|
||||
ly_create_alias(NAME Gestures.Servers NAMESPACE Gem TARGETS Gestures)
|
||||
ly_create_alias(NAME Gestures.Builders NAMESPACE Gem TARGETS Gestures)
|
||||
ly_create_alias(NAME Gestures.Tools NAMESPACE Gem TARGETS Gestures)
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
|
||||
@@ -22,9 +22,10 @@ ly_add_target(
|
||||
BUILD_DEPENDENCIES
|
||||
PUBLIC
|
||||
Legacy::CryCommon
|
||||
Gem::LmbrCentral
|
||||
Gem::SurfaceData
|
||||
Gem::ImageProcessingAtom.Headers
|
||||
PRIVATE
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
|
||||
ly_add_target(
|
||||
@@ -40,13 +41,17 @@ ly_add_target(
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
Gem::GradientSignal.Static
|
||||
Gem::LmbrCentral
|
||||
PUBLIC
|
||||
Gem::ImageProcessingAtom.Headers # Atom/ImageProcessing/PixelFormats.h is part of a header in Includes
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral
|
||||
Gem::SurfaceData
|
||||
)
|
||||
|
||||
# Load the "Gem::GradientSignal" module in Clients and Servers
|
||||
ly_create_alias(NAME GradientSignal.Clients NAMESPACE Gem TARGETS Gem::GradientSignal)
|
||||
ly_create_alias(NAME GradientSignal.Servers NAMESPACE Gem TARGETS Gem::GradientSignal)
|
||||
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
|
||||
ly_add_target(
|
||||
@@ -63,19 +68,21 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
PUBLIC
|
||||
GRADIENTSIGNAL_EDITOR
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
Gem::LmbrCentral.Editor
|
||||
PUBLIC
|
||||
3rdParty::Qt::Widgets
|
||||
Legacy::CryCommon
|
||||
AZ::AzToolsFramework
|
||||
Gem::LmbrCentral
|
||||
Gem::SurfaceData
|
||||
AZ::AssetBuilderSDK
|
||||
Gem::GradientSignal.Static
|
||||
Gem::SurfaceData
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral.Editor
|
||||
)
|
||||
|
||||
ly_add_target(
|
||||
NAME GradientSignal.Editor GEM_MODULE
|
||||
|
||||
NAMESPACE Gem
|
||||
FILES_CMAKE
|
||||
gradientsignal_editor_shared_files.cmake
|
||||
@@ -87,11 +94,16 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
Gem::GradientSignal.Editor.Static
|
||||
Gem::LmbrCentral.Editor
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral.Editor
|
||||
Gem::SurfaceData.Editor
|
||||
)
|
||||
|
||||
# Load the "Gem::GradientSignal.Editor" module in Builders and Tools
|
||||
ly_create_alias(NAME GradientSignal.Builders NAMESPACE Gem TARGETS Gem::GradientSignal.Editor)
|
||||
ly_create_alias(NAME GradientSignal.Tools NAMESPACE Gem TARGETS Gem::GradientSignal.Editor)
|
||||
|
||||
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
@@ -112,6 +124,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
PRIVATE
|
||||
AZ::AzTest
|
||||
Gem::GradientSignal.Static
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
ly_add_googletest(
|
||||
NAME Gem::GradientSignal.Tests
|
||||
@@ -132,6 +145,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
AZ::AzTest
|
||||
Gem::GradientSignal.Static
|
||||
Gem::GradientSignal.Editor.Static
|
||||
Gem::LmbrCentral.Editor
|
||||
)
|
||||
ly_add_googletest(
|
||||
NAME Gem::GradientSignal.Editor.Tests
|
||||
|
||||
@@ -51,7 +51,6 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
|
||||
ly_add_target(
|
||||
NAME GraphCanvas.Editor GEM_MODULE
|
||||
|
||||
NAMESPACE Gem
|
||||
AUTOMOC
|
||||
AUTORCC
|
||||
@@ -75,4 +74,10 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
3rdParty::Qt::Xml
|
||||
AZ::AzQtComponents
|
||||
)
|
||||
|
||||
# Load the "Gem::GraphCanvas" module in Builders and Tools
|
||||
ly_create_alias(NAME GraphCanvas.Builders NAMESPACE Gem TARGETS Gem::GraphCanvas.Editor)
|
||||
ly_create_alias(NAME GraphCanvas.Tools NAMESPACE Gem TARGETS Gem::GraphCanvas.Editor)
|
||||
|
||||
|
||||
endif ()
|
||||
|
||||
@@ -52,6 +52,11 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::GraphCanvas.Editor
|
||||
)
|
||||
|
||||
# Load the "Gem::GraphModel" module in Builders and Tools
|
||||
ly_create_alias(NAME GraphModel.Builders NAMESPACE Gem TARGETS Gem::GraphModel.Editor)
|
||||
ly_create_alias(NAME GraphModel.Tools NAMESPACE Gem TARGETS Gem::GraphModel.Editor)
|
||||
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -48,6 +48,12 @@ ly_add_target(
|
||||
Gem::HttpRequestor.Static
|
||||
)
|
||||
|
||||
# Load the "Gem::HttpRequestor" module in all types of applicatons.
|
||||
ly_create_alias(NAME HttpRequestor.Clients NAMESPACE Gem TARGETS Gem::HttpRequestor)
|
||||
ly_create_alias(NAME HttpRequestor.Servers NAMESPACE Gem TARGETS Gem::HttpRequestor)
|
||||
ly_create_alias(NAME HttpRequestor.Builders NAMESPACE Gem TARGETS Gem::HttpRequestor)
|
||||
ly_create_alias(NAME HttpRequestor.Tools NAMESPACE Gem TARGETS Gem::HttpRequestor)
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
|
||||
@@ -53,6 +53,8 @@ ly_add_target(
|
||||
PUBLIC
|
||||
Gem::ImGui.imguilib
|
||||
Legacy::CryCommon
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::ImGui.imguilib
|
||||
)
|
||||
|
||||
ly_add_target(
|
||||
@@ -70,6 +72,7 @@ ly_add_target(
|
||||
BUILD_DEPENDENCIES
|
||||
PUBLIC
|
||||
Gem::ImGui.ImGuiLYUtils
|
||||
PRIVATE
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
|
||||
@@ -90,6 +93,10 @@ ly_add_target(
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
|
||||
# Load the above "Gem::ImGui" module in Clients and Servers:
|
||||
ly_create_alias(NAME ImGui.Clients NAMESPACE Gem TARGETS Gem::ImGui)
|
||||
ly_create_alias(NAME ImGui.Servers NAMESPACE Gem TARGETS Gem::ImGui)
|
||||
|
||||
if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
ly_add_target(
|
||||
NAME ImGui.Editor GEM_MODULE
|
||||
@@ -113,4 +120,9 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral.Editor
|
||||
)
|
||||
|
||||
# Load the above "Gem::ImGui.Editor" module in only tools and builders.
|
||||
ly_create_alias(NAME ImGui.Builders NAMESPACE Gem TARGETS Gem::ImGui.Editor)
|
||||
ly_create_alias(NAME ImGui.Tools NAMESPACE Gem TARGETS Gem::ImGui.Editor)
|
||||
|
||||
endif()
|
||||
|
||||
@@ -43,3 +43,8 @@ ly_add_target(
|
||||
PRIVATE
|
||||
Gem::InAppPurchases.Static
|
||||
)
|
||||
# Load the above "Gem::InAppPurchases" module in all app types
|
||||
ly_create_alias(NAME InAppPurchases.Clients NAMESPACE Gem TARGETS Gem::InAppPurchases)
|
||||
ly_create_alias(NAME InAppPurchases.Servers NAMESPACE Gem TARGETS Gem::InAppPurchases)
|
||||
ly_create_alias(NAME InAppPurchases.Builders NAMESPACE Gem TARGETS Gem::InAppPurchases)
|
||||
ly_create_alias(NAME InAppPurchases.Tools NAMESPACE Gem TARGETS Gem::InAppPurchases)
|
||||
|
||||
@@ -35,16 +35,21 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Legacy::CryCommon
|
||||
Legacy::Editor.Headers
|
||||
Legacy::EditorCommon
|
||||
Gem::LmbrCentral
|
||||
Gem::GraphCanvasWidgets
|
||||
Gem::GraphModel.Editor.Static
|
||||
Gem::GradientSignal.Editor
|
||||
Gem::SurfaceData.Editor
|
||||
Gem::Vegetation.Editor
|
||||
Gem::LmbrCentral.Editor
|
||||
PUBLIC
|
||||
Gem::GraphCanvasWidgets
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::GradientSignal.Editor
|
||||
Gem::SurfaceData.Editor
|
||||
Gem::Vegetation.Editor
|
||||
Gem::LmbrCentral.Editor
|
||||
)
|
||||
ly_add_target(
|
||||
NAME LandscapeCanvas.Editor GEM_MODULE
|
||||
|
||||
NAMESPACE Gem
|
||||
FILES_CMAKE
|
||||
landscapecanvas_editor_files.cmake
|
||||
@@ -61,7 +66,6 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
AZ::AzCore
|
||||
AZ::AzToolsFramework
|
||||
Legacy::Editor.Headers
|
||||
Gem::GraphCanvasWidgets
|
||||
Gem::GraphModel.Editor.Static
|
||||
Gem::LandscapeCanvas.Editor.Static
|
||||
RUNTIME_DEPENDENCIES
|
||||
@@ -72,6 +76,11 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Gem::SurfaceData.Editor
|
||||
Gem::Vegetation.Editor
|
||||
)
|
||||
|
||||
# by default, load the above "Gem::LandscapeCanvas.Editor" module in dev applications
|
||||
ly_create_alias(NAME LandscapeCanvas.Builders NAMESPACE Gem TARGETS Gem::LandscapeCanvas.Editor)
|
||||
ly_create_alias(NAME LandscapeCanvas.Tools NAMESPACE Gem TARGETS Gem::LandscapeCanvas.Editor)
|
||||
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
@@ -97,9 +106,10 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
AZ::AzTest
|
||||
AZ::AzFramework
|
||||
AZ::AzToolsFramework
|
||||
Gem::GraphCanvasWidgets
|
||||
Gem::GraphModel.Editor.Static
|
||||
Gem::LandscapeCanvas.Editor.Static
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::GraphCanvasWidgets
|
||||
)
|
||||
ly_add_googletest(
|
||||
NAME Gem::LandscapeCanvas.Editor.Tests
|
||||
|
||||
@@ -48,6 +48,11 @@ ly_add_target(
|
||||
Gem::LmbrCentral.Static
|
||||
)
|
||||
|
||||
# by default, load the above "Gem::LmbrCentral" module in Client and Server
|
||||
ly_create_alias(NAME LmbrCentral.Clients NAMESPACE Gem TARGETS Gem::LmbrCentral)
|
||||
ly_create_alias(NAME LmbrCentral.Servers NAMESPACE Gem TARGETS Gem::LmbrCentral)
|
||||
|
||||
|
||||
if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
ly_add_target(
|
||||
NAME LmbrCentral.Editor.Static STATIC
|
||||
@@ -102,6 +107,10 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
FILES ${QT_LRELEASE_EXECUTABLE}
|
||||
)
|
||||
|
||||
# by default, load the above "Gem::LmbrCentral.Editor" module in dev tools
|
||||
ly_create_alias(NAME LmbrCentral.Builders NAMESPACE Gem TARGETS Gem::LmbrCentral.Editor)
|
||||
ly_create_alias(NAME LmbrCentral.Tools NAMESPACE Gem TARGETS Gem::LmbrCentral.Editor)
|
||||
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -43,6 +43,9 @@ ly_add_target(
|
||||
Gem::LocalUser.Static
|
||||
)
|
||||
|
||||
# by default, load the above "Gem::LocalUser" module in client applications
|
||||
ly_create_alias(NAME LocalUser.Clients NAMESPACE Gem TARGETS Gem::LocalUser)
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
################################################################################
|
||||
|
||||
@@ -27,12 +27,12 @@ ly_add_target(
|
||||
PRIVATE
|
||||
Legacy::CryCommon
|
||||
Gem::LmbrCentral
|
||||
Gem::TextureAtlas
|
||||
PUBLIC
|
||||
Gem::Atom_RPI.Public
|
||||
Gem::Atom_Utils.Static
|
||||
Gem::Atom_Bootstrap.Headers
|
||||
Gem::AtomFont
|
||||
Gem::TextureAtlas
|
||||
)
|
||||
|
||||
ly_add_target(
|
||||
@@ -50,12 +50,14 @@ ly_add_target(
|
||||
Gem::LyShine.Static
|
||||
Legacy::CryCommon
|
||||
Gem::LmbrCentral
|
||||
Gem::TextureAtlas
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral
|
||||
Gem::TextureAtlas
|
||||
)
|
||||
|
||||
# by default, load the above "Gem::LyShine" module in Client applications:
|
||||
ly_create_alias(NAME LyShine.Clients NAMESPACE Gem TARGETS Gem::LyShine)
|
||||
|
||||
if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
ly_add_target(
|
||||
NAME LyShine.Editor.Static STATIC
|
||||
@@ -85,7 +87,7 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Legacy::EditorCore
|
||||
Gem::LyShine.Static
|
||||
Legacy::CryCommon
|
||||
Gem::LmbrCentral
|
||||
Gem::LmbrCentral.Editor
|
||||
Gem::TextureAtlas.Editor
|
||||
Gem::AtomToolsFramework.Static
|
||||
Gem::AtomToolsFramework.Editor
|
||||
@@ -94,6 +96,8 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Gem::Atom_RPI.Public
|
||||
Gem::Atom_Utils.Static
|
||||
Gem::Atom_Bootstrap.Headers
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::TextureAtlas.Editor
|
||||
)
|
||||
|
||||
ly_add_target(
|
||||
@@ -117,12 +121,16 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
Legacy::CryCommon
|
||||
AZ::AssetBuilderSDK
|
||||
Gem::LyShine.Editor.Static
|
||||
Gem::LmbrCentral
|
||||
Gem::LmbrCentral.Editor
|
||||
Gem::TextureAtlas.Editor
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral.Editor
|
||||
Gem::TextureAtlas.Editor
|
||||
)
|
||||
|
||||
# by default, load the above "Gem::LyShine.Editor" module in dev tools:
|
||||
ly_create_alias(NAME LyShine.Builders NAMESPACE Gem TARGETS Gem::LyShine.Editor)
|
||||
ly_create_alias(NAME LyShine.Tools NAMESPACE Gem TARGETS Gem::LyShine.Editor)
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
@@ -146,7 +154,9 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
Gem::LyShine.Static
|
||||
Legacy::CryCommon
|
||||
Gem::LmbrCentral
|
||||
Gem::TextureAtlas
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral
|
||||
Gem::TextureAtlas
|
||||
)
|
||||
ly_add_googletest(
|
||||
NAME Gem::LyShine.Tests
|
||||
@@ -175,9 +185,12 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED)
|
||||
AZ::AzTest
|
||||
Legacy::CryCommon
|
||||
AZ::AssetBuilderSDK
|
||||
Gem::LmbrCentral
|
||||
Gem::TextureAtlas.Editor
|
||||
Gem::LyShine.Editor.Static
|
||||
Gem::LmbrCentral.Editor
|
||||
Gem::TextureAtlas
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral.Editor
|
||||
Gem::TextureAtlas.Editor
|
||||
)
|
||||
ly_add_googletest(
|
||||
NAME Gem::LyShine.Editor.Tests
|
||||
|
||||
@@ -208,8 +208,6 @@ namespace LyShine
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void LyShineSystemComponent::InitializeSystem()
|
||||
{
|
||||
m_pLyShine = new CLyShine(gEnv->pSystem);
|
||||
gEnv->pLyShine = m_pLyShine;
|
||||
BroadcastCursorImagePathname();
|
||||
}
|
||||
|
||||
@@ -374,6 +372,25 @@ namespace LyShine
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void LyShineSystemComponent::OnCrySystemInitialized(ISystem& system, [[maybe_unused]] const SSystemInitParams& startupParams)
|
||||
{
|
||||
#if !defined(AZ_MONOLITHIC_BUILD)
|
||||
// When module is linked dynamically, we must set our gEnv pointer.
|
||||
// When module is linked statically, we'll share the application's gEnv pointer.
|
||||
gEnv = system.GetGlobalEnvironment();
|
||||
#endif
|
||||
m_pLyShine = new CLyShine(gEnv->pSystem);
|
||||
gEnv->pLyShine = m_pLyShine;
|
||||
}
|
||||
|
||||
void LyShineSystemComponent::OnCrySystemShutdown([[maybe_unused]] ISystem& system)
|
||||
{
|
||||
gEnv->pLyShine = nullptr;
|
||||
delete m_pLyShine;
|
||||
m_pLyShine = nullptr;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
void LyShineSystemComponent::BroadcastCursorImagePathname()
|
||||
{
|
||||
|
||||
@@ -38,6 +38,7 @@ namespace LyShine
|
||||
, protected UiSystemToolsBus::Handler
|
||||
, protected LyShineAllocatorScope
|
||||
, protected UiFrameworkBus::Handler
|
||||
, protected CrySystemEventBus::Handler
|
||||
{
|
||||
public:
|
||||
AZ_COMPONENT(LyShineSystemComponent, lyShineSystemComponentUuid);
|
||||
@@ -89,6 +90,11 @@ namespace LyShine
|
||||
void HandleEditorOnlyEntities(const EntityList& exportSliceEntities, const EntityIdSet& editorOnlyEntityIds) override;
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// CrySystemEventBus ///////////////////////////////////////////////////////
|
||||
void OnCrySystemInitialized(ISystem& system, const SSystemInitParams&) override;
|
||||
virtual void OnCrySystemShutdown(ISystem&) override;
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void BroadcastCursorImagePathname();
|
||||
|
||||
protected: // data
|
||||
|
||||
@@ -20,9 +20,10 @@ ly_add_target(
|
||||
PUBLIC
|
||||
Include
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
Gem::LmbrCentral
|
||||
PUBLIC
|
||||
Legacy::CryCommon
|
||||
Gem::LmbrCentral
|
||||
Gem::LyShine.Static
|
||||
)
|
||||
|
||||
@@ -39,4 +40,13 @@ ly_add_target(
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
Gem::LyShineExamples.Static
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
|
||||
# if enabled, LyShineExamples is used by all kinds of applications, however, the dependency to LmbrCentral is different
|
||||
# per application type
|
||||
ly_create_alias(NAME LyShineExamples.Builders NAMESPACE Gem TARGETS Gem::LyShineExamples Gem::LmbrCentral.Editor)
|
||||
ly_create_alias(NAME LyShineExamples.Tools NAMESPACE Gem TARGETS Gem::LyShineExamples Gem::LmbrCentral.Editor)
|
||||
ly_create_alias(NAME LyShineExamples.Clients NAMESPACE Gem TARGETS Gem::LyShineExamples Gem::LmbrCentral)
|
||||
ly_create_alias(NAME LyShineExamples.Servers NAMESPACE Gem TARGETS Gem::LyShineExamples Gem::LmbrCentral)
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ ly_add_target(
|
||||
BUILD_DEPENDENCIES
|
||||
PRIVATE
|
||||
Legacy::CryCommon
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
|
||||
ly_add_target(
|
||||
@@ -39,11 +38,14 @@ ly_add_target(
|
||||
PRIVATE
|
||||
Legacy::CryCommon
|
||||
Gem::Maestro.Static
|
||||
Gem::LmbrCentral
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral
|
||||
)
|
||||
|
||||
# if enabled, "Maestro" module is used for Clients and Servers:
|
||||
ly_create_alias(NAME Maestro.Clients NAMESPACE Gem TARGETS Gem::Maestro)
|
||||
ly_create_alias(NAME Maestro.Servers NAMESPACE Gem TARGETS Gem::Maestro)
|
||||
|
||||
if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
ly_add_target(
|
||||
NAME Maestro.Editor GEM_MODULE
|
||||
@@ -69,10 +71,13 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
AZ::AzToolsFramework
|
||||
AZ::AssetBuilderSDK
|
||||
Gem::Maestro.Static
|
||||
Gem::LmbrCentral
|
||||
RUNTIME_DEPENDENCIES
|
||||
Gem::LmbrCentral.Editor
|
||||
)
|
||||
# the .Editor variant is used in dev tools:
|
||||
ly_create_alias(NAME Maestro.Tools NAMESPACE Gem TARGETS Gem::Maestro.Editor)
|
||||
ly_create_alias(NAME Maestro.Builders NAMESPACE Gem TARGETS Gem::Maestro.Editor)
|
||||
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -38,3 +38,7 @@ ly_add_target(
|
||||
PRIVATE
|
||||
Gem::MessagePopup.Static
|
||||
)
|
||||
|
||||
# MessagePopup is used only in client applications
|
||||
ly_create_alias(NAME MessagePopup.Clients NAMESPACE Gem TARGETS Gem::MessagePopup)
|
||||
|
||||
|
||||
@@ -50,6 +50,11 @@ ly_add_target(
|
||||
Legacy::CryCommon
|
||||
)
|
||||
|
||||
# The above "Metastream" target is used by all types of applications, including dev tools.
|
||||
ly_create_alias(NAME Metastream.Clients NAMESPACE Gem TARGETS Gem::Metastream)
|
||||
ly_create_alias(NAME Metastream.Servers NAMESPACE Gem TARGETS Gem::Metastream)
|
||||
ly_create_alias(NAME Metastream.Builders NAMESPACE Gem TARGETS Gem::Metastream)
|
||||
ly_create_alias(NAME Metastream.Tools NAMESPACE Gem TARGETS Gem::Metastream)
|
||||
|
||||
################################################################################
|
||||
# Tests
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user