Description

In the blueprint editor when selecting multiple components and resetting a property that exists on both components to its default value, when the components had different default values the editor runs into an ensure and both components' properties are reset to one of the default values which is incorrect for the others.

For example: create a parent blueprint with two StaticMeshComponents with different values for TickInterval. Create a child blueprint that overrides TickInterval for both components. Now select both components in the Blueprint Editor and attempt to reset the property. The reset doesn't work as intended since both components receive the same value.

Steps to Reproduce
  • Create a blueprint BP_Base
  • Add a StaticMeshComponent and set its Tick Interval to 1.0
  • Add another StaticMeshComponent and set its Tick Interval to 3.0
  • Create a blueprint BP_Child that inherits from BP_Base
  • In BP_Child select both the inherited SMComps and override both their Tick Intervals to 5.0
  • Press the "Reset this property to its default value" button
    • Observe that engine code runs into an ensure (see callstack)
    • Also observe that both components had their TickInterval set to 1.0, rather than 1.0 and 3.0 respectively
  • Expected: Both comps are reset to their individual default values 1.0 and 3.0
Callstack

FPropertyNode::GetDefaultValueAsString(bool) PropertyNode.cpp:2577
FPropertyValueImpl::ResetToDefault() PropertyHandleImpl.cpp:1007
SDetailSingleItemRow::OnResetToDefaultClicked() SDetailSingleItemRow.cpp:769
[Inlined] Invoke(void (SDetailSingleItemRow::*)() const,SDetailSingleItemRow *&) Invoke.h:66
[Inlined] UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int> >::ApplyAfter(void (SDetailSingleItemRow::*&)() const,SDetailSingleItemRow *&) Tuple.h:311
TBaseSPMethodDelegateInstance<1,SDetailSingleItemRow const ,1,void __cdecl(void),FDefaultDelegateUserPolicy>::ExecuteIfSafe() DelegateInstancesImpl.h:298
TDelegate<void __cdecl(void),FDefaultDelegateUserPolicy>::ExecuteIfBound<void,0>() DelegateSignatureImpl.inl:570
[Inlined] FUIAction::Execute() UIAction.h:139
SToolBarButtonBlock::OnClicked() SToolBarButtonBlock.cpp:450
[Inlined] Invoke(FReply (SToolBarButtonBlock::*)(),SToolBarButtonBlock *&) Invoke.h:66
[Inlined] UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int> >::ApplyAfter(FReply (SToolBarButtonBlock::*&)(),SToolBarButtonBlock *&) Tuple.h:311
TBaseSPMethodDelegateInstance<0,SToolBarButtonBlock,1,FReply __cdecl(void),FDefaultDelegateUserPolicy>::Execute() DelegateInstancesImpl.h:281
TDelegate<FReply __cdecl(void),FDefaultDelegateUserPolicy>::Execute() DelegateSignatureImpl.inl:549
SButton::ExecuteOnClick() SButton.cpp:465
SButton::OnMouseButtonUp(const FGeometry &,const FPointerEvent &) SButton.cpp:390
[Inlined] FSlateApplication::RoutePointerUpEvent::__l8::<lambda_3>::operator()(const FArrangedWidget &,const FPointerEvent &) SlateApplication.cpp:5223
FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,`FSlateApplication::RoutePointerUpEvent'::`8'::<lambda_3> >(FSlateApplication *,FToLeafmostPolicy,FPointerEvent,const <lambda_3> &,ESlateDebuggingInputEvent) SlateApplication.cpp:442
FSlateApplication::RoutePointerUpEvent(const FWidgetPath &,const FPointerEvent &) SlateApplication.cpp:5209
FSlateApplication::ProcessMouseButtonUpEvent(const FPointerEvent &) SlateApplication.cpp:5778
FSlateApplication::OnMouseUp(Type,TVector2<double>) SlateApplication.cpp:5743
FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage &) WindowsApplication.cpp:2236
FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,1> &,HWND__ *,unsigned int,unsigned long long,long long,int,int,unsigned int) WindowsApplication.cpp:2743
FWindowsApplication::ProcessMessage(HWND__ *,unsigned int,unsigned long long,long long) WindowsApplication.cpp:1912
[Inlined] WindowsApplication_WndProc(HWND__ *,unsigned int,unsigned long long,long long) WindowsApplication.cpp:923
FWindowsApplication::AppWndProc(HWND__ *,unsigned int,unsigned long long,long long) WindowsApplication.cpp:928
<unknown> 0x00007fff57dee858
<unknown> 0x00007fff57dee299
[Inlined] WinPumpMessages() WindowsPlatformApplicationMisc.cpp:116
FWindowsPlatformApplicationMisc::PumpMessages(bool) WindowsPlatformApplicationMisc.cpp:145
FEngineLoop::Tick() LaunchEngineLoop.cpp:5760
[Inlined] EngineTick() Launch.cpp:61
GuardedMain(const wchar_t *) Launch.cpp:190
LaunchWindowsStartup(HINSTANCE__ *,HINSTANCE__ *,char *,int,const wchar_t *) LaunchWindows.cpp:247
WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) LaunchWindows.cpp:298
[Inlined] invoke_main() 0x00007ff6d6d5c6ea
__scrt_common_main_seh() 0x00007ff6d6d5c6c9
<unknown> 0x00007fff56187614
<unknown> 0x00007fff580c26b1

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-196987 in the post.

0
Login to Vote

Unresolved
ComponentUE - Gameplay - Blueprint Editor
Affects Versions5.25.3
Target Fix5.5
CreatedOct 2, 2023
UpdatedFeb 16, 2024