Otherwise we can hit callbacks before editor has a chance to refresh, and crash on stale pointer access
#jira UE-140971
#preflight 6202eb2a7e40979d33ba9fd7
#rb lauren.barnes
#ROBOMERGE-OWNER: ben.ingram
#ROBOMERGE-AUTHOR: ben.ingram
#ROBOMERGE-SOURCE: CL 18913293 in //UE5/Release-5.0/... via CL 18919947 via CL 18920839
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v916-18915374)
[CL 18921506 by ben ingram in ue5-main branch]
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971
[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035
[CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]
Primary goal is to reduce amount of code duplicated across different parameter types, and reduce amount of boilerplate required to add new parameters
The main part are new types FMaterialParameterValue, and FMaterialParameterMetadata (both in MaterialTypes.h). FMaterialParameterValue is a tagged union/variant type, that can represent any material parameter value. FMaterialParameterMetadata contains a value, along with various editor-only fields that describe how that value is used.
Using this new type, many places that previously included separate APIs for each parameter type collapse to a single API that operates on a FMaterialParameterValue/FMaterialParameterMetadata. Code that previously had a block copy/pasted for each parameter type can be replaced with a loop that iterates over all parameter types.
Also includes some API cleanup that should improve (editor) performance. Previously we had APIs GetAllScalarParameters, GetAllVectorParameters, etc, which would return a list of FMaterialParameterInfos for each parameter of the given type. Code would often query all parameters, then loop over the results and lookup each parameter value. Now there's a new API, GetAllParametersOfType, which returns a list of all FMaterialParameterMetadata of a given type. It's easy to just collect the values at the time we're building the list of parameters, so this saves the work of looking up each value individually.
#jira none
#rb lauren.barnes
[FYI] zousar.shaker
#ROBOMERGE-SOURCE: CL 17360722 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)
[CL 17360730 by ben ingram in ue5-release-engine-test branch]
[at]lauren.barnes
#ROBOMERGE-SOURCE: CL 15406937 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)
[CL 15406941 by sebastian nordgren in ue5-main branch]
SObjectPropertyEntryBox no longer has a CustomResetToDefault argument that was being ignored. Instead, all uses of it now directly use the FDetailWidgetRow OverrideResetToDefault().
#rb lauren.barnes
[CL 14444450 by sebastian nordgren in ue5-main branch]
#rnx
#rb none
#ROBOMERGE-SOURCE: CL 10869241 via CL 10869527 via CL 10869904
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870586 by ryan durand in Main branch]