private void OnPlay(FxOne fxone) { //Debug.Log("loading status:" + m_name + " " + m_loading); if (m_loading) { m_deferGetFx.Add(fxone); } else { GameObject fx = null; if (mTrans.childCount > 0) { fx = mTrans.GetChild(0).gameObject; fx.SetActive(true); } else { fx = UnityEngine.Object.Instantiate(m_asset) as GameObject; } fx.transform.parent = fxone.transform; fx.transform.localPosition = Vector3.zero; fx.transform.localRotation = Quaternion.identity; fx.transform.localScale = Vector3.one; fxone.mFx = fx; fxone.mOldLayer = fx.gameObject.layer; if (fxone.gameObject.layer != 0) LuaStatic.SetLayer(fx, fxone.gameObject.layer, true); if (FxCacheMan.Instance.RenderHide) LuaStatic.RenderHide(fx, true); if (fxone.mDuration < 0) { fxone.mDuration = this.mDuration; fxone.SetInvoke(this.mDuration); } } }
private void OnStop(FxOne fxone) { if (m_loading) { m_deferGetFx.Remove(fxone); } else { if (fxone.mFx != null) { if (fxone.gameObject.layer != 0) LuaStatic.SetLayer(fxone.mFx, fxone.mOldLayer, true); fxone.mFx.transform.parent = mTrans; fxone.mFx.SetActive(false); fxone.mFx = null; } } }
void FxEventHandler(FxOne fxone, FXEVENT_ENUM fxevent) { if (fxevent == FXEVENT_ENUM.PLAY) OnPlay(fxone); else if (fxevent == FXEVENT_ENUM.STOP) OnStop(fxone); }
public bool Touch(FxOne fxone) { fxone.mName = m_name; fxone.SetEndHandler(null); fxone.SetPlayOrStopHandler(null); if (!m_loading && m_asset == null) return false; ++m_usedCount; fxone.SetEndHandler(OnFxLifeEndHandler); fxone.SetPlayOrStopHandler(FxEventHandler); return true; }
void OnFxLifeEndHandler(FxOne fxone,bool isDestroy) { --m_usedCount; fxone.SetEndHandler(null); fxone.SetPlayOrStopHandler(null); lastReleaseTime = Time.time; m_deferGetFx.Remove(fxone); if (isDestroy == false) FxCacheMan.Instance.GiveBack(fxone); else FxCacheMan.Instance.RemoveFx(fxone); }
public void RemoveFx(FxOne fxone) { m_fxs.Remove(fxone); }
public void GiveBack(FxOne fxone) { RemoveFx(fxone); fxone.gameObject.name = "fx_del"; fxone.transform.parent = m_unusedFxOne; fxone.gameObject.SetActive(false); }