Commit Graph

1749 Commits (43244d30e10c4ac56c8ae49a8f78f3d200e77fc5)

Author SHA1 Message Date
Guthrie Adams 05b75ea33c
Merge pull request #4273 from aws-lumberyard-dev/Atom/amzn-tommy/ExposeTransformLookAtToBehaviorContext
Expose Transform::CreateLookAt to behavior context
4 years ago
Danilo Aimini d10cf1e495 Add guard against edge case.
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
amzn-tommy 1e5e6094f5 Expose Transform::CreateLookAt to behavior context to use with hydra tests
Signed-off-by: amzn-tommy <waltont@amazon.com>
4 years ago
Danilo Aimini 4ae95719de Initialization changes to pass unit tests. Some interfaces are now retrieved on demand and there's clearer failure paths that don't involve asserts to better handle test/headless initializations.
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
Danilo Aimini 305e62380a Merge branch 'development' of https://github.com/o3de/o3de into daimini/FocusMode/setup 4 years ago
hultonha b865d2aec1
Add support for camera reference frames to support camera yaw in certain situations (#4088)
* proof of concept change for fixing camera yaw rotation being ignored

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* updates to fully support camera roll

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* small fixes for PR

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* undo changes in EditorCameraComponent

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* add test to verify interaction between editor viewport view entity change and modular camera controller

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* add additional tests for updated camera behaviors

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* revert change to Camera Gem Output Name

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* move location of new files

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* fix tab/spaces issue

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* remove static from potentially unused functions

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* set camera lib name in CMakeLists.txt file

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* cosmetic CMakeLists.txt change

Signed-off-by: hultonha <hultonha@amazon.co.uk>
4 years ago
Danilo Aimini ceed8f692b Do not assert if m_focusModeInterface can't be initialized
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
Danilo Aimini f14e8d6eac Fix header formatting to pass validation
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
Danilo Aimini 107732d057 Remove pragma once from cpp file
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
Danilo Aimini df10b56f2a ClearFocusRoot implementation
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
Danilo Aimini 271bd3c2a6 Merge branch 'development' of https://github.com/o3de/o3de into daimini/FocusMode/setup 4 years ago
Chris Burel 19747cb5c6
Link to xcb as system-provided targets, instead of by direct library path (#4221)
Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Danilo Aimini 5a4476a0e4 Minor fixes to variable names and comments.
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
Danilo Aimini b8c78caa2f Remove nested FocusModeFramework namespace
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
Danilo Aimini 29d7fcb55e Merge branch 'development' of https://github.com/o3de/o3de into daimini/FocusMode/setup 4 years ago
AMZN-Igarri 7fca57a169
Fixed Assert (#4234)
Signed-off-by: igarri <igarri@amazon.com>
4 years ago
Danilo Aimini 9c400bbd9d Merge branch 'development' of https://github.com/o3de/o3de into daimini/FocusMode/setup 4 years ago
Danilo Aimini 489a93cf91 Remove assert for edge case that can actually happen in normal circumstances, simply return false in those cases.
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
lumberyard-employee-dm b9d1af9f46
Fixed calculation of each archive file data offset. (#4204)
* Fixed calculation of each archive file data offset.

The location of a file entry in a Zip file is calculated after the local file
header + the length of the filename + the length of the extra field
length per the ZIP file spec.
https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Removed bIndependentBlocks variable

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
4 years ago
Danilo Aimini 71bf614912 Changed FocusOnOwningPrefab to return Outcome. Added comments and error checking.
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
Danilo Aimini bd6705a06e Merge branch 'development' of https://github.com/o3de/o3de into daimini/FocusMode/setup 4 years ago
Danilo Aimini 594981f130 Remove the PrefabEditManager. Introduce the FocusMode system on the Editor side, and a PrefabFocusHandler on the Prefab side to handle focus.
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
Scott Romero 36bcf5849a
[development] Migrated Atom CPU profiler to utilize new AzCore Profiler interface and related macros (#4160)
- Added new interface type AZ::Debug::Profiler to externally register profiler systems
 - Modified the Atom CPU profiler to register as an AzCore profiler
 -- This allows full engine markers to be visualized in the associated ImGui tool
 - Converted all AZ_ATOM_PROFILE_* macros to use AZ_PROFILE_* macros instead

Signed-off-by: AMZN-ScottR 24445312+AMZN-ScottR@users.noreply.github.com
4 years ago
jonawals 4aff76343f
Provisional implemenation and testing of central state tracker to track viewport editing modes. (#4112)
* Provisional impl and testing of central state tracker.

Signed-off-by: John <jonawals@amazon.com>

* Add missing namespace comment.

Signed-off-by: John <jonawals@amazon.com>

* ViewportEditorModeState -> ViewportEditorModes

Signed-off-by: John <jonawals@amazon.com>

* ViewportEditorModesTracker -> ViewportEditorModeTracker

Signed-off-by: John <jonawals@amazon.com>

* GetEditorModeState ->GetViewportEditorModes

Signed-off-by: John <jonawals@amazon.com>

* GetNumTrackedViewports -> GetTrackedViewportCount

Signed-off-by: John <jonawals@amazon.com>

* IsViewportStateBeingTracked -> IsViewportModeTracked

Signed-off-by: John <jonawals@amazon.com>

* Fix API comments.

Signed-off-by: John <jonawals@amazon.com>

* Delete hangover file.

Signed-off-by: John <jonawals@amazon.com>

* Delete more hangover files.

Signed-off-by: John <jonawals@amazon.com>

* Minor member name refactor.

Signed-off-by: John <jonawals@amazon.com>

* Refactor nonclemanture.

Signed-off-by: John <jonawals@amazon.com>

* Rename Enter/ExitMode to Register/UnregisterMode.

Signed-off-by: John <jonawals@amazon.com>

* Error and warning msgs now return AZ::Outcomes.

Signed-off-by: John <jonawals@amazon.com>

* Change all nomenclature to Activate/Deactivate for consistency.

Signed-off-by: John <jonawals@amazon.com>

* Change tense of notification bus methods.

Signed-off-by: John <jonawals@amazon.com>

* Fix malformed string format.

Signed-off-by: John <jonawals@amazon.com>

* Fix malformed string format (again).

Signed-off-by: John <jonawals@amazon.com>

* Fix Linux warning.

Signed-off-by: John <jonawals@amazon.com>
4 years ago
SJ 1f542838bb
[Mac] Generate O3DE SDK app bundle that can be notarized and distributed (#4150)
* [Mac] Initial support for building with hardened runtime enabled and code signing the binaries and bundles generated by the CMake install process.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Move call to ly_post_install_step
2. Entitlements should only be added for executables
3. Change use of CMake exec_program to newer execute_process
4. Remove broken symlinks from embedded Python frameworks
5. Run post install code signing only if hardened runtime is enabled

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Remove unnecessary flag

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Remove unnecessary additional call to condesign python inside a bundle

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Move commonly used install functions for codesigning, copying files, and fixing frameworks to a utility script
2. Remove unnecessary wait in the Editor/AP launchers I added earlier.
3. Codesign 3rd party libraries for distribution.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Codesigning on 3rd party libs should only happen when hardened runtime is enabled.
2. Change the order of the if blocks in Editor's main_dummy.cpp. This was causing strange notarization issues because it wass too similar to AP's main executable.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Add new line to end of file

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Move architecture specification to PAL_mac cmake file. 2. Codesign failure should be fatal.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Address some PR feedback

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Remove unnecessary comment. Change if to use IN_LIST.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* HOME may not always be defined. Adding alternate POSIX way of determining HOME.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Checking in partial work to get O3DE SDK built as an app bundle. Has a bunch of debug code that needs to be cleaned up.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Remove this and add it back later with fixed casing.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Adding file back with fixed case

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Add entitlements sparingly(only when necessary)
2. Convert entitlements to plist files which we can directly pass to codesign
3. Install python site-packages in the o3de_sdk launcher and then launch the project manger.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Move hardened runtime check to codesigning functions only. This way, non-hardened runtime install is identical to the former except for codesign. Makes it easy for QA to test internally.
2. Move cmake min version for install to the pre-install steps.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Remove the dummy launchers for AssetProcessor and Editor
2. Add loader_path to the rpaths of binaries outside an app bundle so that the dynamic loader can load their dependencies if any.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Remove file named main_dummy.cpp

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Add O3DE SDK launcher

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Add missing runtime dependencies to gems

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Update the path to binaries when codesigning to the correct one.
2. Remove some debug messages.
3. Move installed binary path setreg generation to the target install function. This way, we get the correct path to the bundle accounting for different configs and subdirectories.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Add explanatory comments.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. ly_install_add_install_path_setreg cannot be called during install target because the runtime dependencies are already processed by then.
2. The SDK launcher now uses the ProjectManager's bundle setreg to find the path to the installed binaries

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Update path to install relative binaries after merge from dev

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Only one config of the SDK launcher needs to be installed. Preinstall steps should not be run per config, but only once.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Install python dependencies using the get_python.sh script.
2. Replace any reference to hard-coded package name/version numbers with variables.
3. Add one more missing runtime dependency.
4. Misc. PR feedback.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Remove the need for setreg files in all tool bundle. Project binary path can be used instead.
2. Move O3DE_SDK_Launcher to Code/Tools/BundleLauncher
3. Add ly_install_run_script() function for install(SCRIPT) functionality.
4. Address some other PR feedback.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Add source permission when installing O3DE_SDK executable.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Rename setreg file to add specialization tag.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Remove LY_BUILD_PERMUTATION that's not needed

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Add BinariesInstallPath.setreg to all our bundles like before. This is now only added during the install process though.
2. Fix path in Install_common.cmake

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Fix comment

Signed-off-by: amzn-sj <srikkant@amazon.com>
4 years ago
Chris Burel 3812e60ab6
Add support for keyboard events from xcb (#3971)
Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
AMZN-Igarri b3db885ae5
Switched over to AzQtComponents::TableView (#3949)
Signed-off-by: igarri <igarri@amazon.com>
4 years ago
hultonha de9a27597b
Additional test support for Manipulator Ditto commands (#4191)
* additional test support for manipulator ditto

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* tidy-up to changes

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* fix for non-unity build compile error

Signed-off-by: hultonha <hultonha@amazon.co.uk>
4 years ago
Esteban Papp 22e43c9122
Nearly all build jobs fail with a missing function in Archive.cpp (#4195)
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
4 years ago
AMZN-Alexandre Corcia Aguilera 4167bb6cde
Warning System Changes (polish) Redo (#4009)
* Restores the branch to the old status from old branch

Signed-off-by: aaguilea <aaguilea@amazon.com>

* Changes that didnt make it from merge manually fixed

Signed-off-by: aaguilea <aaguilea@amazon.com>

* forgot one

Signed-off-by: aaguilea <aaguilea@amazon.com>

* Added Ebus in order to remove rigidbody's dependencies

Signed-off-by: aaguilea <aaguilea@amazon.com>

* answering some of the comments in the PR

Signed-off-by: aaguilea <aaguilea@amazon.com>

* Small typo changed

Signed-off-by: aaguilea <aaguilea@amazon.com>
4 years ago
Steve Pham 2b092bae81
Fix missing virtual destructor causing debug build failure (#4174)
Signed-off-by: Steve Pham <spham@amazon.com>
4 years ago
AMZN-koppersr b40e049429
Added array index operators to Spawnable(Const)EntityContainerView. (#4153)
* Added array index operators to Spawnable(Const)EntityContainerView.

This commit also includes some tweaks to the begin/end functions and unit tests.

Ticket: https://github.com/o3de/o3de/issues/4110

Signed-off-by: AMZN-koppersr <82230785+AMZN-koppersr@users.noreply.github.com>

* Fixed string formatter for assert in Spawnable(Const)EntityContainerView.

Signed-off-by: AMZN-koppersr <82230785+AMZN-koppersr@users.noreply.github.com>

* Added empty() to Spawnable(Const)EntityContainerView and made move functions use [[nodiscard]]

Signed-off-by: AMZN-koppersr <82230785+AMZN-koppersr@users.noreply.github.com>
4 years ago
bosnichd 86ccf1c86e
Input context component (#4152)
* Create a new InputContextComponent.

- An InputContextComponent is used to configure (at edit time) the data necessary to create an AzFrameowrk::InputContext (at run time). The lifecycle of any InputContextComponent is controlled by the AZ::Entity it is attached to (adhering to the same rules as any other AZ::Component), and the InputContext which it owns is created/destroyed when the component is activated/deactivated.

- The underlying AzFramework::InputContext and AzFramework::InputMapping* classes already exist, along with comprehensive unit tests (see Code/Framework/AzFramework/Tests/InputTests.cpp). All changes in this PR are simply to allow input contexts / input mappings to be defined/edited from the editor using data.

- The new InputContextComponent is similar in many respects to the InputConfigurationComponent found in the StartingPointInput Gem, the main difference being that the user-defined input mapping objects the new component creates are identical (from the perspective of any input consumer) to 'raw' engine-defined input channels (the existing AzFramework::InputMapping class inherits from the existing AzFramework::InputChannel class). This means that any system which consumes input (in either C++ or lua) can seamlessly interchange between obtaining input using either the 'raw' engine-defined input channels (eg. InputDeviceGamepad::Button::A, InputDeviceKeyboard::Key::AlphanumericA, etc.) or any user-defined input mapping, which can now be defined from the editor using data. Ultimately I would like to deprecate the StartingPointInput::InputConfigurationComponent in favour of this new InputContextComponent, which isn't realistic at present because the former is used pervasively throughout many different projects, and it integrates with ScriptCanvas in a way that I have yet to replicate, but this is a step towards the goal of a unified, engine-wide input context/input mapping solution that can be used interchangeably by any system, project, or Gem.

Signed-off-by: bosnichd <bosnichd@amazon.com>

* Edited some reflected property descriptions for clarity.

Signed-off-by: bosnichd <bosnichd@amazon.com>

* Fix clang builds:
- Add a missing virtual destructor.
- Fix the scope of two reflected property attribute functions.

Signed-off-by: bosnichd <bosnichd@amazon.com>

* Fix for InputContextComponent being reflected twice in some cirsumstances.

Signed-off-by: bosnichd <bosnichd@amazon.com>

* Updates in response to PR feedback.

Signed-off-by: bosnichd <bosnichd@amazon.com>

* More updates based on review feedback.

Signed-off-by: bosnichd <bosnichd@amazon.com>
4 years ago
Chris Galvan 87ac025575
Merge pull request #4136 from aws-lumberyard-dev/daimini/dpiIssues/floatingWidgetFlickerBetweenScreens
SystemDpi | Moving floating windows close to the edge between screens makes them flicker
4 years ago
lumberyard-employee-dm 58c227ceb1
Implemented C++23 deleted nullptr_t constructor/assignment for AZStd string classes (#4158)
* Added string and string_view class constructor overloads which is deleted that prevents initializing them from a nullptr or an integer type

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Fixed locations where string and string_view were initialized with
nullptr

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Fix IArchive::IsInstalledToHDD signature

Updated calls to ConvertAbsolutePathToAliasedPath to use an
list initialization instead of nullptr

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
4 years ago
lumberyard-employee-dm 447832dd81
Updated the GameApplication to mount the engine.pak (#4128)
* Updated the GameApplication to mount the engine.pak

This allows loading the autoexec.cfg and bootstrap.game.<config>.<platform>.setreg from the engine.pak files
The engine.pak is searched for in the following order: <ExecutableDirectory>/engine.pak, followed by <ProjectCacheRoot>/engine.pak

Removed a lot of unused APIs from the AZ::IO::Archive feature suite
Updated many of the AZ::IO::Archive classes to use AZ::IO::Path internally.
The logic to search for files within an Archive has been updated to use AZ::IO::Path and to remove case-insensitve string comparisons
Somehow removed the CryFile dependency on anything Cry

Updated the Settings Registry to support reading from the FileIOBase and therefore Archive files in the GameLauncher via the `SetUseFileIO` function

Removed AzFramework Dependency on md5 3rdParty library

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Linux build fix

Added an include of <stdio.h> before the <rapidxml/rapidxml.h> include as it usesnprintf.

Added `static` to the constexpr constants in ExtractFileDescription in SettingsRegistryImpl.cpp to fix clang compile issue

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Updated the case used to mount the Engine PAK file in the GameApplication to be Engine.pak to match the other locations where it is mounted

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Updated the proper FFont call to FileIOBase::Size to supply the correct
integer type of AZ::u64 instead of size_t
This fixes building on platforms where size_t is type defined to be
unsigned long

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Fixed segmentation fault in Archive::Unregister when outputing the filename of the Archive file being closed

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Fix calls to OpenPack in the Legacy LevelSystem

The LevelSystem was calling the incorrect overload of OpenPack that
accepts BindRoot for the mounted level.pak instead of the overload that
that passes a memory block object.

This was causing the level pak files to be mounted using an invalid
directory, causing file accesses inside the level pak to fail.

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Updated the error messages in the ZipDir CacheFactory class to use AZ_Warning directly

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Updated the ArchiveFileIO m_trackedFiles container to store mapped type as an AZ::IO::Path

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
4 years ago
hultonha 7e85b1512a
Expose sticky select option to the SettingsRegistry and disable by default (#4149)
* expose sticky select option to the SettingsRegistry

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* update missed callsites after API change to Manipulator Test Framework

Signed-off-by: hultonha <hultonha@amazon.co.uk>

* updates following review feedback

Signed-off-by: hultonha <hultonha@amazon.co.uk>
4 years ago
Mikhail Naumov a8908a987a
Fixing Save level As template path (#4054)
* Fixing Save level As template path

Signed-off-by: Mikhail Naumov <mnaumov@amazon.com>

* CR Feedback

Signed-off-by: Mikhail Naumov <mnaumov@amazon.com>

* CR feedback

Signed-off-by: Mikhail Naumov <mnaumov@amazon.com>

* PR feedback

Signed-off-by: Mikhail Naumov <mnaumov@amazon.com>

* remove emplace

Signed-off-by: Mikhail Naumov <mnaumov@amazon.com>

* more PR feedback

Signed-off-by: Mikhail Naumov <mnaumov@amazon.com>
4 years ago
Danilo Aimini a9091b0a72 Minor changes to comments
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
santorac 5b04183b4e
Material System Reports Warnings About PSO-Impacting Changes
Merge pull request #4102 from aws-lumberyard-dev/Atom/santorac/WarnOnMaterialPsoChanges

These changes make material system report warnings when gameplay scripts attempt to change PSO-impacting material properties at runtime. So far the material system has always allowed any properties to be changed at runtime, including those that affect Pipeline State Objects (PSOs), as this is supported on several platforms. But some platforms require that Pipeline State Objects be pre-compiled and shipped with the game. At some point we will need to add new restrictions that limit what material properties can be changed at runtime. In the meantime, these warnings should alert users to avoid this, as the functionality likely won't be supported in the future.

- Made the Material and LuaMaterialFunctor classes configurable to report errors or warnings when material properties modify Pipeline State Objects. This is controlled by a new "MaterialPropertyPsoHandling" enum.
- Made the EditorMaterialComponent override PSO handling as Enabled, to prevent warnings when the user is editing material instance property overrides. This requried a new MaterialComponentNotificationBus bus message "OnMaterialInstanceCreated".
- Added a new ScopedValue utility class that simply sets a value when it goes out of scope.
- Removed unnecessary GetMaterialPropertyDependencies member from material functor context classes, as this is already available as part of the functor itself.
- Made Material::SetPropertyValue return early when the property value hadn't actually changed. Besides being more efficientn, this prevents unnecessary spamming of the new warning.
- Made a couple imporvements to material_find_overrides_demo.lua: 
  - Made the target material slot name configurable through an exposed component property. 
  - Fixed a timing issue where the assignmentId was invalid if FindMaterialAssignmentId is called too early.
4 years ago
Danilo Aimini 0413f3b7e2 Merge branch 'development' of https://github.com/o3de/o3de into daimini/dpiIssues/floatingWidgetFlickerBetweenScreens 4 years ago
Danilo Aimini 50e4d549f4 Add comments
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
Danilo Aimini f111b67df6 Fix issue with one frame flicker in the transition between paint modes.
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
4 years ago
Esteban Papp bbe437819b
Enables override/virtual warnings
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
4 years ago
santorac 48e0a9d5ff Merge remote-tracking branch 'upstream/development' into Atom/santorac/WarnOnMaterialPsoChanges 4 years ago
santorac 2c464c3ee0 Updated the ScopedValue constructor per code review feedback.
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
4 years ago
Danilo Aimini f6def71088 Merge branch 'development' of https://github.com/o3de/o3de into daimini/dpiIssues/floatingWidgetFlickerBetweenScreens 4 years ago
Chris Burel b53bf52e0d
Perform global deinitialization when exiting the game launcher (#4131)
* Fix code that deregisters the Atom Scene subsystem from the AzFramework Scene

The AzFramework Scene subsystem API is a generic container based on the
type of argument that is passed to it. It maintains a vector of typeids,
and only one object of any type is stored at a time. The Bootstrap system
component registers the Atom scene as a `ScenePtr` (aka
`AZStd::shared_ptr<RPI:Scene>`) with the AzFramework Scene's generic
subsystem. However, the component was previously deregistering the type by
value, `RPI::Scene`. Since no subsystem for the type `RPI::Scene` was set,
unsetting this type did nothing. The result was that the `RPI::Scene`
object would still be around by the time that all the Atom
`InstanceDatabse`s were being destroyed, resulting in a large number of
errors reported about leaked instances during global shutdown.

This fixes the above issue by passing the `m_defaultScene` as a parameter
to `AzFramework::Scene::UnsetSubsystem`, the same value that is passed to
`SetSubsystem`. This is better, because instead of providing explicit
template arguments (which were specifying the incorrect type), this now
allows the compiler to deduce the correct type, and the syntax is symmetric
with the call to `SetSubsystem`.

Signed-off-by: Chris Burel <burelc@amazon.com>

* Correctly release the AWS API from the `HttpRequestManager` module

This code was incorrectly assuming that
`AWSNativeSDKInit::InitializationManager::Shutdown()` would be called
automatically by the `InitializationManager` itself. However, all that
`InitAwsApi()` does is create an `AZ::EnvironmentVariable`, which is a
ref-counted type, and stores it in a global static. That global static is
defined in a static library (namely `AWSNativeSDKInit`), which is linked
in to the `HttpRequestManager` dynamic lib. Because it is a global static,
it has to be explicitly cleared with the call to `Shutdown()`. Otherwise
the destructor of the EnvironmentVariable doesn't happen until global
destruction, by which time the allocator that is supplied to the AWS SDK
has already been destroyed, and the shutdown of the AWS SDK attempts to use
the already-destroyed allocator.

Signed-off-by: Chris Burel <burelc@amazon.com>

* Avoid blocking the remote console server thread if there are no connections

The Remote console server runs in a separate thread. Previously, it would
directly call `AzSock::Accept()` and block the server thread until some
client connected to it. However, if no client connected, the thread would
continue to be blocked, even if the game launcher tried to exit.

This adds a check to see if there's a client on the socket before calling
`Accept()`, to avoid the deadlock on launcher exit.

Signed-off-by: Chris Burel <burelc@amazon.com>

* Fix a log message to print one message per line

Signed-off-by: Chris Burel <burelc@amazon.com>

* Allow pumping the event loop to close the launcher window

Events from the OS are handled in the game's main loop. The general loop
looks like this:

 * Read events from the OS
 * Tick the game application

One of the events that can come from the OS is that the window hosting the
game is closed. When this event happens, many resources provided by the
renderer are freed, and the game application's `shouldExit` bit is set.
However, when the game's `Tick()` is called, there is lots of code that
assumes the renderer is still there. To avoid crashing in the `Tick()`
call, check if the game should exit after pumping the system events.

Signed-off-by: Chris Burel <burelc@amazon.com>

* Unload the level when exiting the launcher

This ensures that any resources held onto by the level are freed before the
launcher exits.

Signed-off-by: Chris Burel <burelc@amazon.com>

* Add an explicit bus `Disconnect()` call to `AZCoreLogSink`

This is necessary because this bus has virtual functions and can be called
from multiple threads.

Signed-off-by: Chris Burel <burelc@amazon.com>

* Allow normal cleanup to take place when exiting the game launcher

Previously, global cleanup was side-stepped by calling `TerminateProcess`
or `exit`, when quitting the game launcher. This is in contrast to the call
to `_exit` on Linux and Mac when exiting the Editor. That leading `_` makes
a big difference: the former runs object destruction, the latter does not.
Instead of making the launcher exit with `_exit` on Linux, instead, remove
that call and actually run all the atexit code.

This does not modify the Editor's behavior however. It still uses `_exit`
and `TerminateProcess`.

Signed-off-by: Chris Burel <burelc@amazon.com>
4 years ago
Mike Balfour 089391f761
Terrain System cleanups and unit tests (#4119)
* Remove the "TEST_SUPPORTED" traits.
Terrain unit tests should be usable on all platforms, so they shouldn't need a platform-specific trait to enable/disable.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>

* Fix a few misc terrain bugs.
* Change Activate/Deactivate to happen immediately instead of deferring.  There were too many order-of-operation bugs caused by trying to defer this.
* Added implementation for calculating normals.
* Fixed bug where GetHeightSynchronous wasn't stopping at the highest-priority layer.
* Added locks for SurfaceData bus to help ensure we lock our mutexes in the correct order and avoid deadlocks.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>

* Add trivial TerrainSystem tests.
Tests construction, Activate(), Deactivate(), and destruction.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>

* Unified Terrain system calls on single bus.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>

* Added mock for TerrainDataNotificationBus listener.
Also added unit tests to verify the listener, and added in missing notification events.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>

* Removed extra Sampler class.
Fixed up APIs to correctly pass Sampler and terrainExistsPtr around.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>

* Switched MockTerrainSystem to be proper gmock.
This makes it for flexible to use and easier to reuse from other test environments.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>

* Fix settings bug caused by bad order of operations that occurred when the methods moved to a different bus.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>

* Eliminate extra EBus by simplifying area initialization.
Previously, there was a back-and-forth ebus signal used for the terrain system to find any terrain spawners that were created prior to the terrain system activation.  Now it uses the more simple technique of just grabbing all the spawners that are currently hooked up to the spawner ebus.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>

* Switch to NiceMock so that "uninteresting" mock calls get ignored.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>

* Addressed PR feedback.
Filled in terrainExistsPtr at the end, and added it to GetNormal as well.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>

* Fixed shader height calculation.
It was off by half a pixel, and it was interpolating, both of which were wrong.

Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com>
4 years ago
hultonha 52095e3e16
Ensure undo/redo operation for change entity selection is atomic (#4122) 4 years ago