Exemplo n.º 1
0
 public void TryEnable(EFxLODLevel lv, bool enable, float curLastTime)
 {
     if (!enable && lv == EFxLODLevel.All)
     {
         foreach (var v in FxComponentInfos)
         {
             v.TryEnable(false, 0);
         }
     }
     else if (lv != EFxLODLevel.All)
     {
         if (FxComponentInfos.Length == 1 && FxComponentInfos[0] != null)
         {
             FxComponentInfos[0].TryEnable(enable, curLastTime);
         }
         else if (FxComponentInfos.Length == 3)
         {
             for (int i = (int)lv; i >= 0; i--)
             {
                 // 如果当前LOD等级无有效资源,则降一级查找;直至找到有效资源
                 if (FxComponentInfos[i].IsValid())
                 {
                     FxComponentInfos[i].TryEnable(enable, curLastTime);
                     break;
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
    public void ChangePlaySpeed(EFxLODLevel lv, float psSpeed, float animatorSpeed)
    {
        ComponentInfo curInfo = null;

        if (FxComponentInfos.Length == 1 && FxComponentInfos[0] != null)
        {
            curInfo = FxComponentInfos[0];
        }
        else if (FxComponentInfos.Length == 3)
        {
            for (int i = (int)lv; i >= 0; i--)
            {
                // 如果当前LOD等级无有效资源,则降一级查找;直至找到有效资源
                if (FxComponentInfos[i] != null)
                {
                    curInfo = FxComponentInfos[i];
                    break;
                }
            }
        }

        if (curInfo != null)
        {
            foreach (var v in curInfo.ParticleSystems)
            {
                if (v.Comp != null)
                {
                    if (psSpeed < Util.FloatZero)
                    {
                        v.Comp.Pause();
                    }
                    else
                    {
                        var mainModule = v.Comp.main;
                        mainModule.simulationSpeed = psSpeed;
                        if (!v.Comp.isPlaying)
                        {
                            v.Comp.Play();
                        }
                    }
                }
            }

            foreach (var v in curInfo.Animators)
            {
                if (v.Comp != null)
                {
                    v.Comp.speed = animatorSpeed;
                }
            }
        }
    }
Exemplo n.º 3
0
 public void Active(bool active, EFxLODLevel lv = EFxLODLevel.L0)
 {
     if (_FxProxy != null)
     {
         if (active)
         {
             _FxProxy.Active(lv);
         }
         else
         {
             _FxProxy.Deactive();
         }
     }
 }
Exemplo n.º 4
0
    public void Deactive()
    {
        if (_ComponentsInfo != null)
        {
            _ComponentsInfo.TryEnable(_CurLODLevel, false, 0);
        }

        if (_RadialBlurBootComp != null)
        {
            _RadialBlurBootComp.enabled = false;
        }

        _ActiveBeginTime = 0;
        _CurLODLevel     = EFxLODLevel.Invaild;
    }
Exemplo n.º 5
0
    public void Active(EFxLODLevel lv)
    {
        if (lv == _CurLODLevel)
        {
            return;
        }

        _ActiveBeginTime = Time.time;
        _CurLODLevel     = lv;

        if (_ComponentsInfo != null)
        {
            _ComponentsInfo.TryEnable(lv, true, Util.FloatZero);
        }
    }
Exemplo n.º 6
0
    public void SetScale(EFxLODLevel lv, float scale)
    {
        transform.localScale = new Vector3(scale, scale, scale);

        if (FxComponentInfos.Length == 1 && FxComponentInfos[0] != null)
        {
            FxComponentInfos[0].SetScale(scale);
        }

        if (FxComponentInfos.Length == 3)
        {
            for (int i = (int)lv; i >= 0; i--)
            {
                // 如果当前LOD等级无有效资源,则降一级查找;直至找到有效资源
                if (FxComponentInfos[i] != null)
                {
                    FxComponentInfos[i].SetScale(scale);
                    return;
                }
            }
        }
    }
Exemplo n.º 7
0
    public GameObject GetCfxObjBaseByLevel(int lod_level)
    {
        FindKeyGameObject();

        EFxLODLevel lodlevel = lod_level >= (int)EFxLODLevel.L0 && lod_level <= (int)EFxLODLevel.L3 ? (EFxLODLevel)lod_level : EFxLODLevel.L0;

        if (lodlevel == EFxLODLevel.L3)
        {
            if (_KeyGameObjectL3 != null)
            {
                return(_KeyGameObjectL3);
            }
            else
            {
                return(_KeyGameObjectL1);
            }
        }
        else if (lodlevel == EFxLODLevel.L1)
        {
            if (_KeyGameObjectL2 != null)
            {
                return(_KeyGameObjectL2);
            }
            else
            {
                return(_KeyGameObjectL1);
            }
        }
        else if (lodlevel == EFxLODLevel.L0 && _KeyGameObjectL1 != null)
        {
            return(_KeyGameObjectL1);
        }
        else
        {
            return(null);
        }
    }
Exemplo n.º 8
0
    public void TurnEnable(bool enable, int threshold = (int)EFxLODLevel.L3)
    {
        FindKeyGameObject();

        EFxLODLevel lodlevel = threshold >= (int)EFxLODLevel.L0 && threshold <= (int)EFxLODLevel.L3 ? (EFxLODLevel)threshold : EFxLODLevel.L0;

        // base on particle system`s "play on awake" property
        {
            if (_ParticleSystems != null)
            {
                for (int i = 0; i < _ParticleSystems.Length; i++)
                {
                    _ParticleSystems[i].Stop();
                    _ParticleSystems[i].Clear();
                }
            }

            if (_XffectSystems != null)
            {
                for (var i = 0; i < _XffectSystems.Length; i++)
                {
                    _XffectSystems[i].Reset();
                }
            }
        }

        if (enable)
        {
            do
            {
                if (_KeyGameObjectL1 != null && _KeyGameObjectL1.activeSelf)
                {
                    if (_AnimatorArrayL1 != null)   //处理AnimatorList
                    {
                        for (int i = 0; i < _AnimatorArrayL1.Length; ++i)
                        {
                            _AnimatorArrayL1[i].enabled = false;
                        }
                    }
                    _KeyGameObjectL1.SetActive(false);
                }

                if (_KeyGameObjectL2 != null && _KeyGameObjectL2.activeSelf)
                {
                    if (_AnimatorArrayL2 != null)   //处理AnimatorList
                    {
                        for (int i = 0; i < _AnimatorArrayL2.Length; ++i)
                        {
                            _AnimatorArrayL2[i].enabled = false;
                        }
                    }
                    _KeyGameObjectL2.SetActive(false);
                }

                if (_KeyGameObjectL3 != null && _KeyGameObjectL3.activeSelf)
                {
                    if (_AnimatorArrayL3 != null)   //处理AnimatorList
                    {
                        for (int i = 0; i < _AnimatorArrayL3.Length; ++i)
                        {
                            _AnimatorArrayL3[i].enabled = false;
                        }
                    }
                    _KeyGameObjectL3.SetActive(false);
                }

                if (lodlevel == EFxLODLevel.L3)
                {
                    if (_KeyGameObjectL3 != null)
                    {
                        _KeyGameObjectL3.SetActive(true);
                        if (_AnimatorArrayL3 != null)   //处理AnimatorList
                        {
                            for (int i = 0; i < _AnimatorArrayL3.Length; ++i)
                            {
                                _AnimatorArrayL3[i].enabled = true;
                            }
                        }

                        break;
                    }
                    else
                    {
                        lodlevel = EFxLODLevel.L1;
                    }
                }
                if (lodlevel == EFxLODLevel.L1)
                {
                    if (_KeyGameObjectL2 != null)
                    {
                        _KeyGameObjectL2.SetActive(true);
                        if (_AnimatorArrayL2 != null)   //处理AnimatorList
                        {
                            for (int i = 0; i < _AnimatorArrayL2.Length; ++i)
                            {
                                _AnimatorArrayL2[i].enabled = true;
                            }
                        }

                        break;
                    }
                    else
                    {
                        lodlevel = EFxLODLevel.L0;
                    }
                }
                if (lodlevel == EFxLODLevel.L0 && _KeyGameObjectL1 != null)
                {
                    _KeyGameObjectL1.SetActive(true);
                    if (_AnimatorArrayL1 != null)   //处理AnimatorList
                    {
                        for (int i = 0; i < _AnimatorArrayL1.Length; ++i)
                        {
                            _AnimatorArrayL1[i].enabled = true;
                        }
                    }

                    break;
                }
            } while (false);

            if (_ParticleSystems != null)
            {
                for (int i = 0; i < _ParticleSystems.Length; ++i)
                {
                    ParticleSystem ps = _ParticleSystems[i];
                    if (ps.gameObject.activeInHierarchy)
                    {
                        ps.Play();
                    }
                }
            }
        }
        else
        {
            if (_KeyGameObjectL1 != null && _KeyGameObjectL1.activeSelf)
            {
                if (_AnimatorArrayL1 != null)   //处理AnimatorList
                {
                    for (int i = 0; i < _AnimatorArrayL1.Length; ++i)
                    {
                        _AnimatorArrayL1[i].enabled = false;
                    }
                }
                _KeyGameObjectL1.SetActive(false);
            }

            if (_KeyGameObjectL2 != null && _KeyGameObjectL2.activeSelf)
            {
                if (_AnimatorArrayL2 != null)   //处理AnimatorList
                {
                    for (int i = 0; i < _AnimatorArrayL2.Length; ++i)
                    {
                        _AnimatorArrayL2[i].enabled = false;
                    }
                }
                _KeyGameObjectL2.SetActive(false);
            }

            if (_KeyGameObjectL3 != null && _KeyGameObjectL3.activeSelf)
            {
                if (_AnimatorArrayL3 != null)   //处理AnimatorList
                {
                    for (int i = 0; i < _AnimatorArrayL3.Length; ++i)
                    {
                        _AnimatorArrayL3[i].enabled = false;
                    }
                }
                _KeyGameObjectL3.SetActive(false);
            }
        }
    }