Add selection highlighting support; disable cube.
[gravitysimulator.git] / src / edu / mit / ezyang / gravity / j3d / PickSelectBehavior.java
blobab866f4afb60476fb4d0b42132a54059a172f60e
1 /*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
6 package edu.mit.ezyang.gravity.j3d;
8 import com.sun.j3d.utils.behaviors.mouse.MouseBehaviorCallback;
9 import com.sun.j3d.utils.geometry.Primitive;
10 import com.sun.j3d.utils.picking.PickResult;
11 import com.sun.j3d.utils.picking.behaviors.PickMouseBehavior;
12 import java.awt.event.MouseEvent;
13 import javax.media.j3d.Bounds;
14 import javax.media.j3d.BranchGroup;
15 import javax.media.j3d.Canvas3D;
16 import javax.media.j3d.Transform3D;
18 /**
20 * @author Edward Z. Yang <ezyang@mit.edu>
22 public class PickSelectBehavior extends PickMouseBehavior implements MouseBehaviorCallback {
23 protected PickSelectCallback callback;
24 public PickSelectBehavior(BranchGroup root, Canvas3D canvas, Bounds bounds) {
25 super(canvas, root, bounds);
26 setSchedulingBounds(bounds);
28 public void setupCallback(PickSelectCallback callback) {
29 this.callback = callback;
31 public void updateScene(int xpos, int ypos) {
32 Primitive primitive = null;
33 if (mevent.getButton() == MouseEvent.BUTTON1) {
34 pickCanvas.setShapeLocation(xpos, ypos);
35 PickResult pr = pickCanvas.pickClosest();
36 if ((pr != null) &&
37 ((primitive = (Primitive) pr.getNode(PickResult.PRIMITIVE)) != null) &&
38 (primitive.getCapability(Primitive.ENABLE_APPEARANCE_MODIFY ))) {
39 if (callback != null) {
40 callback.notifyPick(primitive);
46 /**
47 * Callback method from MouseTranslate
48 * This is used when the Picking callback is enabled
50 public void transformChanged(int type, Transform3D transform) {