void FAnimNotifyEvent::RefreshEndTriggerOffset( EAnimEventTriggerOffsets::Type PredictedOffsetType ) { if(PredictedOffsetType == EAnimEventTriggerOffsets::NoOffset || EndTriggerTimeOffset == 0.f) { EndTriggerTimeOffset = GetTriggerTimeOffsetForType(PredictedOffsetType); } }
/** Make sure all Sections and Notifies are clamped to NewEndTime (called before NewEndTime is set to SequenceLength) */ bool SMontageEditor::ClampToEndTime(float NewEndTime) { bool bClampingNeeded = SAnimEditorBase::ClampToEndTime(NewEndTime); if(bClampingNeeded) { float ratio = NewEndTime / MontageObj->SequenceLength; for(int32 i=0; i < MontageObj->CompositeSections.Num(); i++) { if(MontageObj->CompositeSections[i].GetTime() > NewEndTime) { float CurrentTime = MontageObj->CompositeSections[i].GetTime(); MontageObj->CompositeSections[i].SetTime(CurrentTime * ratio); } } for(int32 i=0; i < MontageObj->Notifies.Num(); i++) { FAnimNotifyEvent& Notify = MontageObj->Notifies[i]; float NotifyTime = Notify.GetTime(); if(NotifyTime >= NewEndTime) { Notify.SetTime(NotifyTime * ratio); Notify.TriggerTimeOffset = GetTriggerTimeOffsetForType(MontageObj->CalculateOffsetForNotify(Notify.GetTime())); } } } return bClampingNeeded; }
void FBranchingPoint::RefreshTriggerOffset(EAnimEventTriggerOffsets::Type PredictedOffsetType) { if(PredictedOffsetType == EAnimEventTriggerOffsets::NoOffset || TriggerTimeOffset == 0.f) { TriggerTimeOffset = GetTriggerTimeOffsetForType(PredictedOffsetType); } }
void UAnimSequenceBase::ClampNotifiesAtEndOfSequence() { const float NotifyClampTime = SequenceLength - 0.01f; //Slight offset so that notify is still draggable for(int i = 0; i < Notifies.Num(); ++ i) { if(Notifies[i].GetTime() >= SequenceLength) { Notifies[i].SetTime(NotifyClampTime); Notifies[i].TriggerTimeOffset = GetTriggerTimeOffsetForType(EAnimEventTriggerOffsets::OffsetBefore); } } }