// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/ContainersFwd.h" // IWYU pragma: keep #define UE_API FRACTUREENGINE_API class FGeometryCollection; struct FDataflowTransformSelection; struct FManagedArrayCollection; class FName; class FFractureEngineSelection { public: static UE_API void GetRootBones(const FManagedArrayCollection& Collection, TArray& RootBonesOut); static UE_API void GetRootBones(const FManagedArrayCollection& Collection, FDataflowTransformSelection& TransformSelection); static UE_API void SelectParent(const FManagedArrayCollection& Collection, TArray& SelectedBones); static UE_API void SelectParent(const FManagedArrayCollection& Collection, FDataflowTransformSelection& TransformSelection); static UE_API void SelectChildren(const FManagedArrayCollection& Collection, TArray& SelectedBones); static UE_API void SelectChildren(const FManagedArrayCollection& Collection, FDataflowTransformSelection& TransformSelection); static UE_API void SelectSiblings(const FManagedArrayCollection& Collection, TArray& SelectedBones); static UE_API void SelectSiblings(const FManagedArrayCollection& Collection, FDataflowTransformSelection& TransformSelection); static UE_API void SelectLevel(const FManagedArrayCollection& Collection, TArray& SelectedBones); static UE_API void SelectLevel(const FManagedArrayCollection& Collection, FDataflowTransformSelection& TransformSelection); static UE_API void SelectContact(FGeometryCollection& GeometryCollection, TArray& SelectedBones); static UE_API void SelectContact(FGeometryCollection& GeometryCollection, FDataflowTransformSelection& TransformSelection); static UE_API void SelectLeaf(const FGeometryCollection& GeometryCollection, TArray& SelectedBones); static UE_API void SelectLeaf(const FGeometryCollection& GeometryCollection, FDataflowTransformSelection& TransformSelection); static UE_API void SelectCluster(const FGeometryCollection& GeometryCollection, TArray& SelectedBones); static UE_API void SelectCluster(const FGeometryCollection& GeometryCollection, FDataflowTransformSelection& TransformSelection); static UE_API void SelectByPercentage(TArray& SelectedBones, const int32 Percentage, const bool Deterministic, const float RandomSeed); static UE_API void SelectByPercentage(FDataflowTransformSelection& TransformSelection, const int32 Percentage, const bool Deterministic, const float RandomSeed); static UE_API void SelectBySize(FGeometryCollection& GeometryCollection, TArray& SelectedBones, const float SizeMin, const float SizeMax); static UE_API void SelectBySize(FGeometryCollection& GeometryCollection, FDataflowTransformSelection& TransformSelection, const float SizeMin, const float SizeMax); static UE_API void SelectByVolume(FGeometryCollection& GeometryCollection, TArray& SelectedBones, const float VolumeMin, const float VolumeMax); static UE_API void SelectByVolume(FGeometryCollection& GeometryCollection, FDataflowTransformSelection& TransformSelection, const float VolumeMin, const float VolumeMax); static UE_API bool IsBoneSelectionValid(const FManagedArrayCollection& Collection, const TArray& SelectedBones); static UE_API bool IsSelectionValid(const FManagedArrayCollection& Collection, const TArray& SelectedItems, const FName ItemGroup); }; #undef UE_API