- The Slate RHI renderer now uses a larger upfront pool for vertex buffers to avoid many upfront recreations of the vertex buffers
- The window element lists are no longer destroyed each frame and are reused as long as the window that they reference exists. This reduces memory allocations because arrays are no longer destroyed
- Creation of the final rendering batches has now been moved to the rendering thread
- The mapping of layers to element batch arrays has been simplified and is no longer emptied each frame thus avoiding memory allocations
[CL 2560820 by Matt Kuhlenschmidt in Main branch]
* Each quality level allows the definition of the max audio channels to be used
* A sound cue node exists to allow branching behavior based on quality level.
* Wave assets from Wave Player sound nodes will not be loaded if connected only to a branch for a quality level that is not currently selected
* Quality Level to use for stand alone is specified via Game User Settings. Changes to this value will not take effect until the next run.
* Quality Level to use for PIE is specified from the Level Editor Play Settings and can be changed dynamically causing newly played sounds to use the alternate path
* Add SoundNodeAssetReferencer abstract class to operate as an interface for sound nodes that need to have assets loaded dependingo n the sound quality node
[CL 2551249 by Marc Audy in Main branch]
config bCanSuppressAccessViolation added in Engine.ini, "false" by default.
#codereview Nick.Whiting, Michael.Noland
[CL 2544767 by Maciej Mroz in Main branch]
* Avoid unnecessary weak pointer evaluations by caching SoundWave pointer after loading from TAssetPtr
* Encapsulated SoundWave and SoundWaveAssetPtr to prevent getting out of sync
* Prevent sound waves from being garbage collected
[CL 2543325 by Marc Audy in Main branch]
[UE-14605] - Painting scale only visible when painting and proc scale only visible when the asset is open
[UE-14155] - Fixed procedural generation to not add redundant entries for foliage types when simulating. When Foliage Type assets are not used, the foliage type created by the proc foliage simulation will stomp an existing non-asset type with the same mesh (if there is one) in the palette. A significant rework of the foliage palette is needed for a more robust solution.
- Fixed crash when an instance is located exactly on the border between two quadtrees
[CL 2536450 by Dan Hertzka in Main branch]
- Added a UserDataKey metadata property and exposed a filter for set tags (along the same lines as the collision filter)
- Exposed some properties of UTileSet as readable from Blueprints
- Removed the Experimental tag on the per-tile metadata
[UE-13623]
[CL 2528098 by Michael Noland in Main branch]
#jira UE-11822 - Add up vector, roll and scale properties to USplineComponent which can be used when calculating rotations/transforms at a point on the spline
#jira UE-13333 - BP spline components do not update when setting points
#jira UE-3637 - SplineComponent: Add a get transform at distance accessor
Summary of changes:
- FInterpCurve now natively understands looping. A input key can be set, at which point the spline will loop back to its start point. Adjusted FInterpCurve methods to take looped curves into account.
- Fixed bugs in FInterpCurve regarding returning default values (T(ForceInit) instead of T() otherwise FVectors and FQuats are not initialized correctly).
- SplineComponent now holds three separate splines (location, rotation and scale).
- The SplineReparamTable is no longer transient, but is built and saved as part of the asset.
- Changed the SplineComponent API. All methods now take a ESplineCoordinateSpace value which specifies whether the values are intended for use in local or world space. The old methods have been deprecated but not removed (for now).
- bAllowSplineEditingPerInstance is deprecated. A new member (bSplineHasBeenEdited) has superseded it, and is set automatically when editing the spline with the visualizer. Added "Reset to Default" option in the visualizer, which restores the archetype defaults.
- SplineComponentVisualizer determines if spline points have been initialized by the user construction script, and, if so, will disallow editing. This is to conform with the general idea that the UCS always overrides property values.
- Fixed a number of bugs in the visualizer, and added new facilities to allow the scale and rotation to be edited (still work-in-progress).
[CL 2524087 by Richard TalbotWatkin in Main branch]
Newly installed versions of the engine will now attempt to copy the project-agnostic config settings from a previous engine installation. This happens by way of a versioned manifest that copies old versions when the manifest does not exist, or is a different version. This code path is benign for non-installed versions of the engine (or FPaths::ShouldSaveToUserDir() is false).
EditorGameAgnosticSettings and EditorUserSettings ini paths have been renamed to EditorSettings and EditorPerProjectUserSettings respectively to better convey their purpose. In general, most settings should be saved in EditorSettings (project-agnostic) so that they apply regardless of which project is open. We have some way to go migrating existing settings for this to be the case, however.
Some previously per-project configuration files are now project-agnostic (such as Editor.ini, EditorKeyBindings.ini, and EditorLayout.ini)
GEditor->Access...Settings and GEditor->Get...Settings have been removed in favor of direct access of the CDO through GetMutableDefault<> and GetDefault<> respectively. Global config ini filenames that are not set up are now neither loaded nor saved on build machines, to handle the problem of indeterminate state more generically.
This addresses UETOOL-270 (Most editor preferences should be project-agnostic)
[CL 2517558 by Andrew Rodham in Main branch]