Notable changes:
2696075
- Change ALobbyBeaconHost::Init and ALobbyBeaconHost::SetupLobbyState to be virtual
- Add new function APartyBeaconHost::GetMaxReservations, for getting the maximum number of reservations allowed by the beacon
- Add new delegate and associated RPC to APartyBeaconClient for when reservations on the host beacon are full
- Behavior change: Full reservation fires the new delegate and not ClientSendReservationUpdates
2687900
only sort session search results if there are any
2697435
fixed invalidating crowd's navmesh boundary data, tile salt was not increased during rebuilds
2686334
Added a blueprint library function to get attribute values from an ability system component.
2694255
Abilities that are triggered by events are now triggered by children of the events that trigger them. For example an ability that is triggered by A.B would now also be triggered by A.B.C.
2694384
When triggering abilities send the original tag so triggers that aren't an exact match can choose not to respond.
2692521
Fixes issue using nav mesh walking where AIs would pop up on top of geometry
- We now use the surface closest to the target nav location, rather than tracing downwards from above and using the first surface we find
2699230
Put the Mac.HighPrecisionDisableMouseCoalescing & Mac.HighPrecisionDisableMouseAcceleration CVars into the 'io.' rather than 'r.' groups where they belong.
[CL 2708199 by Ben Zeigler in Main branch]
FTextSnapshot was changed to use a TWeakPtr, however this meant that for text that was generated each frame, the FTextSnapshot would always report that it was out-of-date (even if the generated text was the same as the previous frame) as it no longer had a valid reference point to compare against.
FTextSnapshot has been changed to once again use a TSharedPtr, which will keep the transient instance around long enough for it to be compared with the text from the next frame.
[CL 2707568 by Jamie Dale in Main branch]
CL 2705306
improved CircleDOF quality, added r.DepthOfFieldQuality 4 to trigger slower but higher quality
[CL 2707005 by Martin Mittring in Main branch]
Overview:
- Created a new UObject: USoundConcurrency
- Defines concurrency behaviors and allows for different USoundBase assets (e.g. SoundWave's, SoundCues) to be a part of the same concurrency group.
- This feature will allow a number of powerful techniques to limit and control the number of sound assets which can play concurrently
Details and Additional Related Features:
- USoundBase's not specifying an override or a USoundConcurrency ref will result in no concurrency limits.
- Added support to existing static gameplay functions to provide an optional argument to override the USoundConcurrency of a sound at the point of playing
- Added a few new concurrency resolution rules: Resolve based on priority and Resolve based on volume
- Volume based concurrency resolution is implemented slightly different than the others due to the fact that it's complex/expensive to compute an active sound's volume before it plays due to SoundCue graph traversal. Thus, this step is made after a sound is already made it through one update of the SoundCue graph.
- It's now possible to limit max concurrency (both in groups and per-sound-instance) to the "owner" of a sound. This way different characters/actors can use the same USoundConcurrency ref but have different max-concurrency counts. With this technique, you can, for example, limit dialogue lines per actor without needing to make a USoundConcurrency object for each actor.
- A new optional concurrency behavior was also added at a suggestion from the Epic audio team: the ability to attenuate a sound based on the instance count of a sound in its concurrency group. I.e. as more sounds play in a concurrency group, the sound instances get quieter.
Backwards Compat:
- The old way limited sounds per USoundBase instance (and not different ones). You can recover this behavior by specifying an "Override" settings structure on the USoundBase. When you do this, the feature will only limit sound concurrency per instance and not per group. All existing assets with MaxConcurrency settings will fallback to this behavior.
- The default USoundBase behavior for new USoundBase objects is the same as the old behavior - i.e. max limit of 16 and non-grouped (i.e. will be an override)
#codereview marc.audy
[CL 2706947 by Aaron McLeran in Main branch]
CL 2704794 2704931 2704948 2704962 2705238 2706353 2700643 2705458
Uniform Buffer layout name
and
more debug info for this and other bugs: OR-7159 CRASH: Client crashed at start of match in D3D11Commands.cpp
Adding OptionalData (key value pairs) to the shaders (to put shader name into the shader code for better debugging), affects all RHI, invalidate DDC key for all shaders, cleanup existing code (was adding 0/1/5 bytes and had to compensate in many areas)
OptionalData:
key is a char, value is up to 255 bytes, up to 64K in total
#platformnotify Josh.Adams
[CL 2706923 by Martin Mittring in Main branch]
Largely rewritten Editor Region & Language Settings page. Far less error prone compared to the old implementation. I'd like to do a lot more to make this not so lame in the future - move the game's native culture to something not editor-specific and leverage it as the default for new game targets in the localization dashboard.
[CL 2706823 by Saul Abreu in Main branch]
Change generic IsControllerAssignedToGamepad to return true only for controller 0
#jira UE-21500
#ue4
#platformnotify Josh.Adams
[CL 2706355 by Chris Babcock in Main branch]
Add material shader quality settings.
Enables quality overrides for android and ios (ES2 flavours)
#codereview jack.porter
[CL 2705914 by Allan Bentham in Main branch]
Adds ResetGamepadAssignments, ResetGamepadAssignmentToController, and IsControllerAssignedToGamepad to PlatformMisc and BP nodes
#jira UE-17956
#ue4
#android
#platformnotify Josh.Adams
#codereview Josh.Adams
[CL 2705582 by Chris Babcock in Main branch]
#codereview Josh.Adams, Michael.Trepka, Chris.Babcock, Peter.Sauerbrei, Marcus.Wassmer
(Merging CL 2704512 to the main branch)
[CL 2704584 by Dmitry Rekman in Main branch]
Properties in nodes can be marked as Blueprint searchable. Content will be gathered by FiB system for use in unloaded Blueprints on resave.
"Find References" on variables in the MyBlueprint list or on variable nodes is now more accurate.
Removed FEdGraphSchemaAction_K2AddCallOnVariable and FEdGraphSchemaAction_K2AddDocumentation, both unused in the editor and are a part of the old Blueprint menu system.
FMemberReference::SetSelfMember and FMemberReference::SetExternalMember support accepting a FGuid for the reference.
Variable nodes will assign their variable's Guid to their VariableReference
Added UK2Node::GetFindReferenceSearchString to find the search query for a node to find references to it, currently returns the node title for all nodes but variables (where it tries to do an advanced search to limit to only actual references to the same variable).
Can mark UProperties with metadata that informs the Find-in-Blueprint system to gather the property for searching. Currently FVariableReference in K2Node_Variable is the only thing gathered and only nodes are yet supported by this feature. Will expand to all objects contained within UBlueprint in the future.
When using Find-in-Blueprints, can use category names as functions to filter into child tags and values.
All Find-in-Blueprint data is now stored in an Asset Registry tag titled "FiBData" instead of "FiB", this is to support the new version feature.
#jira UE-21164 - Find-in-Blueprints needs an easier way of marking properties as searchable.
[CL 2702574 by Michael Schoell in Main branch]
This allows you to move the arguments passed to FText::Format if you know you no longer need your own copy (our internal helper Format functions now do this with their temporary data).
I'd previously claimed this was submitted as part of CL# 2702379, but found it as part of a different CL.
[CL 2702398 by Jamie Dale in Main branch]
FText used to always perform two allocations, one for the shared display string pointer, and another for the text history.
This change allows text that is generated at runtime (such as via FText::AsNumber) to allocate its string and history together in a single allocation. Profiling shows that this almost negates the cost of the text history, without having to remove the text history (which is essential for FText serialization).
This means that we never have to take the hit of a second allocation for text which is generated at runtime and never serialized. Should text that was generated at runtime be serialized, then it will call TGeneratedTextData::PersistText to perform the allocation of the shared display string pointer, and allow the text to be saved, gathered, and localized.
This change also removes some allocations from FTextHistory_Base and FFormatArgumentValue, makes the text history types fully movable, and allows you to move the arguments passed to FText::Format if you know you no longer need your own copy.
[CL 2702379 by Jamie Dale in Main branch]
Some platforms that implement stack walking weren't setting this to true, and there was also no default for platforms that don't support stack walking.
This define is only used when building with bUseMallocProfiler turned on.
ReviewedBy Gil.Gribb
#platformnotify Josh.Adams
[CL 2700520 by Jamie Dale in Main branch]
CL# 2698724:
UHT speed improvements:
Code is now generated with tabs, rather than going through a separate Tabify step.
Some expensive temporaries created during iteration and during iteration have been removed.
FFunctionData::FunctionDataMap now uses unique ownership instead of shared ownership.
TCString::Spc (and the new TCString::Tab) now uses a compile-time array instead of one generated at runtime with a static.
TSet::Compact no longer rehashes if no compaction was performed.
TArray assignment no longer reallocs to the same capacity.
[CL 2698780 by Steve Robb in Main branch]