Saving main window fancy docking state so all of the dock widgets save/restore visibly and positioning
Added window decoration wrapper inside material editor main window for saving/restoring window position, size, state
Added object names to several QT widgets so that their state could be captured and restored
Moved the code that automatically appended a script variable name to a property description out of the dynamic property class and into the material property conversion utility functions.
Added proper descriptions for the material type and parent material placeholder properties
https://jira.agscollab.com/browse/ATOM-14065
This replaces grid hub usage in the material editor. It allows material editor and other tools to intercommunicate on the local host. This will allow enforcing that there is only one instance of the material editor running. Opening a second instance will forward command line options to the first instance running a local server.
https://jira.agscollab.com/browse/ATOM-15439https://jira.agscollab.com/browse/ATOM-13742
Updated AzFramework::Scene to allow it to serve as the one-stop location for localized singletons. Localized singletons in this case are instance that can only occur once in an environment but multiple times within an application. As an example, this allows settings up a single camera per viewport for instance.
Highlights of changes:
Replaced the original ebuses with interfaces and events for easy of use and performance.
Removed the Entity Context specific code and moved that to new locations within the Entity Context itself.
Allowed basic inheritance. If a subsystem isn't found in a scene the parent can optionally be searched.
Scenes can enter a zombie state and avoid immediately being deleted. This is needed for situations where subsystems can't be destroyed until async calls have been completed.
If Atom isn't initialized and able to produce a ViewportContext, the Editor would crash. This attempts to make the initialization fail a bit more gracefully and fixes the crash in the cases I've tested.
Specifically this:
-Ensures key/mouse up event propagation works across multiple viewports
-Ensures that mouse up events for manipulators only get delivered if there's a corresponding mouse down event
-Also tidies up the "are we done processing events this tick?" logic in ViewportManipulatorController