darkczar
(darkczar)
October 13, 2020, 5:34pm
1
How should I deal with these deprecated flags? I need to know if my curves are driving materials or morph targets… what replaces them?
enum EAnimAssetCurveFlags
{
AACF_NONE = 0,
AACF_DriveMorphTarget_DEPRECATED = 0x00000001,
AACF_DriveAttribute_DEPRECATED = 0x00000002,
AACF_Editable = 0x00000004,
AACF_DriveMaterial_DEPRECATED = 0x00000008,
AACF_Metadata = 0x00000010,
AACF_DriveTrack = 0x00000020,
AACF_Disabled = 0x00000040,
}
darkczar
(darkczar)
October 13, 2020, 6:22pm
2
I found this line in AnimCurveTypes.h
AACF_DriveMaterial_DEPRECATED = 0x00000008 UMETA(Hidden), // This has moved to FAnimCurveType:bMaterial. Set per skeleton. DO NOT REMOVE UNTIL FrameworkObjectVersion.MoveCurveTypesToSkeleton expires.
darkczar
(darkczar)
October 14, 2020, 8:16pm
3
I got it sordid out, LOL. Here it is, if anyone needs it…how to tell if your anim curves are driving any animated materials:
FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>("AssetRegistry");
TArray<FAssetData> AssetData;
AssetRegistryModule.Get().GetAssetsByPath(*ContentBrowserPath, AssetData, true);
for (FAssetData Asset : AssetData)
{
if (Asset.AssetClass == "Skeleton")
{
Skel = LoadObject<USkeleton>(nullptr, *Asset.ObjectPath.ToString(), NULL, LOAD_None, NULL);
SmartContainer = Skel->GetSmartNameContainer(USkeleton::AnimCurveMappingName);
TArray<USkeleton::AnimCurveUID> CurveUids;
SmartContainer->FillUidArray(CurveUids);
for (USkeleton::AnimCurveUID Id : CurveUids)
{
FName CurveName;
SmartContainer->GetName(Id, CurveName);
bMaterial = false;
bMaterial = SmartContainer->GetCurveMetaData(CurveName)->Type.bMaterial;