samer@0: /* samer@0: */ samer@0: package samer.j3d; samer@0: samer@0: import samer.core.*; samer@0: import samer.core.types.*; samer@0: import samer.maths.*; samer@0: import samer.tools.*; samer@0: import java.io.*; samer@0: import java.awt.event.*; samer@0: import javax.media.j3d.*; samer@0: import javax.vecmath.*; samer@0: samer@0: public class ImmediateRenderer extends Util implements Task samer@0: { samer@0: Background bg; samer@0: Geometry geom; samer@0: Appearance app; samer@0: samer@0: VDouble speed, scale; samer@0: float angle=0; samer@0: samer@0: Transform3D mt=new Transform3D(); samer@0: Canvas3D canvas; samer@0: GraphicsContext3D gc; samer@0: samer@0: samer@0: public ImmediateRenderer(Canvas3D c) throws Exception samer@0: { samer@0: canvas=c; samer@0: canvas.stopRenderer(); samer@0: samer@0: speed=new VDouble("speed",0.1); samer@0: scale=new VDouble("scale",1); samer@0: } samer@0: samer@0: public void setGeometry(Geometry g) { geom=g; } samer@0: public void setAppearance(Appearance a) { app=a; } samer@0: public void setBackground(Background b) { bg=b; } samer@0: samer@0: public void dispose() { speed.dispose(); scale.dispose(); samer@0: } samer@0: samer@0: public void stopping() { Shell.print("immediate renderer stopping"); } samer@0: public void starting() { samer@0: Shell.print("immediate renderer starting"); samer@0: if (gc==null) gc = canvas.getGraphicsContext3D(); samer@0: if (app!=null) gc.setAppearance(app); samer@0: if (bg!=null) gc.setBackground(bg); samer@0: } samer@0: samer@0: public void run() { samer@0: mt.rotY(angle+=speed.value); samer@0: mt.setScale(scale.value); samer@0: gc.setModelTransform(mt); samer@0: gc.clear(); samer@0: gc.draw(geom); samer@0: canvas.swap(); samer@0: } samer@0: }