#jira UE-16413 - Applying materials to BSP takes a long time once shells reach a basic level of complexity
Previously, setting a material or its texture transform on a BSP surface triggered CommitModelSurfaces, which iterated all the ModelComponents in the level and caused (among other things) the physics state to be recreated, a very expensive operation. This is clearly unnecessary when only the surface material or texture transform has changed, so introduced a new path in which only the Material Index Buffers are updated for the level's UModel.
[CL 2613582 by Richard TalbotWatkin in Main branch]
#jira UE-16419 - If you right click on a vert to snap a pivot of a brush to that location, it will automatically reset the pivot back to the origin after your next mouse click.
#reviewedby Matt.Kuhlenschmidt
[CL 2612043 by Richard TalbotWatkin in Main branch]
Fixes for lots of existing modules by removing all dynamically loaded duplicates (this is probably not the correct solution, but is the safest).
#codereview robert.manuszewski
[CL 2610845 by Steve Robb in Main branch]
#jira UE-16405 - Hitch occurs when undoing BSP manipulations
Summary of changes:
- Added 'fuzzy map' for quick look up of nearly equal FVectors, improving the BSP rebuild algorithm from O(n^4) to O(n*m) where m is much smaller than n.
- Added 'fuzzy map' for quick look up of nearly equal FPlanes, improving plane merging from O(n^2) to O(n).
- Changed TTransArrays in UModel to regular arrays, to remove a lot of transaction modifies during BSP rebuild.
- UModel array allocations are now allocated upfront where possible, instead of constant dynamic resizing.
- Optimized algorithm used by UModelComponent::GenerateElements to reduce allocations and simplify map lookups.
- Removed call to ULevel::CommitModelSurfaces in UModelComponent::PostEditUndo, which was causing an enormous amount of unnecessary work on each undo operation. It is now done, as ever, by UWorld::Tick.
#reviewedby Matt.Kuhlenschmidt
[CL 2600444 by Richard TalbotWatkin in Main branch]
#UE-11573 - Overriden property values do not survive property renames in Actor Components
#Branch UE4
#Proj LevelEditor
#info this change is more scoped and more robust than CL 2547405.
[CL 2593389 by Ben Cosh in Main branch]
#jira UE-16765 - Details panel is blank when selecting BSP surfaces if 'Clicking BSP Enables Brush' is disabled.
[CL 2584208 by Richard TalbotWatkin in Main branch]
+ Add a toolbar button for adding additional objects to animate.
+ Add combo buttons to object binding tracks for adding additional property tracks.
+ Make the animation outliner resizable.
+ Add widgets for editing key values to the animation outliner.
+ Add buttons for navigating to previous and next keys, and for adding a key at the current time to the animation outliner.
[CL 2583673 by Frank Fella in Main branch]
Added WorldProperties icons back in as we want to show them in the settings sub menu now to match plugins.
UE-16205
[CL 2581017 by Matthew Griffin in Main branch]
UE-14641 - Fix PushMenu() to use QueryPopupMethod()
Pretty big refactor
Adds IMenu as way to identify menus. Replaces referring to menus as SWindows.
Lots of uses of PushMenu() fixed up to match new API
#codereview Nick.Atamas
[CL 2579277 by Chris Wood in Main branch]
There are now overloads to FUIAction that take a FGetActionCheckState delegate which is able to return any of the entries from ECheckBoxState. FIsActionChecked still exists for backwards compatibility, and converts the returned bool into a ECheckBoxState via a passthrough function.
#codereview Matt.Kuhlenschmidt
[CL 2570717 by Jamie Dale in Main branch]
- PreUnloadCallback() was not called in all cases a module could be unloaded (Buggy!)
- PostLoadCallback() was never called for modules unless the module happened to be loaded with LoadModuleWithCallback(). (Very confusing!)
- These functions were really just called when dynamically unloading and loading modules (not hot reload, and not when starting up or shutting down.) This was very confusing. For the most part you can achieve the same result by overriding StartupModule() and ShutdownModule().
- Additional context: CL 1607584 and https://udn.unrealengine.com/questions/246629/why-is-preunloadcallback-not-called-in-unloadmodul.html
[CL 2562810 by Mike Fricker in Main branch]
'Lighting Components' -> 'Ambient Occlusion' affects both DFAO and SSAO now
Added 'Screen Space Ambient Occlusion' show flag under 'Lighting Features'
[CL 2557658 by Daniel Wright in Main branch]