Commit Graph

946 Commits

Author SHA1 Message Date
Chris Galvan efbf2f224e Merge pull request #4913 from aws-lumberyard-dev/cgalvan/AddFindComponentsByServiceAPI
Added API for finding components based on required/incompatible services
2021-10-22 14:38:21 -05:00
Danilo Aimini 45926d0dbd LYN-7539 + LYN-7541 | Focus Mode - Show prefab names and dirty markers instead of instance names in breadcrumbs (#4850)
* Change Prefab Focus breadcrumb widget to display template filename instead of instance container entity name. Also display dirty state for the template (*) and refresh it in real time.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Streamline path creation code; fix stem retrieval to ensure extension is cut correctly; delay refresh one frame when path is clicked to correctly refresh it.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Remove test code.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Simplify code to use Native directly.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Minor variable renaming and comment adjustments to make them clearer.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
2021-10-22 12:37:43 -07:00
Steve Pham 476ff637c2 Undo P4 check before spawning thread and fix usage of new AzToolsApplication trait (#4894)
Signed-off-by: Steve Pham <spham@amazon.com>
2021-10-22 09:47:39 -07:00
Alex Peterson 1989316cac Added toast notifications to the gem catalog 2021-10-22 09:11:28 -07:00
Chris Galvan 95c2ee0e9d Added API for finding components based on required/incompatible services.
Signed-off-by: Chris Galvan <chgalvan@amazon.com>
2021-10-22 10:30:48 -05:00
Nicholas Van Sickle f3af362ede Merge pull request #4838 from aws-lumberyard-dev/LYN-7562
Make safe asset folder comparison for prefab creation to be case insensitive
2021-10-21 14:37:53 -07:00
Danilo Aimini 52112be1ac LYN-7448 + LYN-7542 + LYN-7543 | Focus Mode - UX Improvements (#4837)
* Introduce Outliner button to simplify Prefab editing

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Fix Focus Mode and disabled entities colors

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Fix - propagate the event if the OnOutlinerItemClick function returns false.
This does not change current behavior but makes more sense in the context of future handlers.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Adjust disabled colors to match UX recommendations.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Display the edit button even if the prefab is disabled. Remove prefabWip check (it will be removed for focus mode by the time this goes in). Default to disabled capsule color for borders to save on checks.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Disable edit button on disabled prefabs as it caused conflicts in nested prefabs. May explore that possibility later.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Change disabled text color to be darker, as asked by UX.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
2021-10-21 13:43:21 -07:00
chiyenteng 7316802941 Add Detach and Duplicate Prefab basic workflow auto test (#4506)
- Add a new automated test PrefabBasicWorkflow_CreateReparentAndDetachPrefab for verifying prefab detachment basic workflow.
- Add a new automated test PrefabBasicWorkflow_CreateAndDuplicatePrefab for verifying prefab detachment basic workflow.
- Fix a bug related to sets of entity ids in Reparent helper function .
2021-10-21 12:08:00 -07:00
srikappa-amzn 33490ed6df Avoided a string copy by using path view
Signed-off-by: srikappa-amzn <srikappa@amazon.com>
2021-10-21 11:42:41 -07:00
srikappa-amzn 4ed73a0b91 Use case insensitive folder path comparison for creating slices
Signed-off-by: srikappa-amzn <srikappa@amazon.com>
2021-10-21 09:11:11 -07:00
Danilo Aimini c2ec18dc0e Remove prefab WIP checks to make focus mode the default (and only) prefab editing workflow in the editor. (#4840)
Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
2021-10-20 14:41:35 -07:00
Steve Pham 27a535eaf4 Linux Fixes for Launching the Material Editor (#4808)
- Prevent P4 thread to run if we cannot detect the P4 command to begin with
- Add a trait to disable calling the parent ComponentApplication::Destroy(), instead calling _exit() to skip the module unloading on exit

Signed-off-by: Steve Pham <spham@amazon.com>
2021-10-20 14:34:30 -07:00
Danilo Aimini 60c286dafa LYN-7483 + LYN-7052 | Correctly initialize and refresh Prefab Focus Mode handler. (#4718)
* Initialize the PrefabFocusHandler on context reset, to also cover the case of a new level being created on the welcome screen.
Relax checks/restrictions on refreshes to cover cases where an instance is reused by the Prefab EOS.
Refresh the breadcrumbs when a container is renamed and when a change is propagated to the instances to ensure the correct names are displayed.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Rename m_isInitialized to m_initialized in PrefabFocusHandler

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Use find_if to detect when a container entity in the focus path has been renamed.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Renaming and commenting variables in PrefabFocusHandler.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Undo minor naming change

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Replace lazy initialization and have the UI side initialize the Editor calls in PrefabFocusHandler.
This should prevent issues with focus mode trying to access these interfaces in non-editor applications.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
2021-10-20 12:56:30 -07:00
srikappa-amzn 24b0dab30e Make safe asset folder comparison for prefab creation to be case insensitive
Signed-off-by: srikappa-amzn <srikappa@amazon.com>
2021-10-20 12:02:46 -07:00
Alex Peterson 7ddcdffed7 Move Qt Toast Notifications from GraphCanvas into Framework
Move the existing Qt Toast Notification QWidgets, EBuses and logic from the GraphCanvas gem into AzQtComponents and AzToolsFramework so they can be re-used.

Signed-off-by: AMZN-alexpete <26804013+AMZN-alexpete@users.noreply.github.com>
2021-10-20 11:15:24 -07:00
Allen Jackson 900aa4e5bc {lyn7065} adding ProcPrefab Prefab::Tempate flag method (#4765)
* {lyn7065} adding ProcPrefab Prefab::Tempate flag method

Signed-off-by: jackalbe <23512001+jackalbe@users.noreply.github.com>

* updated based on comments

Signed-off-by: jackalbe <23512001+jackalbe@users.noreply.github.com>

* moved validation logic to IsValid()

Signed-off-by: jackalbe <23512001+jackalbe@users.noreply.github.com>

* added more guards around the source string


Signed-off-by: jackalbe <23512001+jackalbe@users.noreply.github.com>
2021-10-20 12:22:11 -05:00
jonawals a1ee7b5a31 Merge pull request #4725 from aws-lumberyard-dev/hultonha_LYN-7394_focus_cursor
Updates to support 'lock'/'forbidden' cursor when in Focus Mode
2021-10-20 14:55:01 +01:00
jonawals befb97a80e Merge pull request #4627 from aws-lumberyard-dev/igarri/Fix-Viewport-camera-locations
Make Go To Location affect the Default Viewport Camera
2021-10-19 14:45:13 +01:00
Nicholas Van Sickle 3485bc08b1 Fix EntityOutlinerTest (#4771)
The test was relying on immediate updates from the prefab system which are now scheduled for a later tick - this reworks the tests to wait for deferred updates before validating state

Signed-off-by: nvsickle <nvsickle@amazon.com>
2021-10-18 17:14:19 -07:00
Nicholas Van Sickle 434641382b Merge pull request #4749 from aws-lumberyard-dev/nvsickle/OutlinerDuplicateEntryFixes
Fix issues with invalid Outliner entries
2021-10-18 14:01:31 -07:00
Allen Jackson fbedd8126d {lyn7251} Add material component example in Python (#4724)
* {lyn7251} Add material component example in Python

adds a AZ::Render::EditorMaterialComponent as an example of how to
override the default material from the scene building pipeline

Signed-off-by: jackalbe <23512001+jackalbe@users.noreply.github.com>

* Only set the cube to a gray material
Skip loading the asset, instead just set the outPrefabAssetPath for the Prefab system to load

Signed-off-by: jackalbe <23512001+jackalbe@users.noreply.github.com>

* stablizing the sub-id of procedural prefab groups

Signed-off-by: jackalbe <23512001+jackalbe@users.noreply.github.com>
2021-10-18 12:48:38 -05:00
igarri 6050d2e16e merge develop
Signed-off-by: igarri <igarri@amazon.com>
2021-10-18 12:42:00 +01:00
John 363bc33fed Fix broken function name.
Signed-off-by: John <jonawals@amazon.com>
2021-10-18 09:25:33 +01:00
John cf41ff020a Fix merge conflicts.
Signed-off-by: John <jonawals@amazon.com>
2021-10-18 09:24:09 +01:00
nvsickle f0e6841ca8 Fix issues with invalid Outliner entries
The EntityOutlinerListModel was violating the QAbstractItemModel contract in a few cases, as reported by `QAbstractItemModelTester`. The important ones causing issues were:
- Entry order was not guaranteed, leading to model indices pointing at invalid data
- Parent/child relationships could be temporarily invalid due to a change I made in EditorEntityModel::RemoveEntity to try to avoid an unnecessary reparent operation - as it turned out, the parent/child data was being cached even for recreated entities and not clearing child data could cause issues
- `EntityOutlinerListModel::ProcessEntityUpdates` was emitting data changed between two indices that didn't necessarily share a parent, which is [undefined behavior](https://doc.qt.io/qt-5/qabstractitemmodel.html#dataChanged)

The other reported issues (that weren't really causing issues with `QTreeView`) were:
- The root index had flags other than `Qt::ItemIsDropEnabled`
- `rowCount` showed all columns as having children
- `parent` showed indices as being parented to a non-0 column

This change introduces fixes for the above issues, namely:
- Reverts my change to `EditorEntityModel::RemoveEntity` to ensure we don't have invalid parent/child references sitting in the cache
- Ensures `EditorEntityModelEntry` child ordering is guaranteed sorted by EntityId, to prevent the `EntityOutlinerListModel` from having indices pointed at invalid data*.
- Fixes various model sanity issues, such as `rowCount` being 0 for indices with a non-0 column

Two unit tests were added to reproduce the invalid behavior and validate the fix: TestCreateFlatHierarchyUndoAndRedoWorks and TestCreateNestedHierarchyUndoAndRedoWorks
This change focuses on correctness over performance. My subjective in-Editor outliner experience is about the same, but it may be worthwhile to expand the test coverage with a benchmarking suite to look into areas for optimization.

*As a rough illustration of the previous child ordering behavior, consider the following entity hierarchy:
```
Root (EID 9999)
|_ Child1 (EID 2)
|_ Child2 (EID 3)
|_ Child3 (EID 4)
```
With an representations like the following pseudocode:
```
// EditorEntityModel representation
EditorEntityModelEntry root;
root.children[0] = 2;
root.children[1] = 3;
root.children[2] = 4;

// EditorOutlinerListModel representation
// row, column, user data (64 bit uint)
child1 = QModelIndex(0, 0, 2)
child2 = QModelIndex(1, 0, 3)
child3 = QModelIndex(2, 0, 4)
```

When removing a child, the `EditorEntityModel` used to do roughly the following:
```
// Swap and pop the last child
int indexToRemove = 0;
swap(root.children[indexToRemove], root.children[root.children.size() - 1]);
root.children.resize(root.children.size() - 1);
model.notifyRemoved(root, indexToRemove); // model removes the row indicated

// Leading to this EditorEntityModel state
root.children[0] = 4;
root.children[1] = 3;

// And this EntityOutlinerListModel state, note that the row indices are swapped from the indices in the backing storage
child2 = QModelIndex(0, 0, 3)
child3 = QModelIndex(1, 0, 4)
```

A QModelIndex having a row that doesn't match its underlying data is undefined behavior, and was the source of an intermittent crash in our `QSortFilterProxyModel` as subsequent updates to the wrong row led to an invalid proxy state.

Signed-off-by: nvsickle <nvsickle@amazon.com>
2021-10-17 18:38:15 -07:00
amzn-mike dd47e1aa4e Add EditorPrefabComponent to procedural prefab container entity (#4727)
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
2021-10-15 15:50:41 -05:00
hultonha 244e1b8e16 add a switch to enable/disable cursor lock (default off)
Signed-off-by: hultonha <hultonha@amazon.co.uk>
2021-10-15 16:55:40 +01:00
hultonha 67ccc438c4 remove redundant word from comment
Signed-off-by: hultonha <hultonha@amazon.co.uk>
2021-10-15 15:47:57 +01:00
hultonha 2158c8cfdf Merge branch 'development' into hultonha_LYN-7394_focus_cursor
Signed-off-by: hultonha <hultonha@amazon.co.uk>
2021-10-15 15:45:13 +01:00
hultonha c955880d9b ensure cursor position is mapped to the right widget space
Signed-off-by: hultonha <hultonha@amazon.co.uk>
2021-10-15 15:30:36 +01:00
hultonha 9aafc51ff5 Add first pass version of click feedback while in Focus Mode (#4693)
* add first pass version of click feedback while in Focus Mode

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

* add more WIP experimental feedback ideas for Focus Mode

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

* small updates after UX feedback to improve focus mode feedback

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

* refactor and improve invalid click feedback

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

* update comments from review feedback

Signed-off-by: hultonha <hultonha@amazon.co.uk>
2021-10-15 15:25:27 +01:00
hultonha 3d4c060fb5 updates to improve cursor lock behavior
Signed-off-by: hultonha <hultonha@amazon.co.uk>
2021-10-15 15:19:38 +01:00
srikappa-amzn 87533d80c1 Delay propagation for all template updates in detach prefab workflow (#4707)
* Delay propagation for all template updates in detach prefab workflow

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

* Some minor changes to the PrefabUndo constructor

Signed-off-by: srikappa-amzn <srikappa@amazon.com>
2021-10-15 13:55:26 +01:00
amzn-mike 969a55170e Procedural Prefabs: Entity parenting fixes (#4669)
* Parent top level entities to container entity when creating prefab

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>

* Add to_json method to PythonProxyObject to allow serializing any AZ serialializable type

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>

* Update scene_mesh_to_prefab.py to parent entities in a chain

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>

* Remove redundant eval

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>

* Improve error handling in ToJson

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>

* Add maybe_unused for commonRoot since it's not used

Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
2021-10-15 07:33:01 -05:00
hultonha 1d6542c274 initial wip code to update cursor states
Signed-off-by: hultonha <hultonha@amazon.co.uk>
2021-10-15 13:28:58 +01:00
hultonha 5c8a1b573e Add support for border in Focus Mode (#4692)
* restore component mode border

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

* add viewport border for focus mode, remove dead code in ObjectManager

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

* ensure the focus mode border is restored when leaving component mode

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

* update FocusModeNotification call order after merge from development

Signed-off-by: hultonha <hultonha@amazon.co.uk>
2021-10-15 12:56:05 +01:00
John 396530b274 Address PR feedback.
Signed-off-by: John <jonawals@amazon.com>
2021-10-15 11:18:17 +01:00
AMZN-Igarri f7eb906516 Moved Max Number of Entries Shown in Asset Browser Search View to EditorViewportSettings (#4660)
* removed references to maxNumberOfItemsShownInSearch

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

* Move Max Number of Entries Shown in Asset Browser Search View to EditorViewportSettings

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

* Fixed extra spaces

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

* Code review feedback

Signed-off-by: igarri <igarri@amazon.com>
2021-10-15 09:55:41 +01:00
Danilo Aimini bcf3980de6 LYN-7191 + LYN-7194 | Adjust Prefab operations to conform with Prefab Focus/Edit workflows. (#4684)
* Disable ability to delete container entity of focused prefab. Default entity creation to parent to container entity of focused prefab.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Disable detach and duplicate operations for the container of the focused prefab. Update the context menu accordingly.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Fix spacing

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Address minor issues from PR (error message, optimization in RetrieveAndSortPrefabEntitiesAndInstances).

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
2021-10-14 15:32:34 -07:00
amzn-mike 63ece6e3ca Change Asset Hint fixup code to not request assets be queued for load. (#4664)
Signed-off-by: amzn-mike <80125227+amzn-mike@users.noreply.github.com>
2021-10-14 11:54:13 -05:00
Chris Galvan 4d4f99767f Merge pull request #4594 from pollend/chore/update-IntersectSegment-cleanup
Clean-up IntersectSegment  and improve documentation
2021-10-14 11:33:01 -05:00
igarri d12c6beb40 Added Default Camera Location to the Viewport Setting Registry
Signed-off-by: igarri <igarri@amazon.com>
2021-10-14 12:44:41 +01:00
Michael Pollind 5a204dc80b chore: remove equality from boolean expression
Signed-off-by: Michael Pollind <mpollind@gmail.com>
2021-10-13 21:26:03 -07:00
Danilo Aimini f7e2d07a4b LYN-7333 | Fix multiple selection by dragging to take focus mode and containers into account. (#4620)
* Change FocusModeNotificationBus's OnEditorFocusChanged arguments to also pass the previous focus root entity id.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Add focus mode and container entity states to the visibility cache for the viewport. Use that data to correctly select entities when a rect is dragged on the viewport.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Minor code adjustments

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Minor fixes and optimizations

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
2021-10-13 14:17:09 -07:00
Danilo Aimini 3c3cde99be LYN-7189 | Outliner - Disable context menu if right clicking on disabled entity (#4651)
* Don't allow right clicking on a non selectable entity in the Outliner

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Also check that the index is valid to still allow the right click context menu to appear on empty areas of the widget.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Change if check to a more readable bool.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
2021-10-13 13:33:59 -07:00
nvsickle fcd6360c26 Merge remote-tracking branch 'upstream/development' into nvsickle/OutlinerDuplicateEntryFixes 2021-10-13 13:24:24 -07:00
Danilo Aimini da3a39a6a0 LYN-7121 | Focus Mode - Make editing a prefab an undoable operation (#4582)
* Refactor the PrefabFocusInterface to differentiate between Public and Internal functions. Introduce PrefabFocusUndo nodes to allow undoing Prefab Edit operations.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Fix selection code to avoid warning message

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Removed changed property from PrefabFocusUndo node

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Switch from size == 0 to empty in EntityOutlinerWidget::OnSelectionChanged

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* condense if check on Prefab Edit context menu item setup

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Correct interface usage in PrefabIntegrationManager (interface was renamed to public)

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Remove rej file that was included by mistake

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>

* Fix missing interface initialization in PrefabFocusTests

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
2021-10-13 12:37:07 -07:00
John f9740ae25c Remove undefined behavior.
Signed-off-by: John <jonawals@amazon.com>
2021-10-13 19:00:40 +01:00
John 06910a7c82 Add API comments.
Signed-off-by: John <jonawals@amazon.com>
2021-10-13 18:58:43 +01:00
John 3c2c52910f Merge branch 'development' into LYN-5265_state_tracker_impl 2021-10-13 18:53:11 +01:00