Commit Graph

930 Commits

Author SHA1 Message Date
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
John 2e7c8a0fd2 Double click entity in prefab to enter FocusMode.
Signed-off-by: John <jonawals@amazon.com>
2021-10-13 18:49:49 +01:00
John 65f3f26339 Fix issue with activating/deactivating FocusMode.
Signed-off-by: John <jonawals@amazon.com>
2021-10-13 18:19:06 +01:00
hultonha 48a74ca93d Remove clearFocus from EditorTransformComponentSelection duplicate Entity (#4571)
* remove clearFocus from EditorTransformComponentSelection duplicate entity

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

* remove extra unneeded calls to RequestWrite

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

* update PrefabPublicHandler to use SetSelectedEntities

Signed-off-by: hultonha <hultonha@amazon.co.uk>
2021-10-13 10:18:21 +01:00
Steve Pham ccd60513f1 Fix prefab close dialog Editor crash on Linux (#4623)
Signed-off-by: Steve Pham <spham@amazon.com>
2021-10-12 18:34:55 -07:00
Danilo Aimini 1cb26a31f8 LYN-7195 + LYN-7185 + LYN-5301 | Hide viewport helpers for entities out of focus + selection shortcut adjustments (#4615)
* Light refactoring of selection logic. Only draw helpers for selectable entities according to Editor Focus Mode and Container Entity systems.

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

* When Escape is pressed, clear the Prefab Focus.

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

* Alter Ctrl+A and Ctrl+Shift+I to take editor focus mode and container entity behaviors into account.

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

* Remove redundant comments and reduce footprint of tests.

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

* Introduce loop protection, as GetParentId is known to loop in some situations possibly causing timeouts.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
2021-10-12 15:53:38 -07:00
Guthrie Adams 2b72f7b100 Merge pull request #4642 from aws-lumberyard-dev/Atom/guthadam/overriding_property_asset_ctrl_thumbnails
PropertyAssetCtrl and ThumbnailPropertyCtrl support custom thumbnail image
2021-10-12 17:27:03 -05:00
Guthrie Adams f34811c373 Merge pull request #4639 from aws-lumberyard-dev/Atom/guthadam/thumbnail_bus_passes_const_qpixmap
Updated thumbnail notification bus to use const QPixmap&
2021-10-12 16:47:26 -05:00
Guthrie Adams 4f539b0eb7 fixed comments
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-10-12 16:17:19 -05:00
Guthrie Adams f7e08d1c4b PropertyAssetCtrl and ThumbnailPropertyCtrl support custom thumbnail images
• PropertyAssetCtrl was previously extended with ThumbnailPropertyCtrl to optionally display a thumbnail and floating zoomed in preview of the selected asset.
• This change allows overriding the image that comes from the thumbnail system with a custom image provided as an attribute. The custom image can be specified as either a file path or a buffer containing a serialized QPixmap.
• This will be used by the material system in the editor to provide a dynamically rendered image of the material with property overrides applied so that the image will update as the user customizes their material.

Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-10-12 15:36:19 -05:00
Danilo Aimini 6318247b3d LYN-7279 + LYN-7192 | Focus Mode - Container unit tests + Clear container entity open state on new level load (#4558)
* Change SetContainerOpenState to SetContainerOpen.

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

* Introduce Clear function to avoid retaining all lingering open states when switching contexts/loading a new level.

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

* Minor FocusMode fixture refactors to support ContainerEntity tests

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

* Introduce tests for the ContainerEntity API

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

* Add include to fix issue with EntityContextId not being defined.

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

* Minor comment fixes. Moved environment clear functions to TearDown function of test fixture.

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

* Use default editor context id in ContainerEntitySystemComponent

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

* Revert previous change as the EditorEntityContextId would not be initialized correctly on ContainerEntitySystemComponent Activate.

Signed-off-by: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com>
2021-10-12 13:34:51 -07:00
Guthrie Adams 8487373b0c Updated thumbnail notification bus to use const QPixmap&
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-10-12 14:41:26 -05:00
Michael Pollind 7ca85460f7 Bug Fix: Improve display of Viewport UI (#4596)
- always show controls on top of main ui
- Tool window does not show visually in toolbar

issue: https://github.com/o3de/o3de/issues/4380

Signed-off-by: Michael Pollind <mpollind@gmail.com>
2021-10-12 09:41:11 +01:00
hultonha 5c859cb134 Fix camera drift issues (#4576)
* remove some unused code in RenderViewportWidget and make viewing devicePixelRatioF easier

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

* updates to how cursor positions are calculate to handle the viewport widget moving

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

* remove optional for previous position

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

* add test to capture error with moving the widget

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

* minor comment updates before publishing PR

Signed-off-by: hultonha <hultonha@amazon.co.uk>
2021-10-11 16:23:24 +01:00
John 1cdb34326b Merge branch 'development' into LYN-5265_state_tracker_impl 2021-10-11 08:38:54 +01:00
Steve Pham 73f8537030 Fix Issue saving new assets in Asset Editor on Linux (#4537)
* Add helper function to apply a selected file filter from a file dialog to the result filename if needed
* Add platform traits to restrict the use of the helper function on platforms that need to apply it
* Fix building of file filters of multiple extensions for a file type

Signed-off-by: Steve Pham <spham@amazon.com>
2021-10-08 11:41:46 -07:00
Terry Michaels 00b938b6a7 Merge pull request #4212 from ppinfel/component-doc-links
Fixes various component's help URL links to correct o3de.org page
2021-10-08 10:30:13 -05:00