private void EnrollMultiEventSkillEffect(DinoEffectController effect) { string animationName = effect.animationName; MultiEventDinoEffectController effectController = effect as MultiEventDinoEffectController; if (m_multiEventSkillEffects.ContainsKey(animationName)) { m_multiEventSkillEffects[animationName].AddMultiEventSkillEffect(effectController); } else { MultiEventSkillEffect multiEventSkillEffect = new MultiEventSkillEffect(); multiEventSkillEffect.AddMultiEventSkillEffect(effectController); m_multiEventSkillEffects.Add(animationName, multiEventSkillEffect); } }
/// <summary> /// 스킬에 관한 이벤트 이펙트 /// 1. 애니메이션에서 어떠한 이벤트가 발동되면 그에 맞춘 스킬 이펙트를 보여준다. /// 2. 애니메이션에서 발동한 이벤트에 대하여 그에 맞춘 피격 이펙트가 있다면 보여준다. /// </summary> /// <param name="entry"></param> /// <param name="e"></param> private void HandleAnimationStateEvents(TrackEntry entry, Spine.Event e) { string animationName = entry.Animation.Name; string eventName = e.Data.Name; if (m_normalSkillEffects.ContainsKey(animationName)) { List <DinoEffectController> effects = m_normalSkillEffects[animationName].GetDinoSkillEffects(eventName); if (effects != null) { foreach (DinoEffectController effect in effects) { effect.PlayDinoEffect(); } } } if (m_multiEventSkillEffects.ContainsKey(animationName)) { MultiEventSkillEffect multiEventEffects = m_multiEventSkillEffects[animationName]; multiEventEffects.PlayMultiEventSkillEffect(eventName); } if (m_targetTransform == null) { return; } if (m_normalTargetDinoEffects.ContainsKey(animationName)) { List <TargetDinoEffectController> effects = m_normalTargetDinoEffects[animationName].GetTargetDinoEffects(eventName); if (effects != null) { foreach (TargetDinoEffectController effect in effects) { effect.PlayTargetEffect(m_targetTransform); } } } if (m_multiEventTargetDinoEffects.ContainsKey(animationName)) { MultiEventTargetDinoEffects multiEventTargetEffects = m_multiEventTargetDinoEffects[animationName]; multiEventTargetEffects.PlayMultiEventTargetSkillEffect(eventName, m_targetTransform); } }