bool UnFbx::FFbxImporter::ImportCurveToAnimSequence(class UAnimSequence * TargetSequence, const FString& CurveName, const FbxAnimCurve* FbxCurve, int32 CurveFlags,const FbxTimeSpan AnimTimeSpan, const float ValueScale/*=1.f*/) const { if (TargetSequence && FbxCurve) { FName Name = *CurveName; USkeleton* Skeleton = TargetSequence->GetSkeleton(); FSmartNameMapping* NameMapping = Skeleton->SmartNames.GetContainer(USkeleton::AnimCurveMappingName); // Add or retrieve curve USkeleton::AnimCurveUID Uid; if (!NameMapping->Exists(Name)) { // mark skeleton dirty Skeleton->Modify(); } NameMapping->AddOrFindName(Name, Uid); FFloatCurve * CurveToImport = static_cast<FFloatCurve *>(TargetSequence->RawCurveData.GetCurveData(Uid, FRawCurveTracks::FloatType)); if(CurveToImport==NULL) { if(TargetSequence->RawCurveData.AddCurveData(Uid, CurveFlags)) { CurveToImport = static_cast<FFloatCurve *> (TargetSequence->RawCurveData.GetCurveData(Uid, FRawCurveTracks::FloatType)); } else { // this should not happen, we already checked before adding ensureMsgf(0, TEXT("FBX Import: Critical error: no memory?")); } } else { CurveToImport->FloatCurve.Reset(); } return ImportCurve(FbxCurve, CurveToImport, AnimTimeSpan, ValueScale); } return false; }