aboutsummaryrefslogtreecommitdiffstats
path: root/src/FourByFour/PickDragBehavior.java
diff options
context:
space:
mode:
authorkcr <kcr@28c7f869-5b4e-e670-f602-82bfaf57f300>2006-02-01 01:33:24 +0000
committerkcr <kcr@28c7f869-5b4e-e670-f602-82bfaf57f300>2006-02-01 01:33:24 +0000
commit39283191507259cb4dccba3441cdf16025179829 (patch)
tree29ad229325ab151a056d06fbe4c6f1fcd7b292d7 /src/FourByFour/PickDragBehavior.java
parent3d596b24b72677fbf264a22f3c0ff44aa9bb2baf (diff)
Issue 206 : Example program cleanup
Item 4) Reorganized directory structure to make the examples a single project rather than a collection of independent apps. . All example programs moved under src/classes, and all are now in a subpackage of org.jdesktop.j3d.examples. . All resource files (geometry, images, audio) moved under src/resources . ant script now exists only at top level . Created netbeans project file for NetBeans IDE
Diffstat (limited to 'src/FourByFour/PickDragBehavior.java')
-rw-r--r--src/FourByFour/PickDragBehavior.java216
1 files changed, 0 insertions, 216 deletions
diff --git a/src/FourByFour/PickDragBehavior.java b/src/FourByFour/PickDragBehavior.java
deleted file mode 100644
index 7645af9..0000000
--- a/src/FourByFour/PickDragBehavior.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * $RCSfile$
- *
- * Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any
- * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
- * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
- * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL
- * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
- * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
- * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR
- * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
- * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND
- * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
- * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed, licensed or
- * intended for use in the design, construction, operation or
- * maintenance of any nuclear facility.
- *
- * $Revision$
- * $Date$
- * $State$
- */
-
-import java.awt.*;
-import java.awt.event.*;
-import java.util.*;
-import javax.media.j3d.*;
-import javax.vecmath.*;
-import com.sun.j3d.utils.geometry.Sphere;
-
-/**
- * Class: PickDragBehavior
- *
- * Description: Used to respond to mouse pick and drag events
- * in the 3D window.
- *
- * Version: 1.0
- *
- */
-public class PickDragBehavior extends Behavior {
-
- WakeupCriterion[] mouseEvents;
- WakeupOr mouseCriterion;
- int x, y;
- int x_last, y_last;
- double x_angle, y_angle;
- double x_factor, y_factor;
- Transform3D modelTrans;
- Transform3D transformX;
- Transform3D transformY;
- TransformGroup transformGroup;
- BranchGroup branchGroup;
- Canvas2D canvas2D;
- Canvas3D canvas3D;
- Positions positions;
- PickRay pickRay = new PickRay();
- SceneGraphPath sceneGraphPath[];
- Appearance highlight;
- boolean parallel;
-
- PickDragBehavior(Canvas2D canvas2D, Canvas3D canvas3D, Positions positions,
- BranchGroup branchGroup, TransformGroup transformGroup) {
-
- this.canvas2D = canvas2D;
- this.canvas3D = canvas3D;
- this.positions = positions;
- this.branchGroup = branchGroup;
- this.transformGroup = transformGroup;
-
- modelTrans = new Transform3D();
- transformX = new Transform3D();
- transformY = new Transform3D();
-
- Color3f white = new Color3f(1.0f, 1.0f, 1.0f);
- Color3f black = new Color3f(0.0f, 0.0f, 0.0f);
- Color3f green = new Color3f(0.0f, 1.0f, 0.0f);
-
- highlight = new Appearance();
- highlight.setMaterial(new Material(green, black, green, white, 80.f));
-
- parallel = true;
- }
-
- public void initialize() {
- x = 0;
- y = 0;
- x_last = 0;
- y_last = 0;
- x_angle = 0;
- y_angle = 0;
- x_factor = .02;
- y_factor = .02;
-
- mouseEvents = new WakeupCriterion[2];
- mouseEvents[0] = new WakeupOnAWTEvent(MouseEvent.MOUSE_DRAGGED);
- mouseEvents[1] = new WakeupOnAWTEvent(MouseEvent.MOUSE_PRESSED);
- mouseCriterion = new WakeupOr(mouseEvents);
- wakeupOn (mouseCriterion);
- }
-
- public void processStimulus (Enumeration criteria) {
- WakeupCriterion wakeup;
- AWTEvent[] event;
- int id;
- int dx, dy;
-
- while (criteria.hasMoreElements()) {
- wakeup = (WakeupCriterion) criteria.nextElement();
- if (wakeup instanceof WakeupOnAWTEvent) {
- event = ((WakeupOnAWTEvent)wakeup).getAWTEvent();
- for (int i=0; i<event.length; i++) {
- id = event[i].getID();
- if (id == MouseEvent.MOUSE_DRAGGED) {
-
- x = ((MouseEvent)event[i]).getX();
- y = ((MouseEvent)event[i]).getY();
-
- dx = x - x_last;
- dy = y - y_last;
-
- x_angle = dy * y_factor;
- y_angle = dx * x_factor;
-
- transformX.rotX(x_angle);
- transformY.rotY(y_angle);
-
- modelTrans.mul(transformX, modelTrans);
- modelTrans.mul(transformY, modelTrans);
-
- transformGroup.setTransform(modelTrans);
-
- x_last = x;
- y_last = y;
- }
- else if (id == MouseEvent.MOUSE_PRESSED) {
-
- x = x_last = ((MouseEvent)event[i]).getX();
- y = y_last = ((MouseEvent)event[i]).getY();
-
- Point3d eyePos = new Point3d();
- canvas3D.getCenterEyeInImagePlate(eyePos);
-
- Point3d mousePos = new Point3d();
- canvas3D.getPixelLocationInImagePlate(x, y, mousePos);
-
- Transform3D transform3D = new Transform3D();
- canvas3D.getImagePlateToVworld(transform3D);
-
- transform3D.transform(eyePos);
- transform3D.transform(mousePos);
-
- Vector3d mouseVec;
- if (parallel) {
- mouseVec = new Vector3d(0.f, 0.f, -1.f);
- }
- else {
- mouseVec = new Vector3d();
- mouseVec.sub(mousePos, eyePos);
- mouseVec.normalize();
- }
-
- pickRay.set(mousePos, mouseVec);
- sceneGraphPath = branchGroup.pickAllSorted(pickRay);
-
- if (sceneGraphPath != null) {
- for (int j=0; j<sceneGraphPath.length; j++) {
- if (sceneGraphPath[j] != null) {
- Node node = sceneGraphPath[j].getObject();
- if (node instanceof Shape3D) {
- try {
- ID posID = (ID) node.getUserData();
- if (posID != null) {
- int pos = posID.get();
- positions.set(pos, Positions.HUMAN);
- canvas2D.repaint();
- break;
- }
- }
- catch (CapabilityNotSetException e) {
- // Catch all CapabilityNotSet exceptions and
- // throw them away, prevents renderer from
- // locking up when encountering "non-selectable"
- // objects.
- }
- }
- }
- }
- }
- }
- }
- }
- }
- wakeupOn (mouseCriterion);
- }
-}