UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GeometryCollectionClusteringUtility.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7
9
11{
12public:
41
42 // Same as ClusterBonesUnderNewNode, but specify the parent of the new node instead of a sibling
44
47
50
53
56
59
62
65
68
71
74
77
79 static CHAOS_API void RecursiveAddAllChildren(const TManagedArray<TSet<int32>>& Children, int32 SourceBone, TArray<int32>& BonesOut);
80
86
94 static CHAOS_API void RecursivelyUpdateChildBoneNames(int32 BoneIndex, const TManagedArray<TSet<int32>>& Children, TManagedArray<FString>& BoneNames, bool OverrideBoneNames = false);
95
99
102
105
108
111
114
116 static CHAOS_API void RenameBone(FGeometryCollection* GeometryCollection, int32 BoneIndex, const FString& NewName, bool UpdateChildren = true);
117
120
123
126
129
132
134
136
137private:
138 // #todo: intend to remove reliance on custom attributes for slider by making use of Rest/Dynamic collections
139 static void ResetSliderTransforms(TManagedArray<FTransform>& ExplodedTransforms, TManagedArray<FTransform>& Transforms);
140
141 static void RecursivelyUpdateHierarchyLevelOfChildren(TManagedArray<int32>& Levels, const TManagedArray<TSet<int32>>& Children, int32 ParentElement);
142
144};
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition GeometryCollectionClusteringUtility.h:11
static CHAOS_API int32 PickBestNodeToMergeTo(const FManagedArrayCollection *Collection, const TArray< int32 > &SourceElements)
Definition GeometryCollectionClusteringUtility.cpp:394
static CHAOS_API void GetRootBones(const FGeometryCollection *GeometryCollection, TArray< int32 > &RootBonesOut)
Definition GeometryCollectionClusteringUtility.cpp:450
static CHAOS_API void GetClusteredBonesWithCommonParent(const FGeometryCollection *GeometryCollection, int32 SourceBone, TArray< int32 > &BonesOut)
Definition GeometryCollectionClusteringUtility.cpp:474
static CHAOS_API void RenameBone(FGeometryCollection *GeometryCollection, int32 BoneIndex, const FString &NewName, bool UpdateChildren=true)
Definition GeometryCollectionClusteringUtility.cpp:381
static CHAOS_API int32 FindLowestCommonAncestor(const FManagedArrayCollection *GeometryCollection, const TArray< int32 > &SelectedBones)
Definition GeometryCollectionClusteringUtility.cpp:887
static CHAOS_API bool ContainsMultipleRootBones(FGeometryCollection *GeometryCollection)
Definition GeometryCollectionClusteringUtility.cpp:428
static CHAOS_API void CollapseHierarchyOneLevel(FGeometryCollection *GeometryCollection, TArray< int32 > &SourceElements)
Definition GeometryCollectionClusteringUtility.cpp:317
static CHAOS_API void ClusterBonesByContext(FGeometryCollection *GeometryCollection, int32 MergeNode, const TArray< int32 > &SourceElementsIn)
Definition GeometryCollectionClusteringUtility.cpp:303
static CHAOS_API void UpdateHierarchyLevelOfChildren(FGeometryCollection *GeometryCollection, int32 ParentElement)
Definition GeometryCollectionClusteringUtility.cpp:677
static CHAOS_API bool RemoveClustersOfOnlyOneChild(FGeometryCollection *GeometryCollection)
Definition GeometryCollectionClusteringUtility.cpp:938
static CHAOS_API void GetLeafBones(const FManagedArrayCollection *GeometryCollection, int BoneIndex, bool bOnlyRigids, TArray< int32 > &LeafBonesOut)
Definition GeometryCollectionClusteringUtility.cpp:825
static CHAOS_API int32 ClusterBonesUnderNewNode(FGeometryCollection *GeometryCollection, const int32 InsertAtIndex, const TArray< int32 > &SelectedBones, bool CalcNewLocalTransform, bool Validate=true)
Definition GeometryCollectionClusteringUtility.cpp:13
static CHAOS_API bool RemoveDanglingClusters(FGeometryCollection *GeometryCollection)
Definition GeometryCollectionClusteringUtility.cpp:979
static CHAOS_API void RecursiveAddAllChildren(const TManagedArray< TSet< int32 > > &Children, int32 SourceBone, TArray< int32 > &BonesOut)
Definition GeometryCollectionClusteringUtility.cpp:585
static CHAOS_API int32 ClusterBonesUnderNewNodeWithParent(FGeometryCollection *GeometryCollection, const int32 ParentOfNewNode, const TArray< int32 > &SelectedBones, bool CalcNewLocalTransform, bool Validate=true)
Definition GeometryCollectionClusteringUtility.cpp:22
static CHAOS_API bool NodeExistsOnThisBranch(const FGeometryCollection *GeometryCollection, int32 TestNode, int32 TreeElement)
Definition GeometryCollectionClusteringUtility.cpp:361
static CHAOS_API void GetBonesToLevel(const FGeometryCollection *GeometryCollection, int32 Level, TArray< int32 > &BonesOut, bool bOnlyClusteredOrRigid=true, bool bSkipFiltered=true)
Definition GeometryCollectionClusteringUtility.cpp:521
static CHAOS_API void CollapseSelectedHierarchy(int8 Level, const TArray< int32 > &SelectedBones, FGeometryCollection *GeometryCollection)
Definition GeometryCollectionClusteringUtility.cpp:768
static CHAOS_API void ClusterBonesUnderExistingNode(FGeometryCollection *GeometryCollection, const TArray< int32 > &SourceElements)
Definition GeometryCollectionClusteringUtility.cpp:213
static CHAOS_API void ClusterBonesUnderExistingRoot(FGeometryCollection *GeometryCollection, const TArray< int32 > &SourceElements)
Definition GeometryCollectionClusteringUtility.cpp:154
static CHAOS_API void ClusterAllBonesUnderNewRoot(FGeometryCollection *GeometryCollection, FName RootName=NAME_None, bool bUpdateChildBoneNames=true)
Definition GeometryCollectionClusteringUtility.cpp:66
static CHAOS_API void MoveUpOneHierarchyLevel(FGeometryCollection *GeometryCollection, const TArray< int32 > &SelectedBones)
Definition GeometryCollectionClusteringUtility.cpp:858
static CHAOS_API void GetChildBonesAtLevel(const FGeometryCollection *GeometryCollection, int32 SourceBone, int32 Level, TArray< int32 > &BonesOut)
Definition GeometryCollectionClusteringUtility.cpp:555
static CHAOS_API void GetChildBonesFromLevel(const FGeometryCollection *GeometryCollection, int32 SourceBone, int32 Level, TArray< int32 > &BonesOut)
Definition GeometryCollectionClusteringUtility.cpp:494
static CHAOS_API int32 GetParentOfBoneAtSpecifiedLevel(const FGeometryCollection *GeometryCollection, int32 SourceBone, int32 Level, bool bSkipFiltered=false)
Definition GeometryCollectionClusteringUtility.cpp:595
static CHAOS_API void ValidateResults(FGeometryCollection *GeometryCollection)
Definition GeometryCollectionClusteringUtility.cpp:801
static CHAOS_API void CollapseLevelHierarchy(int8 Level, FGeometryCollection *GeometryCollection)
Definition GeometryCollectionClusteringUtility.cpp:722
static CHAOS_API void RecursivelyUpdateChildBoneNames(int32 BoneIndex, const TManagedArray< TSet< int32 > > &Children, TManagedArray< FString > &BoneNames, bool OverrideBoneNames=false)
Definition GeometryCollectionClusteringUtility.cpp:631
static CHAOS_API bool IsARootBone(const FGeometryCollection *GeometryCollection, int32 InBone)
Definition GeometryCollectionClusteringUtility.cpp:466
Definition GeometryCollection.h:32
Definition NameTypes.h:617
Definition Array.h:670
Definition ManagedArray.h:1099
Definition CollectionBoundsFacade.cpp:13
Definition ManagedArrayCollection.h:56