Example #1
0
        private static void SetEffectParticle(uint id, GameObject effectNode)
        {
            ParticleSystem[] particles = effectNode.GetComponentsInChildren <ParticleSystem>(true);
            if (particles == null || particles.Length == 0)
            {
                return;
            }
            m_dicIDEffects.Add(id, particles);
            for (ushort index = 0; index < particles.Length; index++)
            {
                ParticleSystem particle = particles[index];
                if (!FilterParticleObject(particle))
                {
                    continue;
                }
                SetUseAutoSeedEffect(effectNode, particle);
                string name       = particle.name;
                float  startDelay = particle.main.startDelayMultiplier;
                if (!m_dicIDObjectNameDelay.ContainsKey(id))
                {
                    m_dicIDObjectNameDelay.Add(id, new Dictionary <string, float>());
                }
                if (m_dicIDObjectNameDelay[id].ContainsKey(name))
                {
                    m_dicIDObjectNameDelay[id][name] = startDelay;
                }
                else
                {
                    m_dicIDObjectNameDelay[id].Add(name, startDelay);
                }
#pragma warning disable 0618
                particle.startDelay = 0;
#pragma warning restore 0618
            }
            Animator animator = effectNode.GetComponent <Animator>();
            if (animator == null)
            {
                return;
            }
            AnimatorState state = AnimatorControllerManager.GetAnimatorControllerFirstStateName(animator, Config.SkillEffectPath);
            if (state == null || state.motion == null)
            {
                return;
            }
            SkillAnimator animation = new SkillAnimator(animator);
            animation.Record(state);
            m_dicIDEffectAnimation.Add(id, animation);
        }