// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" class ISkeletonTree; class FEditableSkeleton; class IEditableSkeleton; class USkeleton; struct FSkeletonTreeArgs; /** Central registry of skeleton trees */ class FSkeletonTreeManager { public: /** Singleton access */ static FSkeletonTreeManager& Get(); /** Create a skeleton tree for the given an already-existing editable skeleton */ TSharedRef CreateSkeletonTree(const TSharedRef& InEditableSkeleton, const FSkeletonTreeArgs& InSkeletonTreeArgs); /** Create a skeleton tree for the requested skeleton */ TSharedRef CreateSkeletonTree(USkeleton* InSkeleton, const FSkeletonTreeArgs& InSkeletonTreeArgs); /** Edit a USkeleton via FEditableSkeleton */ TSharedRef CreateEditableSkeleton(USkeleton* InSkeleton); private: /** Hidden constructor */ FSkeletonTreeManager() {} private: /** Map from skeletons to editable skeletons */ TMap> EditableSkeletons; };