Mercurial > hg > jslab
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 } |