示例#1
0
    private void CreateEffectPoolObject(Object bundle)
    {
        if (!bundle || !bundle.name.StartsWith("effect_") && !bundle.name.StartsWith("eff_"))
        {
            return;
        }
        var o = bundle as GameObject;

        if (!o)
        {
            return;
        }

        var count = CombatConfig.sdefaultEffectPoolCount;

        for (var i = 0; i < count; ++i)
        {
            var ef = Object.Instantiate(o);
            if (ef)
            {
                var d = ef.GetComponent <AutoDestroy>();
                if (d)
                {
                    d.enabled = false;
                }
                ef.SetActive(false);
                ef.name = bundle.name + "__";

                Util.AddChild(poolTrans, ef.transform);

                var iv = EffectInvertHelper.AddToEffect(ef);
                var mm = iv.materials;

                foreach (var m in mm)
                {
                    if (!m)
                    {
                        continue;
                    }

                    var c = Level.GetEffectMaterialFromPool(m.GetInstanceID());
                    if (!c)
                    {
                        c = Object.Instantiate(m);
                        Level.SetEffectMaterialFromPool(m.GetInstanceID(), c);
                    }

                    m.DisableKeyword("_INVERTED");
                    c.EnableKeyword("_INVERTED");
                }
            }
        }
    }
示例#2
0
    protected override void OnDestroy()
    {
        //foreach (var render in m_renderers)
        //{
        //    var mats = render.materials;
        //    foreach (var m in mats)
        //    {
        //        if (!m) continue;
        //        Object.DestroyImmediate(m);
        //    }
        //}

        m_inverter = null;

        var node = transform.parent;

        if (node)
        {
            for (var i = node.childCount - 1; i >= 0; i--)
            {
                var c = node.GetChild(i);
                if (c && c.name.Equals(name) && c != transform)
                {
                    c.gameObject.SetActive(true);
                    break;
                }
            }
        }

        base.OnDestroy();

        if (source)
        {
            source.RemoveEventListener(this);
        }

        source     = null;
        sourceBuff = null;
    }
示例#3
0
    protected void InitComponent()
    {
        var ad = GetComponent <AutoDestroy>();

        if (ad)
        {
            ad.enabled = false;
        }

        m_pauseResum = GetComponentDefault <PauseResumParticles>();
        m_pauseResum.Initialize(false, (float)localTimeScale);

        m_inverter = transform.GetComponent <EffectInvertHelper>();
        if (m_inverter)
        {
            m_inverter.inverted = m_inverted;
        }

        m_pauseResum.UpdateSpeed((float)localTimeScale);
        m_pauseResum.PauseResum(m_freez);

        Util.SetLayer(transform, sourceBuff ? Layers.EFFECT_BUFF : Layers.EFFECT);
    }