FCustomizableInstanceDetails::FillChildrenMap() unconditionally registers parent-child relationships via __ParentParamName metadata without verifying the parent exists in the active parameter list. When an intermediate Object Group uses "All Options" (COGT_ALL), no UI parameter is generated for it, yet its children still reference it as parent — causing the rendering loop to skip them (they have ParamHasParent = true) while the parent is never iterated to draw them recursively. Confirmed unpatched in both UE 5.7 and UE5Main.
Fix: Add an ActiveParameterNames check in FillChildrenMap so that parent-child registration only occurs when the parent is present in the drawable parameter set. See CustomizableInstanceDetails.cpp:914-925.
void FCustomizableInstanceDetails::FillChildrenMap(int32 ParamIndexInObject, const TSet<FString>& ActiveParameterNames)
{
const UCustomizableObject* CustomizableObject = CustomInstance->GetCustomizableObject();
const FString& ParamName = CustomizableObject->GetParameterName(ParamIndexInObject);
FMutableParamUIMetadata UIMetadata = CustomizableObject->GetParameterUIMetadata(ParamName);
if (const FString* ParentName = UIMetadata.ExtraInformation.Find(FString("__ParentParamName")))
{
// FIX: Only register as a child if the parent parameter is actually going to be drawn
if (ActiveParameterNames.Contains(*ParentName))
{
ParamChildren.Add(*ParentName, ParamIndexInObject);
ParamHasParent.Add(ParamIndexInObject, true);
}
}
}
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-372150 in the post.
| 2 |
| Component | UE - Anim - Mutable |
|---|---|
| Affects Versions | 5.7 |
| Created | Mar 31, 2026 |
|---|---|
| Updated | Jun 2, 2026 |