FAnimationActiveTransitionEntry::FAnimationActiveTransitionEntry(int32 NextStateID, float ExistingWeightOfNextState, int32 PreviousStateID, const FAnimationTransitionBetweenStates& ReferenceTransitionInfo) : ElapsedTime(0.0f) , Alpha(0.0f) , CrossfadeMode(ReferenceTransitionInfo.CrossfadeMode) , bActive(true) , NextState(NextStateID) , PreviousState(PreviousStateID) , StartNotify(ReferenceTransitionInfo.StartNotify) , EndNotify(ReferenceTransitionInfo.EndNotify) , InterruptNotify(ReferenceTransitionInfo.InterruptNotify) , LogicType(ReferenceTransitionInfo.LogicType) { // Adjust the duration of the blend based on the target weight to get us there quicker if we're closer const float Scaler = 1.0f - ExistingWeightOfNextState; CrossfadeDuration = ReferenceTransitionInfo.CrossfadeDuration * CalculateInverseAlpha(CrossfadeMode, Scaler); }
FAnimationActiveTransitionEntry::FAnimationActiveTransitionEntry(int32 NextStateID, float ExistingWeightOfNextState, FAnimationActiveTransitionEntry* ExistingTransitionForNextState, int32 PreviousStateID, const FAnimationTransitionBetweenStates& ReferenceTransitionInfo) : ElapsedTime(0.0f) , Alpha(0.0f) , BlendOption(ReferenceTransitionInfo.BlendMode) , bActive(true) , NextState(NextStateID) , PreviousState(PreviousStateID) , StartNotify(ReferenceTransitionInfo.StartNotify) , EndNotify(ReferenceTransitionInfo.EndNotify) , InterruptNotify(ReferenceTransitionInfo.InterruptNotify) , LogicType(ReferenceTransitionInfo.LogicType) , BlendProfile(ReferenceTransitionInfo.BlendProfile) { const float Scaler = 1.0f - ExistingWeightOfNextState; CrossfadeDuration = ReferenceTransitionInfo.CrossfadeDuration * CalculateInverseAlpha(BlendOption, Scaler); Blend.SetBlendTime(CrossfadeDuration); Blend.SetBlendOption(BlendOption); Blend.SetCustomCurve(ReferenceTransitionInfo.CustomCurve); Blend.SetValueRange(0.0f, 1.0f); }