//Title:      picker.java
//Version:    
//Copyright:  Copyright (c) 2000
//Author:     SyGem Software

import java.awt.*;
import java.applet.*;
import sygem.jazz3d2_102.*;
public class picker extends Applet implements Runnable {
    
    Thread m_ce;
    world p_world;
    
    int light1;
    int pid,pid2,pid3,pid4;
    Label display;
    
    //Construct the applet
    public picker() {
    }
    
    //Initialize the applet
    public void init() {
        
        resize(320,240);
        p_world = new world(this);
        display = new Label("No object selected yet...");
        
        setLayout(new BorderLayout());
        add("Center", p_world);
        add("South", display);
        p_world.setMouseTracking(true);
        renderfs flat_shader = new renderfs();
        rendergs gourard_shader = new rendergs();
        torus3d torus = new torus3d(0.4,0.2,0.2,15,15,0.5,0,12);
        torus.setColour(255,0,128);
        
        cube3d cube = new cube3d(-0.5,0.5,12);
        cube.setColour(75,50,220);
        cube.scaleObject(0.8,0.8,0.8);
        
        sphere3d sphere = new sphere3d(10,10,-0.5,-0.5,12);
        sphere.setColour(0,255,128);
        
        pid =  p_world.addObject(sphere,gourard_shader);
        pid2 = p_world.addObject(torus,gourard_shader);
        pid3 = p_world.addObject(cube,flat_shader);
        
        light temp_light = new light(0,0,1);
        light1 = p_world.addLight(temp_light);
        
    }
    
    //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() {
        
        p_world.prep();
        
        while (true) {
            
            p_world.rotateObjectLocal(pid,0,3,0);
            p_world.rotateObjectLocal(pid2,1,3,2);
            p_world.rotateObjectLocal(pid3,0,2,5);
            p_world.redraw();
        }
    }
    
        public boolean mouseUp(Event e, int x, int y) {
                int id = p_world.getObjectAt(x,y);
                String click_string = "That's not an object...";
                if (id==0) click_string = "You clicked on the green sphere";
                if (id==1) click_string = "You clicked on the red torus";
                if (id==2) click_string = "You clicked on the blue cube";
                display.setText(click_string);
                return true;
        }
}