IllegalStateException starting Timer when using jogl Viewer

Found a bug? Post here.
Post Reply
ted
Posts: 57
Joined: Wed 25. Jul 2012, 22:53

IllegalStateException starting Timer when using jogl Viewer

Post by ted » Sat 1. Sep 2012, 09:28

If I use a timer on a SceneGraphComponent that is ultimately connected to a JRViewer, it works fine, but when using it with de.jreality.jogl.Viewer, it throws an exception when started:

Code: Select all

Exception in thread "main" java.lang.IllegalStateException: timer not attached!
	at de.jreality.tools.Timer.start(Timer.java:122)
What needs to be done to get it to work with a jogl viewer? Perhaps it should just work the same? I could use a Swing Timer but it doesn't seem to automatically re-render when the scene graph has changed like the de.jreality.tools.Timer does.

User avatar
gunn
Posts: 323
Joined: Thu 14. Dec 2006, 09:56
Location: TU Berlin
Contact:

Re: IllegalStateException starting Timer when using jogl Vie

Post by gunn » Mon 3. Sep 2012, 11:52

I think the distinction is not between JRViewer and de.jreality.jogl.Viewer, since the former uses the latter to render. It's more a question of whether the Viewer you have set up is properly configured to run with instances of de.jreality.tools.Timer, in the same way that JRViewer apparently can.

I tested out such an instance with the tutorial example de.jreality.tutorial.viewer.ViewerFromScratch by adding some code after the tool system is initialized:

Code: Select all

...
        import de.jreality.tools.Timer;
        ...
	final Appearance rootApp= new Appearance();
        ...
       ToolSystem toolSystem = ToolSystem.toolSystemForViewer(viewer);
       toolSystem.initializeSceneTools();
       Timer timer = new Timer(10, new ActionListener() {
		int count = 0;
		public void actionPerformed(ActionEvent arg0) {
			count++;
		    if (count > 255) count = 0;
		    rootApp.setAttribute(CommonAttributes.DIFFUSE_COLOR, new Color(count, 0, (255-count)));
		}
	});
    ...
This changes the color of the icosahedron from blue to red. It runs without problems for me. At least in this example, the class de.jreality.jogl.Viewer works fine with instances of de.jreality.tool.Timer.

Perhaps you can isolate the problem in your code in a short example?
jReality core developer

Post Reply