private void SetInWichBoxIsThisPlayer(OnCollisionObject player) { for (int i = 0; i < _box.Count; i++) { if (_box[i].BoxManager.IsObjectInsideBox(player.PlayerController.RigidBody.transform.position)) { _box[i].BoxManager.AllPlayerInside.AddIfNotContain(player); player.PlayerController.AllBoxInside.AddIfNotContain(_box[i]); } } }
public int GetNumberPlayerPushingMyAglomera(OnCollisionObject aglomera) { Aglomera aglo = aglomera.Aglomera; aglo.AllPlayerColliding.Clear(); for (int i = 0; i < aglomera.ListRigidBodyPlayer.Count; i++) { aglo.AllPlayerColliding.AddIfNotContain(aglomera.ListRigidBodyPlayer[i]); } TryToAddOtherToAglomera(aglo); return(aglo.AllPlayerColliding.Count); }
public void AddThisBoxToOurAglomera(OnCollisionObject other) { if (!_allBoxManager.Contains(other.BoxManager)) { //here add a new box to our aglomera ! Debug.Log("here add a new box to our aglomera !"); other.BoxManager.AglomeraRef = this; _allBoxManager.AddIfNotContain(other.BoxManager); other.BoxManager.transform.SetParent(transform); other.enabled = false; Destroy(other.BoxManager.RbBox); _onCollisionObject.ListRigidBodyBox.Remove(other); } }
/// <summary> /// count how many player are pushing this box /// </summary> /// <param name="toTest"></param> /// <returns></returns> public int GetNumberPlayerPushingMyBox(OnCollisionObject toTest) { BoxManager box = toTest.BoxManager; box.AllPlayerColliding.Clear(); for (int i = 0; i < _player.Count; i++) { if (_player[i].DoWeAreCollidingWithThat(toTest)) { box.AllPlayerColliding.AddIfNotContain(_player[i]); } } TryToAddOtherInBox(box); return(box.AllPlayerColliding.Count); }
private void OnCollisionExit2D(Collision2D collision) { OnCollisionObject collisionObject = collision.collider.GetExtComponentInParents <OnCollisionObject>(99, true); if (collisionObject && ListRigidBody.Contains(collisionObject)) { ListRigidBody.Remove(collisionObject); //if other is a player if (collisionObject.TypeRigidBodyMe == TypeObject.PLAYER) { ListRigidBodyPlayer.Remove(collisionObject); } //if other is a box else if (collisionObject.TypeRigidBodyMe == TypeObject.BOX) { ListRigidBodyBox.Remove(collisionObject); } } }
/// <summary> /// if we collide with other OnCollisionObject /// </summary> /// <param name="collision"></param> private void OnCollisionStay2D(Collision2D collision) { OnCollisionObject collisionObject = collision.collider.GetExtComponentInParents <OnCollisionObject>(99, true); if (collisionObject && !ListRigidBody.Contains(collisionObject)) { //don't add if we are an Aglomera, and this object is a child of ourself ! if (collisionObject.TypeRigidBodyMe == TypeObject.AGLOMERA) { if (collisionObject.Aglomera && Aglomera && collisionObject.Aglomera.GetInstanceID() == Aglomera.GetInstanceID()) { return; } } ListRigidBody.Add(collisionObject); collisionObject.ListRigidBody.AddIfNotContain(this); } if (collisionObject == null) { return; } //if other is a player if (collisionObject.TypeRigidBodyMe == TypeObject.PLAYER) { ListRigidBodyPlayer.AddIfNotContain(collisionObject); } //if other is a box else if (collisionObject.TypeRigidBodyMe == TypeObject.BOX) { ListRigidBodyBox.AddIfNotContain(collisionObject); } }
/// <summary> /// add box at start /// </summary> public void AddBox(OnCollisionObject box) { _box.AddIfNotContain(box); }
/// <summary> /// add player at start /// </summary> public void AddPlayer(OnCollisionObject player) { _player.AddIfNotContain(player); }
/// <summary> /// return true if we are colliding with that specific object /// </summary> /// <param name="collisionObject"></param> /// <returns></returns> public bool DoWeAreCollidingWithThat(OnCollisionObject collisionObject) { return(ListRigidBody.Contains(collisionObject)); }