Example #1
0
        public void DissoveToDeath(float r, float g, float b, float a, float corpseStayDuration)
        {
            if (_DeathEffect != null)
            {
                return;
            }

            _DeathEffect = EffectObjectPool.Get(this, EffectType.DissolveDeath) as DissoveDeath;
            if (_DeathEffect != null)
            {
                _DeathEffect.Start(r / 255.0f, g / 255.0f, b / 255.0f, a / 255.0f, corpseStayDuration);
                _CurEffectsMask |= _DeathEffect.Mask;
            }
        }
Example #2
0
        public void OnRecycle()
        {
            if (OnRecycleCallback != null)
            {
                OnRecycleCallback(this);
            }

            _CurEffectsMask = 0;
            ChangeMaterials();
            _LastEffectMask = 0;

//             if (_FadeEffect != null)
//             {
//                 _FadeEffect.Stop();
//                 _FadeEffect = null;
//             }

            if (_DeathEffect != null)
            {
                _DeathEffect.Stop();
                _DeathEffect = null;
            }

            foreach (var kv in _EntityRimEffectMap)
            {
                if (kv.Value != null)
                {
                    kv.Value.Stop();
                }
            }
            _EntityRimEffectMap.Clear();

            if (_Frozen != null)
            {
                _Frozen.Stop();
                _Frozen = null;
            }
        }
Example #3
0
        public void Tick(float dt)
        {
            if (_CurEffectsMask != _LastEffectMask)
            {
                ChangeMaterials();
                _LastEffectMask = _CurEffectsMask;
            }

            #region Frozen
            if (_Frozen != null)
            {
                // 冰冻效果无Update,通过服务器逻辑进行效果增删
                // 冰冻效果覆盖以下所有效果
                return;
            }
            #endregion // Frozen

            #region Death
            if (_DeathEffect != null)
            {
                if (!_DeathEffect.Update())
                {
                    _DeathEffect.Stop();
                    _CurEffectsMask &= ~_DeathEffect.Mask;
                    _DeathEffect     = null;
                }
                return;
            }
            #endregion // Death

            #region FadeEffect
//             if (_FadeEffect != null)
//             {
//                 if (!_FadeEffect.Update())
//                 {
//                     _FadeEffect.Stop();
//                     _CurEffectsMask &= ~_FadeEffect.Mask;
//                     _FadeEffect = null;
//                 }
//                 return;
//             }
            #endregion // FadeEffect

            #region RimEffect
            var effectType = GetMostPriorRimEffect();
            if (effectType != RimEffectType.None)
            {
                var mostPriorEffect = _EntityRimEffectMap[effectType];
                if (!mostPriorEffect.Update())
                {
                    mostPriorEffect.Stop();
                    _CurEffectsMask &= ~mostPriorEffect.Mask;
                    _EntityRimEffectMap.Remove(effectType);

                    // 重启其他可能存在的Rim效果
                    foreach (var kv in _EntityRimEffectMap)
                    {
                        if (kv.Value != null)
                        {
                            kv.Value.Restart();
                        }
                    }
                }
            }
            #endregion // RimEffect
        }