/// <summary> /// Attempts to remove a Collider from the primary collection, if that fails then an attempt will be made to /// remove it from the fallback collection. /// </summary> /// <param name="collider">The Collider to be removed.</param> /// <param name="primary">The first collection to attempt to remove the Collider from.</param> /// <param name="fallback">Attempt to remove the Collider from this if the primary fails.</param> private void RemoveCollider(Collider collider, Colliders primary, Colliders fallback) { if (!primary.Remove(collider)) { fallback.Remove(collider); } }
/// <summary> /// Removes dead objects /// </summary> private void RemoveObjects() { if (vehiclesToRemove.Count > 0) { foreach (GameObject go in vehiclesToRemove) { gameObjectsToRemove.Add(go); } UpdatePlayerAmount(); } if (gameObjectsToRemove.Count > 0) { foreach (var go in gameObjectsToRemove) { if (go.GetComponent("Collider") is Collider collider) { lock (colliderKey) { Colliders.Remove(collider); } } gameObjects.Remove(go); } gameObjectsToRemove.Clear(); } }
/// <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."); }
/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { int j = RemoveGameObjects.Count; for (int i = 0; i < j; i++) { GameObjects.Remove(RemoveGameObjects[i]); } RemoveGameObjects.Clear(); if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) { Exit(); } deltaTime = (float)gameTime.ElapsedGameTime.TotalSeconds; foreach (GameObject go in gameObjects) { if ((Player)go.GetComponent("Player") != null) { Player other = (Player)go.GetComponent("Player"); direction = other.Direction; go.Update(); } if ((MoveableBox)go.GetComponent("MoveableBox") != null) { go.Update(direction); } go.Update(); } if (level == "level 2" && Completed == true) { int J = GameObjects.Count; for (int i = 0; i < J; i++) { GameObject go = GameObjects[0]; if (go.GetComponent("Collider") != null) { Colliders.Remove((Collider)go.GetComponent("Collider")); } GameObjects.Remove(GameObjects[0]); one.LevelOneObjects.Clear(); } Initialize(); } if (level == "level 3" && Completed == true) { int J = GameObjects.Count; for (int i = 0; i < J; i++) { GameObject go = GameObjects[0]; if (go.GetComponent("Collider") != null) { Colliders.Remove((Collider)go.GetComponent("Collider")); } GameObjects.Remove(GameObjects[0]); one.LevelOneObjects.Clear(); } Initialize(); } // TODO: Add your update logic here base.Update(gameTime); }
protected override void OnRemoved() { Transform.Changed -= Transform_Changed; Colliders.Remove(this); }