annotate src/samer/j3d/ImmediateRenderer.java @ 8:5e3cbbf173aa tip

Reorganise some more
author samer
date Fri, 05 Apr 2019 22:41:58 +0100
parents bf79fb79ee13
children
rev   line source
samer@0 1 /*
samer@0 2 */
samer@0 3 package samer.j3d;
samer@0 4
samer@0 5 import samer.core.*;
samer@0 6 import samer.core.types.*;
samer@0 7 import samer.maths.*;
samer@0 8 import samer.tools.*;
samer@0 9 import java.io.*;
samer@0 10 import java.awt.event.*;
samer@0 11 import javax.media.j3d.*;
samer@0 12 import javax.vecmath.*;
samer@0 13
samer@0 14 public class ImmediateRenderer extends Util implements Task
samer@0 15 {
samer@0 16 Background bg;
samer@0 17 Geometry geom;
samer@0 18 Appearance app;
samer@0 19
samer@0 20 VDouble speed, scale;
samer@0 21 float angle=0;
samer@0 22
samer@0 23 Transform3D mt=new Transform3D();
samer@0 24 Canvas3D canvas;
samer@0 25 GraphicsContext3D gc;
samer@0 26
samer@0 27
samer@0 28 public ImmediateRenderer(Canvas3D c) throws Exception
samer@0 29 {
samer@0 30 canvas=c;
samer@0 31 canvas.stopRenderer();
samer@0 32
samer@0 33 speed=new VDouble("speed",0.1);
samer@0 34 scale=new VDouble("scale",1);
samer@0 35 }
samer@0 36
samer@0 37 public void setGeometry(Geometry g) { geom=g; }
samer@0 38 public void setAppearance(Appearance a) { app=a; }
samer@0 39 public void setBackground(Background b) { bg=b; }
samer@0 40
samer@0 41 public void dispose() { speed.dispose(); scale.dispose();
samer@0 42 }
samer@0 43
samer@0 44 public void stopping() { Shell.print("immediate renderer stopping"); }
samer@0 45 public void starting() {
samer@0 46 Shell.print("immediate renderer starting");
samer@0 47 if (gc==null) gc = canvas.getGraphicsContext3D();
samer@0 48 if (app!=null) gc.setAppearance(app);
samer@0 49 if (bg!=null) gc.setBackground(bg);
samer@0 50 }
samer@0 51
samer@0 52 public void run() {
samer@0 53 mt.rotY(angle+=speed.value);
samer@0 54 mt.setScale(scale.value);
samer@0 55 gc.setModelTransform(mt);
samer@0 56 gc.clear();
samer@0 57 gc.draw(geom);
samer@0 58 canvas.swap();
samer@0 59 }
samer@0 60 }