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