/** * \fn KeyFrameFinished * \brief Updates what the last keyframe played in the animation was. * * **/ void KeyFrameFinished() { if (m_bPrintDebug) { LPK_PrintDebug(this, "Finished keyframe."); } LPK_EventManager.LPK_EventData data = new LPK_EventManager.LPK_EventData(gameObject, m_KeyFrameFinishedReceivers); data.m_idata.Add(m_iCounter); LPK_EventList sendEvent = new LPK_EventList(); sendEvent.m_GameplayEventTrigger = new LPK_EventList.LPK_GAMEPLAY_EVENTS[] { LPK_EventList.LPK_GAMEPLAY_EVENTS.LPK_TransformAnimatorKeyframeFinished }; LPK_EventManager.InvokeEvent(sendEvent, data); //Reset values. m_LastTransformValues = m_KeyFrames[m_iCounter]; m_flPassedTime = 0.0f; m_iCounter += 1 * m_iCounterModifier; if (m_iCounter >= 0 && m_iCounter < m_KeyFrames.Length) { m_GoalTransformValues = m_KeyFrames[m_iCounter]; } }
/** * \fn Start * \brief Sets up what event to listen to for sprite and color modification. * * **/ override protected void OnStart() { if (m_pModifyGameObject == null) { m_pModifyGameObject = gameObject; } if (m_KeyFrames.Length == 0) { m_bIsActive = false; if (m_bPrintDebug) { LPK_PrintWarning(this, "No keyframes set in animator. BUG THIS."); } return; } InitializeEvent(m_EventTrigger, OnEvent); if (m_eTransformMode == LPK_TransformMode.WORLD) { m_LastTransformValues.m_vecTranslate = m_pModifyGameObject.transform.position; m_LastTransformValues.m_vecRotate = m_pModifyGameObject.transform.eulerAngles; m_LastTransformValues.m_vecScale = m_pModifyGameObject.transform.localScale; } else { m_LastTransformValues.m_vecTranslate = m_pModifyGameObject.transform.localPosition; m_LastTransformValues.m_vecRotate = m_pModifyGameObject.transform.localEulerAngles; m_LastTransformValues.m_vecScale = m_pModifyGameObject.transform.localScale; } m_GoalTransformValues = m_KeyFrames[0]; }
/** * \fn AnimationFinished * \brief Manages how the animator responds if finished. * * \return bool - True/False flag for whether or not the animator should animate again. **/ bool AnimationFinished() { if (m_bPrintDebug) { LPK_PrintDebug(this, "Finished animation sequence."); } LPK_EventManager.LPK_EventData data = new LPK_EventManager.LPK_EventData(gameObject, m_SequenceFinishedReceivers); LPK_EventList sendEvent = new LPK_EventList(); sendEvent.m_GameplayEventTrigger = new LPK_EventList.LPK_GAMEPLAY_EVENTS[] { LPK_EventList.LPK_GAMEPLAY_EVENTS.LPK_TransformAnimatorSequenceFinished }; LPK_EventManager.InvokeEvent(sendEvent, data); if (m_eLoopingStyle == LPK_LoopingStyle.LOOP) { if (m_KeyFrames.Length < 2) { if (m_bPrintDebug) { LPK_PrintWarning(this, "Cannot have LOOPING animation if there is only one frame. Changing to PLAY_ONCE."); } m_eLoopingStyle = LPK_LoopingStyle.PlAY_ONCE; m_bIsActive = false; return(false); } m_iCounter = 0; m_GoalTransformValues = m_KeyFrames[m_iCounter]; return(true); } else if (m_eLoopingStyle == LPK_LoopingStyle.PINGPONG) { if (m_KeyFrames.Length < 2) { if (m_bPrintDebug) { LPK_PrintWarning(this, "Cannot have PINGPONG animation if there is only one frame. Changing to PLAY_ONCE."); } m_eLoopingStyle = LPK_LoopingStyle.PlAY_ONCE; m_bIsActive = false; return(false); } //Going backwards. if (m_iCounterModifier == 1) { m_iCounter -= 1; } //Going forwards. else { m_iCounter += 1; } m_iCounterModifier *= -1; m_LastTransformValues = m_KeyFrames[m_iCounter]; //Set the next goal. m_iCounter += 1 * m_iCounterModifier; m_GoalTransformValues = m_KeyFrames[m_iCounter]; return(true); } else { m_bIsActive = false; } return(false); }