ChaosCacheManager (CCM) is not recording the Observed GeometryCollections (GC) NotifyBreak states between level loading and will default to false if changed from Record to Play.
AChaosCacheManager requires that every observed GeometryCollection(GC) has NotifyBreaks = true. It enforces it with AChaosCacheManager::SetObservedComponentProperties(), where it sets GeomComponent->SetNotifyBreaks(true); if recording and returns to the recorded value GeomComponent->SetNotifyBreaks(ObservedComponent.bHasNotifyBreaks); if not recording.
But upon reopening of a scene the recorded state defaults to false and if the CCM is set from Record to Play all Observed GC will have its NotifyBreak set to false.
This behavior is misleading, since it silently changes the state of all the Observed GCs.
Test results:
UE version Error is reproduced
Vanilla 5.0.3 No
Vanilla 5.1.1 No
Vanilla 5.2.1 Yes
Vanilla 5.3.2 Yes
Vanilla 5.4.4 Yes
Vanilla 5.5.4 Yes
Perforce 5.6 (latest) Yes
Create a blank project
Create a Basic Scene and save it
Add a Cube
With the Cube selected, go to Fracture Mode (SHIFT+6)
Generate>New+ to create a new GeometryCollection (GC)
Save it
Go back to Selection Mode (SHIFT+1)
With GC_Cube selected, enable SimulatePhysics.
With GC_Cube selected, enable NotifyBreaks.
With the GC_Cube selected, go to the Menu>Actor>Chaos>CreateCacheManager
Save it
Select ChaosCacheManager0 in the scene and confirm it is in RECORD mode
Select GC_Cube and confirm NotifyBreak is enabled
Save the scene
Reload the scene by double clicking on it - you can save whatever is not saved at this point
Select ChaosCacheManager0 (CCM) in the scene and set Play mode
Select GC_Cube and confirm NotifyBreak is disabled
Expected result: GC_Cube NotifyBreak should return to it's state once CCM is not recording
Actual result: CCM is losing the state of the observed components, specially if it is saved in RECORD mode, and upon reopening of a scene it will default NotifyBreak to false when in Play mode.
> UnrealEditor-ChaosCaching.dll!AChaosCacheManager::SetObservedComponentProperties(const ECacheMode & NewCacheMode) Line 954 C++
UnrealEditor-ChaosCaching.dll!AChaosCacheManager::PostEditChangeProperty(FPropertyChangedEvent & PropertyChangedEvent) Line 218 C++
UnrealEditor-CoreUObject.dll!UObject::PostEditChangeChainProperty(FPropertyChangedChainEvent & PropertyChangedEvent) Line 577 C++
[Inline Frame] UnrealEditor-PropertyEditor.dll!FPropertyNode::NotifyPostChange::__l14::<lambda_1>::operator()(UObject *) Line 3230 C++
UnrealEditor-PropertyEditor.dll!FPropertyNode::NotifyPostChange(FPropertyChangedEvent & InPropertyChangedEvent, FNotifyHook * InNotifyHook) Line 3234 C++
UnrealEditor-PropertyEditor.dll!FPropertyValueImpl::ImportText(const TArray<FObjectBaseAddress,TSizedDefaultAllocator<32>> & InObjects, const TArray<FString,TSizedDefaultAllocator<32>> & InValues, FPropertyNode * InPropertyNode, unsigned int Flags) Line 566 C++
UnrealEditor-PropertyEditor.dll!FPropertyValueImpl::ImportText(const FString & InValue, FPropertyNode * InPropertyNode, unsigned int Flags) Line 252 C++
UnrealEditor-PropertyEditor.dll!FPropertyValueImpl::ImportText(const FString & InValue, unsigned int Flags) Line 159 C++
UnrealEditor-PropertyEditor.dll!FPropertyHandleByte::SetValue(const unsigned char & NewValue, unsigned int Flags) Line 4024 C++
UnrealEditor-ChaosCachingEditor.dll!FCacheManagerDetails::OnCacheModeChanged(TSharedPtr<FText,1> NewSelection, ESelectInfo::Type SelectInfo) Line 143 C++
[Inline Frame] UnrealEditor-ChaosCachingEditor.dll!Invoke(void(FCacheManagerDetails::*)(TSharedPtr<FText,1>, ESelectInfo::Type)) Line 66 C++
[Inline Frame] UnrealEditor-ChaosCachingEditor.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(FCacheManagerDetails::*)(TSharedPtr<FText,1>, ESelectInfo::Type) &) Line 317 C++
UnrealEditor-ChaosCachingEditor.dll!V::TBaseSPMethodDelegateInstance::ExecuteIfSafe(TSharedPtr<FText,1> <Params_0>, ESelectInfo::Type <Params_1>) Line 299 C++
UnrealEditor-ChaosCachingEditor.dll!TDelegate<void __cdecl(TSharedPtr<FText,1>,ESelectInfo::Type),FDefaultDelegateUserPolicy>::ExecuteIfBound<void,0>(TSharedPtr<FText,1> <Params_0>, ESelectInfo::Type <Params_1>) Line 634 C++
UnrealEditor-ChaosCachingEditor.dll!SComboBox<TSharedPtr<FText,1>>::OnSelectionChanged_Internal(TSharedPtr<FText,1> ProposedSelection, ESelectInfo::Type SelectInfo) Line 617 C++
[Inline Frame] UnrealEditor-ChaosCachingEditor.dll!Invoke(void(SComboBox<TSharedPtr<FText,1>>::*)(TSharedPtr<FText,1>, ESelectInfo::Type)) Line 66 C++
[Inline Frame] UnrealEditor-ChaosCachingEditor.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(SComboBox<TSharedPtr<FText,1>>::*)(TSharedPtr<FText,1>, ESelectInfo::Type) &) Line 317 C++
UnrealEditor-ChaosCachingEditor.dll!V::TBaseSPMethodDelegateInstance::ExecuteIfSafe(TSharedPtr<FText,1> <Params_0>, ESelectInfo::Type <Params_1>) Line 299 C++
UnrealEditor-ChaosCachingEditor.dll!TDelegate<void __cdecl(TSharedPtr<FText,1>,ESelectInfo::Type),FDefaultDelegateUserPolicy>::ExecuteIfBound<void,0>(TSharedPtr<FText,1> <Params_0>, ESelectInfo::Type <Params_1>) Line 634 C++
UnrealEditor-ChaosCachingEditor.dll!SListView<TSharedPtr<FText,1>>::Private_SignalSelectionChanged(ESelectInfo::Type SelectInfo) Line 1007 C++
UnrealEditor-ChaosCachingEditor.dll!STableRow<TSharedPtr<FText,1>>::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 597 C++
UnrealEditor-Slate.dll!FSlateApplication::RoutePointerUpEvent::__l8::<lambda_2>::operator()(const FArrangedWidget & TargetWidget, const FPointerEvent & Event) Line 5346 C++
UnrealEditor-Slate.dll!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,`FSlateApplication::RoutePointerUpEvent'::`8'::<lambda_2>>(FSlateApplication * ThisApplication, FEventRouter::FToLeafmostPolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerUpEvent::__l8::<lambda_2> & Lambda, ESlateDebuggingInputEvent DebuggingInputEvent) Line 456 C++
UnrealEditor-Slate.dll!FSlateApplication::RoutePointerUpEvent(const FWidgetPath & WidgetsUnderPointer, const FPointerEvent & PointerEvent) Line 5332 C++
UnrealEditor-Slate.dll!FSlateApplication::ProcessMouseButtonUpEvent(const FPointerEvent & MouseEvent) Line 5917 C++
UnrealEditor-Slate.dll!FSlateApplication::OnMouseUp(const EMouseButtons::Type Button, const UE::Math::TVector2<double> CursorPos) Line 5873 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 2271 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,1> & NativeWindow, HWND__ * InHWnd, unsigned int InMessage, unsigned __int64 InWParam, __int64 InLParam, int MouseX, int MouseY, unsigned int RawInputFlags) Line 2783 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 1944 C++
[Inline Frame] UnrealEditor-ApplicationCore.dll!WindowsApplication_WndProc(HWND__ *) Line 939 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 945 C++
[External Code]
[Inline Frame] UnrealEditor-ApplicationCore.dll!WinPumpMessages() Line 116 C++
UnrealEditor-ApplicationCore.dll!FWindowsPlatformApplicationMisc::PumpMessages(bool bFromMainLoop) Line 145 C++
UnrealEditor.exe!FEngineLoop::Tick() Line 5806 C++
[Inline Frame] UnrealEditor.exe!EngineTick() Line 69 C++
UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 188 C++
UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 266 C++
UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 317 C++
[External Code]
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-263054 in the post.
1 |
Component | UE - Simulation - Physics |
---|---|
Affects Versions | 5.5.4 |
Target Fix | 5.7 |
Created | Mar 28, 2025 |
---|---|
Updated | Apr 9, 2025 |