void ChangeAnimation(EAniamtion _eNewAnimation) { if (m_eCurrentAnimation != _eNewAnimation) { // Check if current animation can be interupted if (m_atAnimations[(int)m_eCurrentAnimation].m_bAllowInterupt) { m_eCurrentAnimation = _eNewAnimation; m_eQueuedAnimation = EAniamtion.INVALID; m_oWarlock.animation[m_atAnimations[(int)m_eCurrentAnimation].m_sName].time = 0.0f; m_oWarlock.animation.CrossFade(m_atAnimations[(int)m_eCurrentAnimation].m_sName); //Debug.Log("Crossfade animation: " + _eNewAnimation.ToString()); } // Queue the animation for when the current animation finishes else if (m_eQueuedAnimation != _eNewAnimation) { m_eQueuedAnimation = _eNewAnimation; //Debug.Log("Queued animation: " + _eNewAnimation.ToString()); } } }
// Member Functions // Public: public void NotifyCastSpell(ECastAnimation _eCastAnimation) { if (!GetComponent <CWarlockHealth>().IsAlive()) { return; } EAniamtion eCastAnimation = EAniamtion.INVALID; int iRandomNumber = Random.Range(0, 1000); // RANDOM_SPIN_ if (_eCastAnimation == ECastAnimation.RANDOM_SPIN) { switch (0) { case 0: eCastAnimation = EAniamtion.SPIN; break; } } // RANDOM_SLAM_STAFF if (_eCastAnimation == ECastAnimation.SLAM_STAFF) { switch (0) { case 0: eCastAnimation = EAniamtion.SLAM_STAFF; break; } } // RANDOM_RASE_STAFF else if (_eCastAnimation == ECastAnimation.RANDOM_RASE_STAFF) { switch (iRandomNumber % 2) { case 0: eCastAnimation = EAniamtion.RASE_STAFF; break; case 1: eCastAnimation = EAniamtion.RASE_HOLD_STAFF; break; } } // RANDOM_CAST else if (_eCastAnimation == ECastAnimation.RANDOM_CAST) { switch (iRandomNumber % 5) { case 0: eCastAnimation = EAniamtion.CAST_1; break; case 1: eCastAnimation = EAniamtion.CAST_2; break; case 2: eCastAnimation = EAniamtion.CAST_3; break; case 3: eCastAnimation = EAniamtion.CAST_4; break; case 4: eCastAnimation = EAniamtion.CAST_5; break; } } ChangeAnimation(eCastAnimation); }