//Title: camera_mover.java //Version: //Copyright: Copyright (c) 2000 //Author: SyGem Software import java.awt.*; import java.applet.*; import sygem.jazz3d2_102.*; public class camera_mover extends Applet implements Runnable { Thread m_ce; world c_world; int light1; int pid,pid2,pid3,pid4; //Construct the applet public camera_mover() { } //Initialize the applet public void init() { resize(320,240); c_world = new world(this); setLayout(new BorderLayout()); add("Center", c_world); renderwf wireframe = new renderwf(); wireframe.setLineColour(255,255,128); wireframe.setHiddenLineRemoval(true); renderfs flat_shader = new renderfs(); rendergs gourard_shader = new rendergs(); loader load_container = new loader(c_world); load_container.assignLoader("txt", new loaderasc()); model3d duck = new model3d(0,0,8); duck.loadModel("models/duck.txt", load_container); torus3d torus = new torus3d(0.4,0.2,0.2,15,15,0,0,-8); torus.setColour(255,0,128); cube3d cube = new cube3d(-8,0,0); sphere3d sphere = new sphere3d(10,10,8,0,0); sphere.setColour(0,255,128); pid = c_world.addObject(duck,flat_shader); pid2 = c_world.addObject(torus,gourard_shader); pid3 = c_world.addObject(cube,wireframe); pid4 = c_world.addObject(sphere,flat_shader); light temp_light = new light(-1,0,1); light temp_light2 = new light(1,-1,0); light1 = c_world.addLight(temp_light); light1 = c_world.addLight(temp_light2); } //Start the applet public void start() { if (m_ce == null) { m_ce = new Thread(this); m_ce.start(); } } //Stop the applet public void stop() { if (m_ce != null) { m_ce.stop(); m_ce = null; } } //Destroy the applet public void destroy() { } public void run() { c_world.prep(); while (true) { c_world.rotateObjectLocal(pid,0,3,0); c_world.rotateObjectLocal(pid2,1,3,2); c_world.rotateObjectLocal(pid3,0,2,5); c_world.rotateObjectLocal(pid4,2,1,4); c_world.redraw(); } } public boolean handleEvent(Event e) { switch (e.id) { case Event.KEY_ACTION: case Event.KEY_PRESS: switch (e.key) { case Event.HOME: return true; case Event.UP: c_world.rotateCameraLocal(1,0,0); return true; case Event.DOWN: c_world.rotateCameraLocal(-1,0,0); return true; case Event.RIGHT: if (e.modifiers == Event.SHIFT_MASK) { c_world.rotateCameraLocal(0,-2,0); } else { if (e.modifiers == Event.CTRL_MASK) { c_world.moveCameraLocal(0.2,0,0); } else { c_world.rotateCameraLocal(0,-1,0); } } return true; case Event.LEFT: if (e.modifiers == Event.SHIFT_MASK) { c_world.rotateCameraLocal(0,2,0); } else { if (e.modifiers == Event.CTRL_MASK) { c_world.moveCameraLocal(-0.2,0,0); } else { c_world.rotateCameraLocal(0,1,0); } } return true; case 'x': c_world.rotateCameraLocal(0,0,-1); return true; case 'c': c_world.rotateCameraLocal(0,0,1); return true; case 'a': if (e.modifiers == Event.SHIFT_MASK) { c_world.moveCameraLocal(0,0,0.3); } else { c_world.moveCameraLocal(0,0,0.1); } return true; case 'z': if (e.modifiers == Event.SHIFT_MASK) { c_world.moveCameraLocal(0,0,-0.3); } else { c_world.moveCameraLocal(0,0,-0.1); } return true; default: return false; } default: return false; } } }