#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]
- Combined 2D Rotate / Translate widget
- 2D Layer Snap planes
- Some UI stuff to go with it
#codereview michael.noland
[CL 2500349 by Dinesh Kumar in Main branch]
When a selected actor is reinstanced, a details view (displaying details of the actor) needs to be refreshed.
An alternative solution: don't check SDetailsView::ShouldSetNewObjects (refresh always )
OR store an object's hash in SDetailsView (and compare it in the ShouldSetNewObjects)
#codereview Matt.Kuhlenschmidt, Nick.Whiting
[CL 2455053 by Maciej Mroz in Main branch]
[UE-9990]
- nullptr check for ActorComponent that is briefly parented to a non-actor while 'applying instance changes to blueprint'
- emergencing stomping of CachedInstanceData (which appears to be stale) while undoing changes to child actor component and then reperforming changes
- nullptr check for null entry when undoing changes to ChildActorComponent made in level editor
#lockdown James.Golding
#codreview Mark.Audy, Dan.Hertzka
[CL 2450057 by Matthew Griffin in Main branch]
Editor selection outline now uniquely identifies selected components. When a component is selected directly the rest of the actor gets a subdued selection color and the selected compoent(s) get the normal selection color. When the actor is selected directly all components get the normal selection color.
[CL 2438255 by Matthew Griffin in Main branch]
Fixed being able to move components created in a blueprint.
Introduced an FSelectedEditableComponentIterator to iterate over only the movable components
[CL 2435554 by Matthew Griffin in Main branch]
[UE-8152] - All previously existing drag-and-drop functionality now works with components in the world as follows:
1. If multiple actors are selected and the drop is on one of the selected actors, the dropped object will be applied (if possible) to all components in each selected actor.
2. If multiple components are selected and the drop is on one of the selected components, the dropped object will be applied (if possible) to all selected components.
3. If the drop is onto a component that is not selected, it will apply only to that component.
4. If the drop is onto a component within a selected actor, but only one actor is selected, same as #3.
- Fixed crash when trying to apply material to non-existent slot when applying to multiple actors
[CL 2433465 by Matthew Griffin in Main branch]
[UE-8251] [UE-8216] - Can no longer have a component selected in addition to an actor that isn't the component owner
- Fixed a number of undo issues with the new in-tree Actor root node
- Fixed undo issue where going from select component->select different actor->undo would cause the different actor to incorrectly still be flagged as selected
- Fixed component selection visualization undo issues (components were not being modified when override delegates were bound/unbound)
[CL 2425757 by Ben Marsh in Main branch]
In-world component editing
- Proper name is given to a new component on creation and when pasting nodes for IWCE component tree
UE-7864 - fixed as by-product of naming changes
UE-7831 - numbering follows the same pattern as the blueprint SCS editor
UE-7801 - Selection & selection overrides all work for "invisible" components that have an editor-only component
[CL 2419481 by Ben Marsh in Main branch]
In-World Component Editing
- Undo/Redo add component works
- Valid name is automatically assigned to a component when it's added
- Selection in the component list is a transaction
- Gave the SCSEditor the same style as the scene outliner (peach for selected+inactive)
[CL 2419456 by Ben Marsh in Main branch]
- Right-clicking a selected actor will open the context menu, not select the component
- Clicking the selected actor will not select a component if the click also focused the level viewport
- Right-clicking a selected component opens a 1-option context menu to select the owning actor
[CL 2402541 by Dan Hertzka in Main branch]
- Must enable experimental In-World Component Editing
- To select a component in the world, click on the component when the owning actor is already selected
[CL 2401364 by Dan Hertzka in Main branch]
Integrated MarcA's changes to display and edit per actor instance components.
Must set bInWorldBPEditing to true in experimental settings to enable.
#codereview dan.hertzka
[CL 2398903 by Matt Kuhlenschmidt in Main branch]
#jira UE-4791 - LIVE: Level Merging creates a new empty level and deletes only one of the two levels merged
[CL 2350215 by Richard TalbotWatkin in Main branch]
Breaking changes include:
* Rename of GEditorModeTools -> GLevelEditorModeTools to signify that it applies only to the level editor modes
* Addition of FEditorModeRegistry, responsible for managing and creating new editor modes. Modes are no longer registered with an instance of the mode, instead with a mode factory that is able to create a new mode of that type.
* Editor modes now operate on FEditorViewportClients rather than FLevelEditorViewportClients
* Added ability to specify an FEditorModeTools when creating an FEditorViewport
Moved component vizualiser manager handling outside of individual editor modes, and into FLevelEditorViewportClient. This should make it easier to transplant in future.
This work addresses TTP#334640 - EDITOR: Investigate making editor modes a per-'editor' concept
Reviewed by Michael Noland, Matt Kuhlenschmidt
[CL 2109245 by Andrew Rodham in Main branch]
#proj core
#branch UE4
#summary Removed header groups, removed some redundant includes and replaced with forward declarations. Fixed compilation errors.
[CL 2055361 by Mikolaj Sieluzycki in Main branch]