public override void Update() { base.Update(); if (IsMouseOverOrKeyboardActive()) { if (m_ScaleAnimationState == ScaleAnimationState.None) { m_ScaleAnimationCurrentTime = 0; m_ScaleAnimationState = ScaleAnimationState.ScaleIn; } if (m_ScaleAnimationState == ScaleAnimationState.ScaleOut) { m_ScaleAnimationCurrentTime = MyGuiConstants.BUTTON_HOVER_SCALE_TIME - m_ScaleAnimationCurrentTime; m_ScaleAnimationState = ScaleAnimationState.ScaleIn; } } else { if (m_ScaleAnimationState == ScaleAnimationState.ScaleIn) { m_ScaleAnimationCurrentTime = MyGuiConstants.BUTTON_HOVER_SCALE_TIME - m_ScaleAnimationCurrentTime; m_ScaleAnimationState = ScaleAnimationState.ScaleOut; } if (m_ScaleAnimationState == ScaleAnimationState.Scaled) { m_ScaleAnimationCurrentTime = MyGuiConstants.BUTTON_HOVER_SCALE_TIME; m_ScaleAnimationState = ScaleAnimationState.ScaleOut; } } int timeDelta = MyMinerGame.TotalGamePlayTimeInMilliseconds - m_LastTime; switch (m_ScaleAnimationState) { case ScaleAnimationState.ScaleIn: m_ScaleAnimationCurrentTime += timeDelta; if (m_ScaleAnimationCurrentTime >= MyGuiConstants.BUTTON_HOVER_SCALE_TIME) { m_ScaleAnimationCurrentTime = MyGuiConstants.BUTTON_HOVER_SCALE_TIME; m_ScaleAnimationState = ScaleAnimationState.Scaled; } m_scale = 1.0f + (MyGuiConstants.BUTTON_HOVER_SCALE - 1.0f) * m_ScaleAnimationCurrentTime / MyGuiConstants.BUTTON_HOVER_SCALE_TIME; break; case ScaleAnimationState.Scaled: m_scale = MyGuiConstants.BUTTON_HOVER_SCALE; if (m_mouseButtonPressed) { m_scale *= MyGuiConstants.BUTTON_PRESSED_SCALE; } break; case ScaleAnimationState.ScaleOut: m_ScaleAnimationCurrentTime -= timeDelta; if (m_ScaleAnimationCurrentTime <= 0) { m_ScaleAnimationCurrentTime = 0; m_ScaleAnimationState = ScaleAnimationState.None; } m_scale = 1.0f + (MyGuiConstants.BUTTON_HOVER_SCALE - 1.0f) * m_ScaleAnimationCurrentTime / MyGuiConstants.BUTTON_HOVER_SCALE_TIME; break; default: break; } m_LastTime = MyMinerGame.TotalGamePlayTimeInMilliseconds; }