/// <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); }
/// <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); }
/// <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."); }