Пример #1
0
	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);
			}
		}
	}
Пример #2
0
	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;
			}
		}
	}
Пример #3
0
	void FxEventHandler(FxOne fxone, FXEVENT_ENUM fxevent)
	{
		if (fxevent == FXEVENT_ENUM.PLAY)
			OnPlay(fxone);
		else if (fxevent == FXEVENT_ENUM.STOP)
			OnStop(fxone);

	}
Пример #4
0
	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;
	}
Пример #5
0
	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);
	}
Пример #6
0
	public void RemoveFx(FxOne fxone)
	{
		m_fxs.Remove(fxone);
	}
Пример #7
0
	public void GiveBack(FxOne fxone)
	{
		RemoveFx(fxone);
		fxone.gameObject.name = "fx_del";
		fxone.transform.parent = m_unusedFxOne;
		fxone.gameObject.SetActive(false);
	}