void applyGravity(Gravable grav1, Gravable grav2) { if (grav1 == grav2) { Debug.Log("whaa"); } Vector2 totalForce1 = new Vector2(0, 0); Vector2 totalForce2 = new Vector2(0, 0); Vector2 myPos = grav1.gameObject.transform.position; Vector2 otherPos = grav2.gameObject.transform.position; float otherMass = grav1.GetComponent <Rigidbody2D> ().mass; float myMass = grav2.GetComponent <Rigidbody2D> ().mass; Vector2 towards = (myPos - otherPos); float r3 = towards.sqrMagnitude * towards.magnitude; float gravMag = (G * otherMass * myMass / r3); totalForce1 += gravMag * -towards; totalForce2 += gravMag * towards; if (grav1.isAffectedByOthers && grav2.affectsOthers) { grav1.GetComponent <Rigidbody2D> ().AddForce(totalForce1); } if (grav2.isAffectedByOthers && grav1.affectsOthers) { grav2.GetComponent <Rigidbody2D> ().AddForce(totalForce2); } }
public void addGrav(Gravable newGrav) { Pair <Gravable, Gravable>[] toAdd = new Pair <Gravable, Gravable> [allGravs.Count]; for (int i = 0; i < allGravs.Count; i += 1) { if (allGravs [i] == newGrav) { Debug.Log("Tried to an an already existing grav"); } toAdd [i] = new Pair <Gravable, Gravable> (allGravs [i], newGrav); } allGravs.Add(newGrav); gravCombos = Concat(gravCombos, toAdd); // printGravs ("Add"); }
public void removeGrav(Gravable toRemove) { // printGravs ("remove1"); allGravs.Remove(toRemove); List <Pair <Gravable, Gravable> > reorg = new List <Pair <Gravable, Gravable> > (gravCombos); foreach (var pair in reorg.ToList()) { if ((pair.First == toRemove) || (pair.Second == toRemove)) { reorg.Remove(pair); } } gravCombos = reorg.ToArray(); // printGravs("remove2"); }