public void OnMsg(EMsg msg, params object[] args) { switch (msg) { #if USE_TRIGGER_FOR_SKILL case EMsg.View_Model_AttachJoint: GameObject injuredBuild = args[0] as GameObject; PETrigger.AttachTriggerEvent(injuredBuild, OnColliderEnter, null, null); break; case EMsg.View_Model_DeatchJoint: GameObject injuredDestroy = args[0] as GameObject; PETrigger.DetachTriggerEvent(injuredDestroy, OnColliderEnter, null, null); break; case EMsg.View_Model_Build: Profiler.BeginSample("View_Model_Build_SkAlive"); GameObject modelBuild = args[0] as GameObject; PETrigger.AttachTriggerEvent(modelBuild, OnColliderEnter, null, null); Profiler.EndSample(); break; case EMsg.View_Model_Destroy: GameObject modelDestroy = args[0] as GameObject; PETrigger.DetachTriggerEvent(modelDestroy, OnColliderEnter, null, null); break; #endif case EMsg.State_Revive: DispatchReviveEvent(); SetAutoBuffActive(true); isDead = false; break; } }
public virtual void OnDestroy() { if (bufferEffect != null) { ShiftEffect(); } PETrigger.DetachTriggerEvent(gameObject, OnColliderEnter, null, null); s_Projectiles.Remove(this); }
public static void DetachTriggerEvent(Collider collider, TriggerDelegate enter, TriggerDelegate stay, TriggerDelegate exit) { if (collider == null && collider.isTrigger) { PETrigger trigger = collider.gameObject.GetComponent <PETrigger>(); if (trigger != null) { trigger.DetachTrigger(enter, stay, exit); } GameObject.Destroy(trigger); } }
public void Awake() { Init(null, null, (int)AttribType.Max); m_StartTime = Time.time; if (!m_Inited) { m_Entity = GetComponent <PeEntity>(); if (m_Entity == null) { m_Entity = gameObject.AddComponent <PeEntity>(); } m_Triggers = GetComponentsInChildren <Collider>(); m_Trajectory = GetComponent <Trajectory>(); } if (m_Trigger && m_Interval > PETools.PEMath.Epsilon) { StartCoroutine(TriggerDamage()); } SetAttribute((int)AttribType.ResRange, m_ResRange); PETrigger.AttachTriggerEvent(gameObject, OnColliderEnter, null, null); if (bufferEffect != null) { PEFollow.Follow(bufferEffect, transform); } StartCoroutine(DeleteEnumerator(m_LifeTime)); s_Projectiles.Add(this); }