- Window menu is now sectioned and labeled based on the current editor. There's now a local workspace root member in FTabManager and a workspace category in FAssetEditorToolkit (both are FWorkspaceItem objects). Individual editors attach their local category to the tab manager's local root. Workflow app modes have their own category members that are swapped out when the mode changes.
- Finally, the AssetEditorCategory of FWorkspaceMenuStructure has been removed entirely.
- Replaced the AddMenuSeparator() call in FTabManager::PopulateSpawnerMenu_Helper() with a section of the same title as the workspace category.
- Tab spawner menu entries for the local editor now properly show the icon of the associated tab. To accomplish this it was necessary to change FWorkflowTabFactory::TabIcon to be an FSlateIcon instead of an FSlateBrush*. All factory instances have been updated accordingly.
- Added & updated lots of icons! (those missing will be TTP'd)
- The nomad tab spawner section (named "General" in the menu) has been largely compressed into the Developer Tools submenu, which has also been organized into sections for readability.
- Unreal frontend options were also moved into a context menu within the General section
- Moved all experimental tools to their own section of the Window menu. When they're no longer experimental they should register as nomads in the appropriate category
- Undo history now under Edit menu
[CL 2324285 by Dan Hertzka in Main branch]
TTP #343071 CORE: FCoreDelegates should not have references to UObjects.
#codereview Robert.Manuszewski
[CL 2317144 by Mikolaj Sieluzycki in Main branch]
#ttp 345296 - NUX: When creating collision in static mesh editor, enable collision viewing so you can see result
#branch UE4
#change Also added a param to AddPrim to specify whether we want to clear the selection, just to remove duplicate code.
reviewed by Thomas.Sarkanen
[CL 2305555 by Andrew Brown in Main branch]
#ttp 345297 - NUX: Improve workflow for SME collision editing
#branch UE4
#change Modified Collision options to say 'Add' to indicate you're adding primitives and not replacing existing.
#change When adding a new collision primitive, it now does a quick check to see if there's another primitive that's the same and if so, moves the new one slightly so they don't overlap - the hope is that this also makes it clearer that you're adding primitives.
Note: Also includes change from 2280280 which enables Show Collision if it's modified
reviewed by Thomas.Sarkanen
[CL 2299231 by Andrew Brown in Main branch]
- if any changes to collision or custom collision don't generate
- advanced option to let you disable collision generation
[CL 2292968 by Ori Cohen in Main branch]
* Distance field building is now asynchronous and stored in the DDC separately from static mesh data.
* Added OcclusionMaxDistance and Contrast properties to Movable sky light
* Using the GBuffer normal instead of the generated distance field normal, fixes artifacts on two-sided materials and between modular pieces. Also saves about .7ms / 4.5ms
* Points in the distance field are only considered 'inside' the mesh if > 50% of all rays traced hit a backface. Most meshes can have a valid distance field generated with this heuristic. Meshes without a distance field representation can receive occlusion.
* Fortnite two-sided foliage with world position offset animation works fine now
* Using the resulting bent normal for diffuse lighting, improves consistency in occluded corners
* Resulting bent normal is also used to occlude skylight specular using an approximate cone-cone intersection, prevents leaking where SSR is not available
* Fixed stationary skylights not getting lightmap mixing
* Reflection captures now work with the movable skylight, which adds its diffuse contribution to IndirectIrradiance so their lightmap mixing works
* Added new show flag to visualize mesh distance fields, which ray traces through the distance fields and gives a sense of their shape
[CL 2276435 by Daniel Wright in Main branch]
- Inverse was one of the main reasons of crashes via lots of functions. Seems making default Inverse to be safer version seems better.
[CL 2255081 by Lina Halper in Main branch]
#ttp 340613 - FIXIF: EDITOR:ANALYTICS: Static Mesh Editor Instrumentation Pass
#branch UE4
#added Added analytics for various static mesh editor usage, making sure not to spam events when spinboxes are used and only report when the value actually changes.
#added Added analytics whenever an asset is reimported (if via an editor, the editor will then report that it was it that did the reimporting)
reviewed by Thomas.Sarkanen
[CL 2229618 by Andrew Brown in Main branch]
#ttp 340526 - Static mesh editor: changing the static meshes normals setting from "import normals" to "compute normals" doesn't change the mesh until the user reimports the asset
#branch UE4
#add Added button to reimport based on the current import options (no button will appear if there are no options to modify)
#change Modified import options so they get marked as dirty until they are reimported (button will be unclickable unless they are)
reviewed by Thomas.Sarkanen
[CL 2217535 by Andrew Brown in Main branch]
#ttp 339600 - Move static mesh stat info out of canvas and into StaticMeshEditor Slate UI
#branch UE4
#proj Editor.EditorStyle, Editor.StaticMeshEditor
#add Added a parameter to the StaticMeshEditorViewportClient to pass in a weak ptr to the viewport widget which owns it. This is so that, on Draw calls, we can update one of its child Slate widgets.
#add Created a struct SStaticMeshEditorViewport::FOverlayTextItem which represents one item of overlay text, and a method SStaticMeshEditorViewport::PopulateOverlayText() which populates the Slate SVerticalBox in the SOverlay with these text blocks.
#add Created a couple of new SlateEditorStyles - shadowed text (normal), and shadowed text (error).
#change Changed FStaticMeshEditorViewportClient::DrawCanvas() to populate an FOverlayTextItem array and call PopulateOverlayText on the owning widget to update the overlay widget.
#reviewedby Chris.Wood
[CL 2169037 by Richard TalbotWatkin in Main branch]
#ttp 338927 - EDITOR: Static Mesh: Unable to duplicate collision primitives with hotkey
#branch UE4
#change W input was getting swallowed by the input to switch between widget maninpulation types - converted this over to use the UICommands that are setup
reviewed by Thomas.Sarkanen
[CL 2111775 by Andrew Brown in Main branch]