/* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Novembre 2001 */ 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);} } }