示例#1
0
        private void OnTriggerExit(Collider inCollider)
        {
            if (!CheckFilters(inCollider, ColliderProxyEventMask.OnExit))
            {
                return;
            }

            RemoveOccupant(inCollider);
            m_OnTriggerExit.Invoke(inCollider);
            m_TaggedTriggerExit.Invoke(m_Id, inCollider);
        }
示例#2
0
        /// <summary>
        ///     重ならなくなった時のコールバックメソッドを実行します。
        /// </summary>
        /// <param name="other">重なっていたオブジェクト</param>
        private void HandleColliderExit(SpriteCollider2D other)
        {
            RemoveCollidedPair(other);

            onColliderExit.Invoke(other);
            other.onColliderExit.Invoke(this);
        }
示例#3
0
        void Update()
        {
            hit = raycast.GetResult().collider;

            if (forceClear)
            {
                hit        = null;
                forceClear = false;
            }

            if (hit != priorHit)
            {
                if (priorHit)
                {
                    Exit.Invoke(priorHit);
                }
                if (hit)
                {
                    Enter.Invoke(hit);
                }
            }

            priorHit = hit;
            hit      = null;
        }
 public void Input(Collider other, TouchType touchType, CollisionType collisionType)
 {
     if (filter.RequestActivate(other, touchType, collisionType))
     {
         response.Invoke(other);
     }
 }
示例#5
0
 public void OnTriggerEnter(Collider other)
 {
     if (TriggerEnter != null)
     {
         TriggerEnter.Invoke(other);
     }
 }
 void OnTriggerExit(Collider collider)
 {
     if (collider.gameObject.layer == LayerMask.NameToLayer(_targetLayer.Value))
     {
         _onExit.Invoke(collider);
     }
 }
示例#7
0
 public void OnTriggerExit(Collider other)
 {
     if (TriggerExit != null)
     {
         TriggerExit.Invoke(other);
     }
 }
示例#8
0
    protected virtual void OnCollisionEnter(Collision collision)
    {
        if (isPickedUp && (collision.gameObject.tag == "Hand"))
        {
            return; //ignore this collision
        }
        if (!indestrucable)
        {
            float otherDensity = collision.gameObject.GetComponent <PhysicalObject>()?.density ?? 0.1f;
            if (otherDensity <= 0)
            {
                return;
            }
            float potentialDamage = otherDensity * collision.relativeVelocity.magnitude;
            if (potentialDamage > dmgThreshold)
            {
                durability -= potentialDamage;
                onDurabilityLoss.Invoke(collision.collider);
            }

            if (durability <= 0)
            {
                Destroy(gameObject);
            }
        }
        onHit.Invoke(collision.collider);
    }
 void RespondIfValid(Collider other, ColliderEvent response)
 {
     if (IsValid(other))
     {
         response.Invoke(other);
     }
 }
 public void OnTriggerStay2D(Collider2D other)
 {
     if (Utils.LayerIsInMask(other.gameObject.layer, whitelist))
     {
         onTriggerStay?.Invoke(other);
     }
 }
示例#11
0
 private void OnTriggerExit(Collider other)
 {
     if (IsCallTrigger(other.gameObject))
     {
         onTriggerExit?.Invoke(other);
     }
 }
示例#12
0
 /// <summary>
 /// Invokes the custom unity event in response to OnTriggerEnter.
 /// </summary>
 /// <param name="other">The collider reference to send with the event.</param>
 protected virtual void OnTriggerEnter(Collider other)
 {
     if (triggerEvent != null && layerMask.Contains(other.gameObject.layer))
     {
         triggerEvent.Invoke(other);
     }
 }
示例#13
0
 private void OnTriggerStay(Collider other)
 {
     if (!activated)
     {
         return;
     }
     OnStay?.Invoke(other);
 }
示例#14
0
 private void OnTriggerEnter(Collider other)
 {
     if (!activated)
     {
         return;
     }
     OnEnter?.Invoke(other);
 }
 void OnTriggerEnter(Collider collider)
 {
     //Debug.LogFormat("Enter {0}", LayerMask.LayerToName(collider.gameObject.layer));
     if (collider.gameObject.layer == LayerMask.NameToLayer(_targetLayer.Value))
     {
         _onEnter.Invoke(collider);
     }
 }
示例#16
0
 private void OnTriggerExit(Collider other)
 {
     if (!activated)
     {
         return;
     }
     OnExit?.Invoke(other);
 }
示例#17
0
        private void OnTriggerExit(Collider col)
        {
            if (ShouldIgnore(col))
            {
                return;
            }

            OnExit.Invoke(col);
        }
示例#18
0
        protected virtual void OnTriggerStay(Collider other)
        {
            if (!ready || other.transform.IsChildOf(ignoreChildren))
            {
                return;
            }

            onStayCollider.Invoke(other);
        }
示例#19
0
        void Refresh()
        {
            var nearby         = trackColliders.Refresh();
            var inView         = filterByAngle.Input(nearby);
            var inSight        = lineOfSight.Input(inView);
            var visibleTargets = targetFilter.Input(inSight);
            var closestTarget  = findClosest.Input(visibleTargets);

            ClosestTarget.Invoke(closestTarget);
        }
示例#20
0
        private void OnTriggerEnter(Collider inCollider)
        {
            if (!CheckFilters(inCollider, ColliderProxyEventMask.OnEnter))
            {
                return;
            }

            AddOccupant(inCollider);
            m_OnTriggerEnter.Invoke(inCollider);
            m_TaggedTriggerEnter.Invoke(m_Id, inCollider);
        }
示例#21
0
 private void OnTriggerEnter(UnityEngine.Collider other)
 {
     if (string.IsNullOrEmpty(m_tag) || other.CompareTag(m_tag))
     {
         if (CanTrigger)
         {
             alreadyTriggeredInFrame = true;
             hasTriggered            = true;
             on_TriggerEnter.Invoke(other);
         }
     }
 }
示例#22
0
 void OnTriggerExit(Collider other)
 {
     if (!active)
     {
         return;
     }
     if (MalbersTools.Layer_in_LayerMask(other.gameObject.layer, Ignore))
     {
         return;
     }
     OnTrigger_Exit.Invoke(other);
 }
示例#23
0
 private void OnTriggerStay2D(Collider2D col)
 {
     if (canInteract(EventState.Stay) && colliderState == ColliderState.Trigger)
     {
         if (stayTags.Contains(col.gameObject.tag) && stayTags != null)
         {
             stayEvent.Invoke();
             if (destroyTrigger)
             {
                 Destroy(gameObject);
             }
         }
         else if (stayTags == null)
         {
             stayEvent.Invoke();
             if (destroyTrigger)
             {
                 Destroy(gameObject);
             }
         }
     }
 }
示例#24
0
    private void OnTriggerExit(Collider other)
    {
        if (compatibleTags.Count == 0)
        {
            Debug.LogError("Trigger component has no compatible tags");
        }
        TagComponent tag = other.GetComponent <TagComponent>();

        if (tag != null && tag.HasAnyOf(compatibleTags))
        {
            onTriggerExit.Invoke(other);
        }
    }
示例#25
0
        /*
         * コールバックのハンドリング
         */

        /// <summary>
        ///     重なった時のコールバックメソッドを実行します。
        ///     前フレームで重なっていなかったペアであればOnColliderEnterイベントもハンドルします。
        /// </summary>
        /// <param name="other">重なっているオブジェクト</param>
        private void HandleColliding(SpriteCollider2D other)
        {
            if (!IsCollidedPair(other))
            {
                CollidedPairs.Add(new CollidedPair(this, other));

                onColliderEnter.Invoke(other);
                other.onColliderEnter.Invoke(this);
            }

            onColliding.Invoke(other);
            other.onColliding.Invoke(this);
        }
示例#26
0
 private void OnTriggerExit2D(Collider2D col)
 {
     if (canInteract(EventState.Exit) && colliderState == ColliderState.Trigger)
     {
         if (exitTags.Contains(col.gameObject.tag) && exitTags != null)
         {
             exitEvent.Invoke();
             if (destroyTrigger)
             {
                 Destroy(gameObject);
             }
         }
         else if (exitTags == null)
         {
             exitEvent.Invoke();
             if (destroyTrigger)
             {
                 Destroy(gameObject);
             }
         }
     }
 }
示例#27
0
        void OnTriggerExit(Collider collider)
        {
            if (!IsTriggerable(collider))
            {
                return;
            }

            triggeed = true;
            if (OnExitTrigger != null)
            {
                OnExitTrigger.Invoke(collider);
            }
        }
示例#28
0
            #pragma warning restore 0649

            public void RequestActivate(Collider other, TouchType touchType, CollisionType collisionType)
            {
                if (this.collisionType != CollisionType.Any && this.collisionType != collisionType ||
                    other.isTrigger && otherColliderType == CollisionType.Collision ||
                    !other.isTrigger && otherColliderType == CollisionType.Trigger)
                {
                    return;
                }

                if (this.touchType == touchType)
                {
                    Output.Invoke(other);
                }
            }
示例#29
0
        private void OnTriggerExit(Collider other)
        {
            var rb = other.attachedRigidbody;

            if (!CheckObject(other.gameObject) || rb != null && !_rigidbodies.Contains(rb))
            {
                return;
            }

            _rigidbodies.Remove(rb);
            OnTriggerExitEvent?.Invoke(other);
            TriggerExitEvent?.Invoke(other);
            TriggerExitReporterEvent?.Invoke(other, this);
        }
        protected void OnTriggerExit(Collider other)
        {
            if (!enabled)
            {
                return;
            }

            if (other.GetComponent <IndexUIActivator>() == null)
            {
                return;
            }

            PassedOnTriggerExit.Invoke(other);
        }