2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
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
;
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();
37 ((primitive
= (Primitive
) pr
.getNode(PickResult
.PRIMITIVE
)) != null) &&
38 (primitive
.getCapability(Primitive
.ENABLE_APPEARANCE_MODIFY
))) {
39 if (callback
!= null) {
40 callback
.notifyPick(primitive
);
47 * Callback method from MouseTranslate
48 * This is used when the Picking callback is enabled
50 public void transformChanged(int type
, Transform3D transform
) {