view 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
line wrap: on
line source
/*
*/
package samer.j3d;

import samer.core.*;
import samer.core.types.*;
import samer.maths.*;
import samer.tools.*;
import java.io.*;
import java.awt.event.*;
import javax.media.j3d.*;
import javax.vecmath.*;

public class ImmediateRenderer extends Util implements Task
{
	Background	bg;
	Geometry		geom;
	Appearance	app;
	
	VDouble		speed, scale;
	float				angle=0;
				
	Transform3D			mt=new Transform3D();
	Canvas3D				canvas;
	GraphicsContext3D	gc;
	
	
	public ImmediateRenderer(Canvas3D c) throws Exception
	{		
		canvas=c;
		canvas.stopRenderer();
	
		speed=new VDouble("speed",0.1);
		scale=new VDouble("scale",1);
	}

	public void setGeometry(Geometry g) { geom=g; }
	public void setAppearance(Appearance a) { app=a; }
	public void setBackground(Background b) { bg=b; }
	
	public void dispose() { speed.dispose(); scale.dispose(); 
	}
	
	public void stopping() { Shell.print("immediate renderer stopping"); }
	public void starting() { 
		Shell.print("immediate renderer starting"); 
		if (gc==null) gc = canvas.getGraphicsContext3D();
		if (app!=null) gc.setAppearance(app);
		if (bg!=null) gc.setBackground(bg);
	}

	public void run() {
		mt.rotY(angle+=speed.value);
		mt.setScale(scale.value);
		gc.setModelTransform(mt);
		gc.clear();
		gc.draw(geom);
		canvas.swap();
	}
}