@Override
    public void run() {
        while (ticker != null) {
            long now = System.currentTimeMillis();
            float delta = (now - last) / 1000.0f;
            last = now;

            for (int i = 0; i < observers.size(); i++) {
                /*
                    hack - when paused still tick the modelviewer so
					we can change our POV and unpause
				*/
                if (i == 0 || !paused) {
                    Observer c = observers.elementAt(i);
                    c.tick(delta);
                }
            }

            long timeLeft = sleepTime + now - System.currentTimeMillis();
            if (timeLeft > 0) {
                try {
                    Thread.sleep(timeLeft);
                } catch (InterruptedException e) {
                }
            }
        }
        ticker = null;
    }