private void calcGravAndCollisions()
	{
		ArrayList<Body> finished = new ArrayList<Body>();
		for(Body a: bodies)
		{
			finished.add(a);
			for(Body b: bodies.subtractCollection(finished))
			{
				if(a.checkCollision(b.getCollisionBox()))//check for collisions among the two
				{
					collisionOccurred(a, b);
				}
				if(b.isDestroyable)
				{
					Vector forceA = Physics.calcForce(a, b);
					a.sumForce(forceA.getInverse());
					b.sumForce(forceA);
				}
			}
		}
		//Below empties the collision event stack
		while(collisions.size() > 0)
		{
			Body c = collisions.remove(0);
			c.collisionOccurred();
		}
		//Below empties the added body event stack
		while(added.size() > 0)
		{
			Body b = added.remove(0);
			this.bodies.addBody(b);
		}
		//Below empties the event stack
		while(events.size() > 0)
		{
			ControlEvent e = events.remove(0);
			if(this.getPlayer() != null)
			{
				this.getPlayer().eventOccurred(e);
			}
		}
	}