Assets added to a PSD via a Branch In notify can't have their flags changed within the database. When the flags (like mirror, disable, etc) are changed, they revert back to the original value when the PSD is saved/reopened.
This code responsible is:
bool bModified = false;
for (int32 AnimationAssetIndex = GetNumAnimationAssets() - 1; AnimationAssetIndex >= 0; --AnimationAssetIndex)
{
const int32 FoundIndex = NewAnimationAssets.Find(AnimationAssets[AnimationAssetIndex]);
if (FoundIndex >= 0)
{
FPoseSearchDatabaseAnimationAssetBase& AnimationAssetBase = AnimationAssets[AnimationAssetIndex].GetMutable<FPoseSearchDatabaseAnimationAssetBase>();
AnimationAssetBase.bDisableReselection = DisableReselection[AnimationAssetIndex];
NewAnimationAssets.RemoveAt(FoundIndex);
}
else
{
AnimationAssets.RemoveAt(AnimationAssetIndex);
bModified = true;
}
}
because the array Find calls through to FPoseSearchDatabaseAnimationAssetBase::operator== which includes the flags in the equalities check. So if a user modifies the flags, when the logic to add branch in notify assets into the PSD runs next, the asset fails the equalities check and so is removed from the PSD and re-added without the modified flags