//Find ropes pluggued in objects atacched to one PluggedRope public List <Rope2D> GetAllIndirectRopes(bool p_includePluggedRopes = true) { List <Rope2D> v_indirectRopes = new List <Rope2D>(PluggedRopes); List <GameObject> v_indirectPluggedObjects = GetAllOtherAttachedObjectsInPluggedRopes(); v_indirectPluggedObjects.AddChecking(this.gameObject); for (int i = 0; i < v_indirectPluggedObjects.Count; i++) { GameObject v_otherObject = v_indirectPluggedObjects[i]; if (v_otherObject != null && v_otherObject != this.gameObject) { RopesAttached v_attachedScript = v_otherObject.GetComponent <RopesAttached>(); if (v_attachedScript != null) { v_indirectRopes.MergeList(v_attachedScript.PluggedRopes); v_indirectPluggedObjects.MergeList(v_attachedScript.GetAllOtherAttachedObjectsInPluggedRopes()); } } } if (!p_includePluggedRopes) { foreach (Rope2D v_rope in PluggedRopes) { v_indirectRopes.RemoveChecking(v_rope); } } return(v_indirectRopes); }
public List <GameObject> GetAllIndirectObjects(bool p_includeOtherPluggedObjects = true) { /*List<GameObject> v_finalList = new List<GameObject>(); * foreach(RopeBehaviour2D v_rope in IndirectRopes) * { * if(v_rope != null) * v_finalList.MergeList(v_rope.GetPluggedObjectsInRope()); * } * * //Remove Or Add Plugged Objects * foreach(RopeBehaviour2D v_rope in PluggedRopes) * { * if(v_rope != null) * { * if(!p_includeOtherPluggedObjects) * { * foreach(GameObject v_object in v_rope.GetPluggedObjectsInRope()) * v_finalList.RemoveChecking(v_object); * } * else * v_finalList.MergeList(v_rope.GetPluggedObjectsInRope()); * } * } * return v_finalList;*/ List <GameObject> v_indirectPluggedObjects = GetAllOtherAttachedObjectsInPluggedRopes(); List <GameObject> v_directObjects = v_indirectPluggedObjects.CloneList(); v_indirectPluggedObjects.AddChecking(this.gameObject); for (int i = 0; i < v_indirectPluggedObjects.Count; i++) { GameObject v_otherObject = v_indirectPluggedObjects[i]; if (v_otherObject != null && v_otherObject != this.gameObject) { RopesAttached v_attachedScript = v_otherObject.GetComponent <RopesAttached>(); if (v_attachedScript != null) { v_indirectPluggedObjects.MergeList(v_attachedScript.GetAllOtherAttachedObjectsInPluggedRopes()); } } } if (!p_includeOtherPluggedObjects) { foreach (GameObject v_object in v_directObjects) { v_indirectPluggedObjects.RemoveChecking(v_object); } } //Aways Remove Self v_indirectPluggedObjects.RemoveChecking(this.gameObject); return(v_indirectPluggedObjects); }