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"); } } } }
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; }
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); }