/* Auteur: Nicolas JANEY, nico@univ-fcomte.fr */

import com.sun.j3d.utils.geometry.*;
import java.util.Enumeration;
import javax.media.j3d.*;
import javax.vecmath.*;

public class CollisionDetector extends Behavior {

  private static Material highlight;
  private boolean inCollision = false;
  private Box shape;
  private Material shapeMaterial;
  private Appearance shapeAppearance;
  private WakeupOnCollisionEntry wEnter;
  private WakeupOnCollisionExit wExit;

  public CollisionDetector(Box s) {
    highlight = new Material();
    highlight.setDiffuseColor(new Color3f(1.0f,0.0f,0.0f));
    shape = s;
    shapeAppearance = shape.getAppearance();
    shapeMaterial = shapeAppearance.getMaterial();
    inCollision = false;
    }

  public void initialize() {
    wEnter = new WakeupOnCollisionEntry(shape);
    wExit = new WakeupOnCollisionExit(shape);
    wakeupOn(wEnter);
    }

  public void processStimulus(Enumeration criteria) {
    inCollision = !inCollision;
    if (inCollision) {
      shapeAppearance.setMaterial(highlight);
      wakeupOn(wExit);}
      else {
      shapeAppearance.setMaterial(shapeMaterial);
      wakeupOn(wEnter);}
    }
  }
