* Improve the errors in EngineFinder.cmake
Added additional info on one of the errors to help users resolve the
issue (engine registration).
Improved readability of the errors.
Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com>
* Adds another error message to EngineFinder.cmake
An error message where the user's manifest is present and valid
but no matching engine name was found has been added.
Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com>
* Add "Registry" folders as scan folders
For projects, Gems, and Engine, add the "Registry" folder as scan
folders.
Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com>
* Change params for adding scan folder
Also add trailing newlines to setreg files.
Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com>
* Adjust the priority order for project templates
Scan folder orders were way too high, they should be very low to become
highest priority order.
Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com>
* Removes change of default assets folder to Assets
Need to revert this change so it can be done separately.
Renamed the scan folder to 'Project/Assets' to prep for Assets folder
change later on.
Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com>
* Update platform configuration test to pass
Adjusted expectation of scan folder count from 1 to 2 per Gem for
'Assets' and 'Registry' now.
Signed-off-by: amzn-phist <52085794+amzn-phist@users.noreply.github.com>
ATOM-16273 Compiling SceneSRG before updating it can cause a gpu crash
Changes include:
1. Removed Scene::SetShaderResourceGroupCallback() function and clean up code which use this function.
2. Moved SceneTimeSrg.azsli to RPI's DefaultSceneSrg folder and setup the constants in RPI::Scene
3. Add AZ::Event for Scene's update srg event which features and update scene srg at proper place
4. UpdateTransformServcie FP to use PrepareSceneSrg event handler.
5. Clean up shaders and srgs used in project templates.
Signed-off-by: Qing Tao <qingtao@amazon.com>
* Implemented the RFC to allow projects to need to specify the Gems
Projects no longer need to specify CMake Targets to associate a Gem
variant with.
In order to associate a CMake Target with a gem variant a new
`ly_set_gem_variant_to_load` function has been added that maps CMake
Targets -> Gem Variants.
This allows CMake Targets to self describe which gem variants they
desire to build and load
This implementation is backwards compatible:
The `ly_enable_gems` function still accepts the TARGETS and VARIANTS
arguments which it will forward to the new `ly_set_gem_variant_to_load`
function to allow the input Targets to be associated with input Gem
Variants
This changes fixes the issue with gems that are required by an
Application regardless of the Project in use, not replicating it's
"requiredness" to the SDK layout
Fixes#3430
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Added an LY_PROJECT_NAME property to the Launcher targets
The `ly_enable_gems_delayed` now command queries the LY_PROJECT_NAME property
associated with each target to determine if the gems being enabled are
match the project the target is associated with.
In this case the target only adds dependencies if the gems is being enabled
without a specific project or if the gems is being enabled for the
matching project.
If the LY_PROJECT_NAME property is not set for target, it indicates the
gems for each project can be added as dependencies to the target.
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* The INSTALL step now forwards the LY_PROJECT_NAME property for a target
The Install_common.cmake has been updated to support configuring
TARGET_PROPERTIES into the generated CMakeLists.txt for install targets.
Furthermore the indentation of the generated CMakeLists.txt has been
normalized to help with readability
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Updating the Atom_Bootstrap CMakeLists.txt to enable the Atom_Bootstrap Gem
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Added a deprecation message to ly_enable_gems when supplying TARGETS and
VARIANTS
Added a define_property call for the LY_PROJECT_NAME target property
Removed the .Builders alias for the PrefabBuilder and renamed the
GEM_MODULE target o PrefabBuilder.Builders.
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Removed superflous space from AutomatedTesting Gem CMakeLists.txt
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
Engine improvements/fixes
Fixed behavior that made the editor automated test to be sometimes stuck if lost the focus is lost.
Added support for specifying multiple tests to in batch to the editor, this is achieved by passing --runpythontest with the tests separated by ';'
Added new cmdline argument --project-user-path for overriding the user path. This allows to have multiple editors running writing logs and crash logs in different locations.
Moved responsability of exiting after a test finishes/passes out of ExecuteByFilenameAsTest, callers will use the bool return to know if the test passed.
Editor test batch and parallelization implementation:
Now the external python portion of the editor tests will be specified via test specs which will generate the test. Requiring no code. This is almost a data-driven approach.
Tests can be specified as single tests, parallel, batchable or batchable+parallel
Command line arguments for pytest to override the maximum number of editors, disable parallelization or batching.
Automated tests for testing this new editor testing utility
Signed-off-by: Garcia Ruiz <aljanru@amazon.co.uk>
Co-authored-by: Garcia Ruiz <aljanru@amazon.co.uk>
* Updated gem.json for all top-level Gems. All the top level gems now have identical gem.json formats based on the DefautlGem template gem.json. Two additional fields have been added, a type: field and a requirements: field. These fields are for display in Project Mananger. All gem.json files have a default requirements: value of None. Devs are responsible for providing requirements. Gem descriptions and tags have been signed off by developers.
Signed-off-by: Cronin <mikecro@amazon.com>
* Fixed minor formatting issues with RADTelemetry gem.json
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Adding newline to QtForPython gem.json
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Adding newline to the Twitch gem.json
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Adding newline to AWSCore gem.json
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Adding newline to the AtomTressFX gem.json
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Adding newline to the end of the AudioEngineWwise gem.json
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Adding newline to the end of the CertificateManager gem.json
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Removing extra whitespace in summary of CrashReporting gem.json
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Adding newline to the end of the CustomAssetExample gem.json
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Removing extra whitespace in editorPythonBindings gem summary
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Adding newline to the end of the ScriptedEntityTweener gem.json
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Adding newline to the end of the Gestures gem.json
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Removing extra whitetspace in the summary of the GameStateSamples gem
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Adding newline to the end of the ExpressionEvaluation gem.json
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Updated the ProjectManager PythonBindings.cpp code to reference the
newer fields in the gem.json files
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Updating the Gem and Project templates gem.json files to include the
"type" and the "requirements" field.
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Updated the default "requirments" field value to be empty string instead
of "None"
This works better with the ProjectManager GemInfoFromPath function.
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Correcting "summary" field name
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Added the requirements text to the AudioEngineWwise Gem
This gem requires downloading the Wwise 3rdParty library from AudioKinetic's website
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
Co-authored-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
Co-authored-by: Mike Cronin <58789750+micronAMZN@users.noreply.github.com>
* Added proper detection of the list of Gems in the Project Templates
enabled_gems.cmake file
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Added a CMake alias target for the Atom Gem and the AtomLyIntegration
Both of those targets just aliases the Atom_AtomBridge gem
Therefore they turn on Atom
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Replacing the Atom_AtomBridge gem in the project template with the Atom gem
The Atom gem is just an alias to the Atom_AtomBridge gem
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Updated the manifest.py gem gathering logic to recurse through the external subdirecotories locating gem.json files to discover all gems in a subdirectory
Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Final update copyright headers to reference license files at the repo root
Signed-off-by: spham <spham@amazon.com>
* Fix copyright validator unit tests to support the stale O3DE header scenario
Signed-off-by: spham <spham@amazon.com>
* Add ability to change project name
* Fixed several issues where path types were changed
* Added PythonBindings CreateProject unit test
* Fix python warning format
* Validate new project name in CLI
* Fix issue creating pathview on linux
* Use better testing macros
* Refactored the unit_test_engine_template.py test to actually test
against the current engine_template.py commands
The commands of create-template, create-from-template, create-project
and create-gem is now being validated.
Registered the unit_test_engine_template.py script with CTest in the smoke test
suite so that it runs in Automated Review
Fixed issues in the engine_template.py script where the template_restricted_path parameter was required in the create_project and create_gem functions
Co-authored-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Added a ModuleInterface class for sharing an AZ::Module implementation
The ModuleInterface class registers the SystemComponent that that comes
with the Client module and returns in it's GetRequiredSystemComponent
the Clients module SystemComponent
An EditorModule class has been added which inherits from the
ModuleInterface class and extends the registered SystemComponent
descriptors with it's SystemComponent.
It then overrides teh GetRequiredSystemComponent function and replaces
the required SystemComponent with it's Tools module SystemComponent
* Updated the DefaultProject list of Gems to match the decided Standard list of gems
* Updated the comment in the EditorModule constructor
The comment indicates that all component descriptors should be added to the m_descriptors list
* Added more detail to the ModuleInterface constructor about the registering the Component Descriptors
* Creating Builder variant aliases for all Asset Gems
* Added an AssetGem template for creating an Asset Gem
The AssetGem template is meant for non-code Gems
* Updated the engine_template.py commands to use pathlib
Each of the four commands: create-template, create-from-template,
create-project and create-gem have been updated to use pathlib.Path or
any path manipulation
Fix several python errors when instantiating a template with missing
o3de objects.
For example attempting to use the create-project command with the
"DefaultGem" template would result in a python exception instaed of a
error log and a return value 0..
Added a **force** option to the engine_template commands
to force overriding of existing files
* Optimized search through text files when the create-template command is
run when attempting to replace the license text section
* Adding a Minimal Project Template that contains the minimal set of gems
as stated by UX
* Minor changes to the DefaultProject template. Added a license section to the EngineFinder.cmake
* Adding the MinimalProject to the engine.json file
* Update the minimum CMake version to 3.20
Sets the cmake_minimum_required calls to version 3.20 and updates the
README.md to point at the general CMake download page instead of a stale
link.
* Remove unnecessary cmake minimum version
It was using an old 3.0 version and can be removed.
* Additional updates to CMake 3.20, build scripts
Updates the version and remove logic to find a CMake in 3rdParty.
* Removing backup path to ninja path in the build_ninja_windows.cmd
The backup path for finding ninja was coming from the Perforce depot which isn't available for o3de builds.
* Removing reference to 3rdParty Android SDK 29 from the build and run unit test script
The Android SDK is not part of the new 3rdParty system and users are expected to install the Android SDK on their own in order to build the engine for Android.
* Update the get_python scripts and README
No longer try to append a CMake path to LY_3RDPARTY_PATH, but do still
support LY_CMAKE_PATH because there are still uses of it. Remove
mention of an LY_3RDPARTY_PATH-relative CMake path from the README.md.
* Removing LY_NINJA_PATH from the build_ninja_windows.cmd
Co-authored-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
* Updating the DefaultProject template to not insert the project-path parameter into the VS Debugger Arguments for any applications
Added project-path injection directly within the LauncherUnified and AssetBuilder cmake scripts where their targets are defined
* Removing the add_vs_debugger_arguments call from the AutomatedTesting CMakeLists.txt