/*
 * CollisionBehavior.java
 *
 * Created on 26. April 2003, 04:37
 */

package CollisionTest1BG;

import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.geometry.Cylinder;
/**
 *
 * @author  nomis
 */
public class CollisionBehavior extends Behavior {
    
    /** Creates a new instance of CollisionBehavior
     * This Behavior changes the Color from the
     */
    public CollisionBehavior(Shape3D node) {
        super();
        collObj = node;
    }
    
    public void initialize() {
        // Create WakeupCriterions for this Behavior
        w1 = new WakeupOnCollisionEntry((Node) collObj,WakeupOnCollisionEntry.USE_GEOMETRY);
        w2 = new WakeupOnCollisionExit((Node) collObj,WakeupOnCollisionExit.USE_GEOMETRY);
        warray[0] = w1;
        warray[1] = w2;
        w = new WakeupOr(warray);
        wakeupOn(w);
    }
    
    public void processStimulus(java.util.Enumeration criteria) {
        while(criteria.hasMoreElements()){
            WakeupCriterion wc = (WakeupCriterion) criteria.nextElement();
            if (wc instanceof WakeupOnCollisionEntry){
                Material mat = new Material();
                mat.setDiffuseColor(0f,0f,1f);
                mat.setAmbientColor(1f,0f,0f);
                mat.setSpecularColor(0f,1f,0f);
                collObj.getAppearance().setMaterial(mat);
            }
            else if (wc instanceof WakeupOnCollisionExit){
                Material mat = new Material();
                mat.setDiffuseColor(0f,0f,1f);
                mat.setAmbientColor(0f,1f,0f);
                mat.setSpecularColor(1f,0f,0f);
                collObj.getAppearance().setMaterial(mat);
            }
        }
        // set next WakeupCriterion
        wakeupOn(w);
    }
    
    private WakeupCriterion w1 = new WakeupOnCollisionEntry(new BoundingSphere());
    private WakeupCriterion w2 = new WakeupOnCollisionExit(new BoundingSphere());
    private WakeupCriterion[] warray = new WakeupCriterion[2];
    private WakeupOr w;
    private Shape3D collObj ;
    
}
