public void performDraw(Graphics g) {
		for (SimObject obj : this.allObjects) {
			if (obj.getBody() != null || obj.isSpecial()) {
				obj.draw(g);
				if (obj.isMoveable() && obj instanceof Gate) {
					float x = ((Gate)obj).getPosition().x;
					float y = ((Gate)obj).getPosition().y;
					Ellipse2D el = new Ellipse2D.Double(x-3.0,y-3.0,7,7);
					g.setColor(Color.GREEN);
					((Graphics2D)g).fill(el);
				}
				else if (obj.isMoveable() && !this.isRunning()) {
					float x = obj.getBody().getPosition().x*WorldManager.PHYSICS_SCALE;
					float y = obj.getBody().getPosition().y*WorldManager.PHYSICS_SCALE;
					Ellipse2D el = new Ellipse2D.Double(x-3.0,y-3.0,7,7);
					g.setColor(Color.GREEN);
					((Graphics2D)g).fill(el);
				}
			}
		}
		if (NetClient.isNet() || NetServer.isNet()) {
			g.setColor(new Color(128,0,0));
			g.drawString("Time remaining: "+(this.timeLeftMs/1000.0f),800,20);
			g.drawString("My best: "+this.myBest,800,40);
			g.drawString("Opponent's best: "+this.otherBest,800,60);
		}
	}