/// <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;
        }
Exemplo n.º 2
0
        /// <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;
        }
Exemplo n.º 3
0
 /// <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));
 }
Exemplo n.º 4
0
        /// <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;
        }
Exemplo n.º 5
0
        /// <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;
        }
Exemplo n.º 7
0
 /// <summary>
 /// Called each time the CurrentTime value gets updated.
 /// </summary>
 protected virtual void OnCurrentTimeUpdated(IAnimationUpdateState updateState, AnimationState animationState)
 {
 }
Exemplo n.º 8
0
        /// <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);
        }