Editing the Child Actor Class of a Child Actor Component owned by a Parent BP can corrupt the Child BP's state.
This seems related to known serialization issues, where changing a Parent's Property value (or a Property value within a Component owned by the Parent) to the same as that of the Child BP will cause odd behavior.
EXPECTED:
The Child Actor Class is set and Child Actor Template is available for customization.
ACTUAL:
Thie Child Actor Class is set but the Child Actor Template is not available for customization.
EXPECTED:
When clearing the Child Actor Class, the editor never crashes.
ACTUAL:
When clearing the Child Actor Class, the editor crashes (hits an ensure).
UE4Editor-Engine.dll!UChildActorComponent::Serialize(FArchive & Ar) Line 95 C++ UE4Editor-CoreUObject.dll!StaticDuplicateObjectEx(FObjectDuplicationParameters & Parameters) Line 2022 C++ UE4Editor-CoreUObject.dll!StaticDuplicateObject(const UObject * SourceObject, UObject * DestOuter, const FName DestName, EObjectFlags FlagMask, UClass * DestClass, EDuplicateMode::Type DuplicateMode, EInternalObjectFlags InternalFlagsMask) Line 1928 C++ UE4Editor-Engine.dll!AActor::CreateComponentFromTemplate(UActorComponent * Template, const FName InName) Line 903 C++ UE4Editor-Engine.dll!USCS_Node::ExecuteNodeOnActor(AActor * Actor, USceneComponent * ParentComponent, const FTransform * RootTransform, bool bIsDefaultTransform) Line 97 C++ UE4Editor-Engine.dll!USCS_Node::ExecuteNodeOnActor(AActor * Actor, USceneComponent * ParentComponent, const FTransform * RootTransform, bool bIsDefaultTransform) Line 181 C++ UE4Editor-Engine.dll!USimpleConstructionScript::ExecuteScriptOnActor(AActor * Actor, const TInlineComponentArray<USceneComponent *,24> & NativeSceneComponents, const FTransform & RootTransform, bool bIsDefaultTransform) Line 650 C++ UE4Editor-Engine.dll!AActor::ExecuteConstruction(const FTransform & Transform, const FComponentInstanceDataCache * InstanceDataCache, bool bIsDefaultTransform) Line 718 C++ UE4Editor-Engine.dll!AActor::RerunConstructionScripts() Line 491 C++ UE4Editor-Engine.dll!UActorComponent::ConsolidatedPostEditChange(const FPropertyChangedEvent & PropertyChangedEvent) Line 655 C++ UE4Editor-Engine.dll!USceneComponent::PostEditChangeProperty(FPropertyChangedEvent & PropertyChangedEvent) Line 439 C++ UE4Editor-CoreUObject.dll!UObject::PropagatePostEditChange(TArray<UObject *,FDefaultAllocator> & AffectedObjects, FPropertyChangedChainEvent & PropertyChangedEvent) Line 514 C++ UE4Editor-CoreUObject.dll!UObject::PropagatePostEditChange(TArray<UObject *,FDefaultAllocator> & AffectedObjects, FPropertyChangedChainEvent & PropertyChangedEvent) Line 499 C++ UE4Editor-CoreUObject.dll!UObject::PostEditChangeChainProperty(FPropertyChangedChainEvent & PropertyChangedEvent) Line 402 C++ UE4Editor-Engine.dll!UActorComponent::PostEditChangeChainProperty(FPropertyChangedChainEvent & PropertyChangedEvent) Line 693 C++ UE4Editor-PropertyEditor.dll!FPropertyNode::NotifyPostChange(FPropertyChangedEvent & InPropertyChangedEvent, FNotifyHook * InNotifyHook) Line 2354 C++ UE4Editor-PropertyEditor.dll!FPropertyValueImpl::ImportText(const TArray<FObjectBaseAddress,FDefaultAllocator> & InObjects, const TArray<FString,FDefaultAllocator> & InValues, FPropertyNode * InPropertyNode, unsigned int Flags) Line 558 C++ UE4Editor-PropertyEditor.dll!FPropertyValueImpl::ImportText(const FString & InValue, FPropertyNode * InPropertyNode, unsigned int Flags) Line 358 C++ UE4Editor-PropertyEditor.dll!FPropertyValueImpl::SetValueAsString(const FString & InValue, unsigned int Flags) Line 829 C++ UE4Editor-PropertyEditor.dll!FPropertyHandleObject::SetValueFromFormattedString(const FString & InValue, unsigned int Flags) Line 3429 C++ UE4Editor-PropertyEditor.dll!TBaseSPMethodDelegateInstance<0,FPropertyEditor,0,TTypeWrapper<void> __cdecl(void)>::Execute() Line 327 C++ UE4Editor-PropertyEditor.dll!TBaseSPMethodDelegateInstance<0,FPropertyEditor,0,void __cdecl(void)>::ExecuteIfSafe() Line 433 C++ UE4Editor-PropertyEditor.dll!PropertyCustomizationHelpers::SPropertyEditorButton::OnClick() Line 80 C++ UE4Editor-PropertyEditor.dll!TMemberFunctionCaller<PropertyCustomizationHelpers::SPropertyEditorButton,FReply (__cdecl PropertyCustomizationHelpers::SPropertyEditorButton::*)(void) __ptr64>::operator()<>() Line 165 C++ UE4Editor-PropertyEditor.dll!UE4Tuple_Private::TTupleImpl<TIntegerSequence<unsigned int> >::ApplyAfter<TMemberFunctionCaller<PropertyCustomizationHelpers::SPropertyEditorButton,FReply (__cdecl PropertyCustomizationHelpers::SPropertyEditorButton::*)(void) __ptr64> >(TMemberFunctionCaller<PropertyCustomizationHelpers::SPropertyEditorButton,FReply (__cdecl PropertyCustomizationHelpers::SPropertyEditorButton::*)(void)> && Func) Line 497 C++ UE4Editor-PropertyEditor.dll!TBaseSPMethodDelegateInstance<0,PropertyCustomizationHelpers::SPropertyEditorButton,0,FReply __cdecl(void)>::Execute() Line 327 C++ UE4Editor-Slate.dll!TBaseDelegate<FReply>::Execute() Line 537 C++ UE4Editor-Slate.dll!SButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 278 C++ UE4Editor-Slate.dll!FSlateApplication::RoutePointerUpEvent::__l8::<lambda>(const FArrangedWidget & TargetWidget, const FPointerEvent & Event) Line 5087 C++ UE4Editor-Slate.dll!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,FReply <lambda>(const FArrangedWidget &, const FPointerEvent &) >(FSlateApplication * ThisApplication, FEventRouter::FToLeafmostPolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerUpEvent::__l8::FReply <lambda>(const FArrangedWidget &, const FPointerEvent &) & Lambda) Line 239 C++ UE4Editor-Slate.dll!FSlateApplication::RoutePointerUpEvent(FWidgetPath & WidgetsUnderPointer, FPointerEvent & PointerEvent) Line 5076 C++ UE4Editor-Slate.dll!FSlateApplication::ProcessMouseButtonUpEvent(FPointerEvent & MouseEvent) Line 5557 C++ UE4Editor-Slate.dll!FSlateApplication::OnMouseUp(const EMouseButtons::Type Button, const FVector2D CursorPos) Line 5537 C++ UE4Editor-Core.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 1699 C++ UE4Editor-Core.dll!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,0> & NativeWindow, HWND__ * InHWnd, unsigned int InMessage, unsigned __int64 InWParam, __int64 InLParam, int MouseX, int MouseY, unsigned int RawInputFlags) Line 2122 C++ UE4Editor-Core.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 862 C++ UE4Editor-Core.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 709 C++
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-45985 in the post.
0 |
Component | UE - Gameplay - Components |
---|---|
Affects Versions | 4.15, 4.16 |
Target Fix | 4.16.2, 4.17 |
Fix Commit | 3487658 |
---|---|
Main Commit | 3510073 |
Created | Jun 13, 2017 |
---|---|
Resolved | Jun 13, 2017 |
Updated | Apr 27, 2018 |