import javax.media.j3d.*;
import javax.vecmath.*;
import java.util.Enumeration;

public class CollisionDetector extends Behavior
{
	public CollisionDetector(Node node)
	{
		this.node = node;
	}
	
	public void initialize()
	{
		WakeupCriterion [] criterions = new WakeupCriterion[3];
		criterions[0] = new WakeupOnCollisionEntry(node);
		criterions[1] = new WakeupOnCollisionExit(node);
		criterions[2] = new WakeupOnCollisionMovement(node);
		wakeup = new WakeupOr(criterions);
		wakeupOn(wakeup);
	}
	
	public void processStimulus(Enumeration criteria)
	{
		//System.out.println("something has happened");
		
		while(criteria.hasMoreElements())
		{
			WakeupCondition cond = (WakeupCondition) criteria.nextElement();
			
			if(cond instanceof WakeupOnCollisionEntry)
			{
				WakeupOnCollisionEntry w = (WakeupOnCollisionEntry) cond;
				SceneGraphPath p = w.getTriggeringPath();
				Node n = p.getObject();
				
				System.out.println("enter "+p+" "+n);
			}
			else if(cond instanceof WakeupOnCollisionExit)
			{
				System.out.println("exit");
			}
			else if(cond instanceof WakeupOnCollisionMovement)
			{
				System.out.println("move");
			}
		}
		wakeupOn(wakeup);
	}
	
	protected Node node;
	protected WakeupCondition wakeup;
}