Mercurial > hg > jslab
view examples/java3d/hello11.java @ 1:5df24c91468d
Oh my what a mess.
author | samer |
---|---|
date | Fri, 05 Apr 2019 16:26:00 +0100 |
parents | |
children |
line wrap: on
line source
/* hello6.java Construct universe without using SimpleUniverse utility class - this puts together the view group explicitly. Now has dynamically creatable views. Have to construct views on BranchGroups so they can be added while universe is live? immediate mode */ import samer.core.*; import samer.core.types.*; import samer.tools.*; import java.awt.event.*; import javax.media.j3d.*; import javax.vecmath.*; public class hello11 extends util implements Agent { // create universe LocalUniverse U=new LocalUniverse(); BranchGroup root=new BranchGroup(); TaskThread tasks=new TaskThread(); Geometry geom; Appearance app; public static void main(String[] arse) { init(); new hello11(); Shell.interpret("expose"); } public hello11() { // create scene geom = yoyoGeometryInfo(128).getGeometryArray(); app = pointy2(); root.addChild(new TransformGroup()); root.addChild(new view("view")); root.setCapability(Group.ALLOW_CHILDREN_EXTEND); root.setCapability(Group.ALLOW_CHILDREN_WRITE); root.compile(); U.addGroup(root); Shell.registerAgent(this); Shell.exposeCommands(this); } public void getCommands(Agent.Registry r) { r.add("view"); } public void execute(String cmd, Environment env) throws Exception { if (cmd.equals("view")) { root.addChild(new view(X.string(env.datum("name"),"view"))); } } private class view extends Viewer implements Task { GraphicsContext3D gc; float angle=0; Transform3D mt=new Transform3D(); VDouble speed; public view(String name) { super( name); // great mate // lookFrom(new Point3d(0,0,8),new Vector3d(0,1,0)); canvas.stopRenderer(); tasks.addTask(this); Shell.push(node); speed=new VDouble("speed",0.1); Shell.pop(); } public void run() { mt.rotY(angle+=speed.value); gc.clear(); gc.setModelTransform(mt); gc.draw(geom); canvas.swap(); } public void dispose() { tasks.removeTask(this); super.dispose(); } public void stopping() { Shell.print("view stopping"); } public void starting() { Shell.print("view starting"); if (gc==null) gc = canvas.getGraphicsContext3D(); gc.setAppearance(app); } } }