/// <summary> /// Called each time the CurrentTime value gets updated. /// </summary> protected override void OnCurrentTimeUpdated(IAnimationUpdateState updateState, AnimationState animationState) { float currentLocationPercent = (float)(base.CurrentTime.TotalMilliseconds / base.FixedTime.TotalMilliseconds); float toIncreaseTotal = m_increaseTotal * currentLocationPercent; float toIncrease = toIncreaseTotal - m_alreadyIncreased; m_setValueAction(m_getValueFunc() + toIncrease); m_alreadyIncreased = toIncreaseTotal; }
/// <summary> /// Called each time the CurrentTime value gets updated. /// </summary> protected override void OnCurrentTimeUpdated(IAnimationUpdateState updateState, AnimationState animationState) { float percentagePassed = (float)base.CurrentTime.Ticks / (float)m_duration.Ticks; m_targetObject.RotationEuler = m_startRotation + m_changeRotation * percentagePassed; }
/// <summary> /// Called each time the CurrentTime value gets updated. /// </summary> protected override void OnCurrentTimeUpdated(IAnimationUpdateState updateState, AnimationState animationState) { m_targetObject.Position = m_startVector + Vector3Ex.GetXY(m_moveHelper.GetPartialMoveDistance(base.CurrentTime)); }
/// <summary> /// Called each time the CurrentTime value gets updated. /// </summary> protected override void OnCurrentTimeUpdated(IAnimationUpdateState updateState, AnimationState animationState) { float scaleFactor = (float)base.CurrentTime.Ticks / (float)base.FixedTime.Ticks; m_targetObject.Scaling = m_startScaleVector + m_differenceVector * scaleFactor; }
/// <summary> /// Called each time the CurrentTime value gets updated. /// </summary> /// <param name="updateState"></param> /// <param name="animationState"></param> protected override void OnCurrentTimeUpdated(IAnimationUpdateState updateState, AnimationState animationState) { //how does Slerp work: --> http://en.wikipedia.org/wiki/Slerp float changeFactor = (float)base.CurrentTime.Ticks / (float)base.FixedTime.Ticks; Quaternion slerpQuaternion = Quaternion.Slerp(m_startQuaternion, m_targetQuaternion, changeFactor); m_targetObject.RotationQuaternion = slerpQuaternion; }
/// <summary> /// Called each time the CurrentTime value gets updated. /// </summary> protected override void OnCurrentTimeUpdated(IAnimationUpdateState updateState, AnimationState animationState) { float changeFactor = (float)base.CurrentTime.Ticks / (float)base.FixedTime.Ticks; m_targetObject.Scaling = m_startScaling + m_moveScaling * changeFactor; }
/// <summary> /// Called each time the CurrentTime value gets updated. /// </summary> protected virtual void OnCurrentTimeUpdated(IAnimationUpdateState updateState, AnimationState animationState) { }
/// <summary> /// Called for each update step. /// </summary> /// <param name="animationState">The current state of the animation.</param> /// <param name="updateState">The current state of the update pass.</param> public AnimationUpdateResult Update(IAnimationUpdateState updateState, AnimationState animationState) { // Call start animation if m_currentTime is zero HandleStartAnimation(); switch (m_animationType) { // Update logic for FixedTime animations case AnimationType.FixedTime: if (m_fixedTime <= TimeSpan.Zero) { OnStartAnimation(); OnFixedTimeAnimationFinished(); m_finished = true; } if (m_currentTime < m_fixedTime) { m_currentTime = m_currentTime.Add(updateState.UpdateTime); if (m_currentTime >= m_fixedTime) { m_currentTime = m_fixedTime; OnCurrentTimeUpdated(updateState, animationState); OnFixedTimeAnimationFinished(); m_finished = true; } else { OnCurrentTimeUpdated(updateState, animationState); } } break; // Update logic for FinishedByEvent animations case AnimationType.FinishedByEvent: m_currentTime += updateState.UpdateTime; //Call update method OnCurrentTimeUpdated(updateState, animationState); break; // Update logic for async calls case AnimationType.AsyncCall: m_currentTime += updateState.UpdateTime; if (m_asyncTask == null) { m_asyncTask = OnAsyncAnimationStart(); } else if (m_asyncTask.IsFaulted) { throw new SeeingSharpGraphicsException("Async animation raised an exception!", m_asyncTask.Exception); } else if (m_asyncTask.IsCompleted || m_asyncTask.IsCanceled || m_asyncTask.IsFaulted) { m_finished = true; } break; } return(AnimationUpdateResult.Empty); }