Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        public virtual void OnDestroy()
        {
            if (bufferEffect != null)
            {
                ShiftEffect();
            }

            PETrigger.DetachTriggerEvent(gameObject, OnColliderEnter, null, null);

            s_Projectiles.Remove(this);
        }
Ejemplo n.º 3
0
    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);
        }
    }
Ejemplo n.º 4
0
        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);
        }