The EditorEntitySortComponent was relying on serialization callbacks not exposed to the JSON serializer to marshal data between its serialized state and its runtime state, which led to the outliner sort order becoming disrupted every time a prefab propagation occurs (and the component is subsequently serialized and deserialized). This change:
- Forces `PrepareSave` and `PostLoad` for `EditorEntitySortComponent` to be called at update (direct descendant added or removed) and activation time respectively while prefabs are enabled. While this could be optimized, and this logic stands to be refactored once slices are fully removed, I was unable to gather any samples in which `PrepareSave` are called in a sampling profiler in a scene with 1000 top-level entities, so I don't anticipate this introducing a meaningful performance regression in the short term.
- Disables updates in `EditorEntitySortComponent` during prefab propagation, as any detected changes do not signal authored intent at this time
- Made `GetEntityChildOrder` in `EditorEntityHelpers` work with prefabs enabled, which restores the existing "Sort: A -> Z" and "Sort: Z -> A" behaviors (which have some preexisting issues this does not fix)
- Adds a Python regression test to the Editor suite to validate this behavior - the test is currently in TestSuite_Main and not TestSuite_Main_Optimized because it requires an Editor launch with prefabs enabled, this can be fixed once AutomatedTesting is further migrated away from slices
@AMZN-daimini has a larger change that improves the JSON serialization format (https://github.com/o3de/o3de/pull/1292) which we should absolutely bring in in the future to improve the legibility of the Prefab format, but this change fixes the functionality (including saving & reloading a level and keeping a consistent order) without altering the Prefab format - this lower impact radius fix is my preference for our stabilization period.
Signed-off-by: nvsickle <nvsickle@amazon.com>
* Fix bug in LocalFileIO::ConvertToAliasBuffer when a resolved alias ends in a path separator, in which case we do not want to consume it when replacing it with the alias.
eg. If the @products@ alias resolves to "C:\" and we call ConvertToAliasBuffer with "C:\some_folder\some_file.txt", the current behaviour results in "@products@some_folder\some_file.txt", but it needs to be "@products@\some_folder\some_file.txt"
Signed-off-by: bosnichd <bosnichd@amazon.com>
* Update based on review feedback.
Signed-off-by: bosnichd <bosnichd@amazon.com>
* remove HandleFocusChange from FocusIn/Out events in QtEventToAzInputManager
Signed-off-by: hultonha <hultonha@amazon.co.uk>
* ensure we clear input channels when application state changes
Signed-off-by: hultonha <hultonha@amazon.co.uk>
* wip changes for focus switching tests
Signed-off-by: hultonha <hultonha@amazon.co.uk>
* updates to test to verify focus change not affecting input
Signed-off-by: hultonha <hultonha@amazon.co.uk>
* add test to ensure input is not cleared when focus changes
Signed-off-by: hultonha <hultonha@amazon.co.uk>
* ensure key press goes to correct widget
Signed-off-by: hultonha <hultonha@amazon.co.uk>
* add test to verify input is cleared when application state changes
Signed-off-by: hultonha <hultonha@amazon.co.uk>
* clear input for all types of application state change
Signed-off-by: hultonha <hultonha@amazon.co.uk>
* update input key for focus test
Signed-off-by: hultonha <hultonha@amazon.co.uk>
* use the Settings Registry to tell the InputSystemComponent to disable various devices
Signed-off-by: hultonha <hultonha@amazon.co.uk>
* update how we simulate the application state change event
Signed-off-by: hultonha <hultonha@amazon.co.uk>
* revert Settings Registry changes
Signed-off-by: hultonha <hultonha@amazon.co.uk>
This adds support for the `ap_tether_lifetime` cvar in Linux. It extends
the solution implemented in #2799 to add the same support on Linux.
Signed-off-by: Chris Burel <burelc@amazon.com>
* Modify the AssetBundler to correctly identify the Gems that are enabled in the current active project
Signed-off-by: Tommy Walton <waltont@amazon.com>
* Removed unnecessary if() statement and updated the comment.
Signed-off-by: Tommy Walton <waltont@amazon.com>
* Disabling gem loading in the asset bundler tests, just like the asset bundler itself.
Signed-off-by: Tommy Walton <waltont@amazon.com>
• Changed thumbnail property control to track asset key even if image is overridden so that it will be restored if the image is cleared.
• Changed property asset control to disable the thumbnail image by default whenever the attribute is applied. It will only enable the thumbnail image if the pixmap is valid.
• Changed the material component controller to always use an empty material assignment map on deactivation so that no persistent materials are reapplied.
• Changed the material component controller to immediately send a notification that materials have updated if no materials were queued for load but the configuration contained pre created or persistent material instances. This mainly affects the material editor because it manages its own material instances.
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
Commit 8e03d6f306 missed updating the
platform-specific mac QApplication implementation file to include the
class declaration from the new header.
Signed-off-by: Chris Burel <burelc@amazon.com>