+ if( animator->IsEnabled() )
+ {
+ const float intervalDelay( animator->GetIntervalDelay() );
+
+ if( elapsedSecondsClamped >= intervalDelay )
+ {
+ // Calculate a progress specific to each individual animator
+ float progress(1.0f);
+ const float animatorDuration = animator->GetDuration();
+ if (animatorDuration > 0.0f) // animators can be "immediate"
+ {
+ progress = Clamp((elapsedSecondsClamped - intervalDelay) / animatorDuration, 0.0f , 1.0f );
+ }
+ animator->Update(bufferIndex, progress, bake);
+ }
+ applied = true;
+ }
+ else
+ {
+ applied = false;
+ }
+
+ if ( animationFinished )
+ {
+ animator->SetActive( false );
+ }
+
+ if (applied)
+ {
+ INCREASE_COUNTER(PerformanceMonitor::ANIMATORS_APPLIED);
+ }