Пример #1
0
        /// <summary>
        /// Adds a collider to the world if it doesn't already exist.
        /// </summary>
        /// <param name="_collider"></param>
        public void AddCollider(ABCollider _collider)
        {
            if (Colliders.Contains(_collider))
            {
                Debug.LogWarning("Can't add duplicate collider!");
                return;
            }

            Colliders.Add(_collider);
        }
Пример #2
0
        /// <summary>
        /// Remove the collider from the entity.
        /// </summary>
        /// <param name="c"></param>
        public T RemoveCollider <T>(T c) where T : Collider
        {
            if (Colliders.Contains(c))
            {
                Colliders.Remove(c);
                c.Removed();
                c.Entity = null;

                Scene?.RemoveColliderInternal(c);
            }
            return(c);
        }
Пример #3
0
        /// <summary>
        /// Removes a collider from the world if it exists.
        /// </summary>
        /// <param name="_collider"></param>
        public void RemoveCollider(ABCollider _collider)
        {
            if (Colliders.Contains(_collider))
            {
                Colliders.Remove(_collider);

                // Remove the collider from the last step collisions list of any collider it was colliding with if it was
                // destroyed before it exited.
                foreach (var collision in _collider.CollisionListener.LastStepCollisions)
                {
                    if (collision.CollisionListener.LastStepCollisions.Contains(_collider))
                    {
                        collision.CollisionListener.LastStepCollisions.Remove(_collider);
                    }
                }
                return;
            }

            Debug.LogWarning("Attempted to remove a collider from the world that didn't exist.");
        }