package evelynsgemz;
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.PerspectiveCamera;
import javafx.scene.SceneAntialiasing;
import javafx.scene.SubScene;
import javafx.scene.image.Image;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.ScrollEvent;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.Box;
import javafx.scene.shape.Sphere;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
/**
*
* @author Mykel D
*/
public class View3D extends GEMz {
public View3D(Stage ThreeDStage) {
super(ThreeDStage);
System.setProperty("prism.dirtyopts", "false");
setFullscreen(ThreeDStage);
cameraXform.getChildren().add(cameraXform2);
cameraXform2.getChildren().add(cameraXform3);
cameraXform3.getChildren().add(theCamera);
cameraXform3.setRotateZ(180.0);
theCamera.setNearClip(0.1);
theCamera.setFarClip(10000.0);
theCamera.setTranslateZ(-cameraDistance);
cameraXform.ry.setAngle(320.0);
cameraXform.rx.setAngle(40);
final PhongMaterial redMaterial = new PhongMaterial();
redMaterial.setSpecularColor(Color.ORANGE);
redMaterial.setDiffuseColor(Color.RED);
final PhongMaterial gridMaterial = new PhongMaterial();
gridMaterial.setSpecularColor(Color.ORANGE);
gridMaterial.setDiffuseColor(Color.RED);
final PhongMaterial floorMaterial = new PhongMaterial();
floorMaterial.setSpecularColor(Color.AQUA);
floorMaterial.setDiffuseColor(Color.AQUAMARINE);
Image floorImage;
floorImage = new Image(View3D.class.getResourceAsStream("Images/PlanetSkin1.jpg"));
floorMaterial.setDiffuseMap(floorImage);
floorMaterial.setSelfIlluminationMap(floorImage);
floorMaterial.setBumpMap(floorImage);
final PhongMaterial blueMaterial = new PhongMaterial();
blueMaterial.setDiffuseColor(Color.BLUE);
blueMaterial.setSpecularColor(Color.LIGHTBLUE);
Image sphereImage;
sphereImage = new Image(View3D.class.getResourceAsStream("Images/GreenMarble.jpg"));
final Sphere redMain = new Sphere(2);
redMain.setMaterial(blueMaterial);
redMain.setTranslateX(0);
redMain.setTranslateY(0);
redMain.setTranslateZ(0);
final Sphere blue = new Sphere(5);
blue.setMaterial(redMaterial);
blue.setTranslateX(10);
blue.setTranslateY(5);
blue.setTranslateZ(0);
final Box Floor = new Box(500, .5, 500);
Floor.setMaterial(floorMaterial);
Floor.setTranslateX(0);
Floor.setTranslateY(0);
Floor.setTranslateZ(0);
theTings.getChildren().addAll(Floor, redMain, blue);
theTings.setRotationAxis(Rotate.Y_AXIS);
theTings.setFocusTraversable(true);
tingsMovement.getChildren().add(theTings);
for (int x = 0; x < 30; x += 10) {
for (int y = 0; y < 30; y += 5) {
for (int z = 0; z < 30; z += 10) {
final Sphere theString = new Sphere(.5);
theString.setMaterial(gridMaterial);
theTings.getChildren().add(theString);
theString.setTranslateX(x);
theString.setTranslateY(y);
theString.setTranslateZ(z);
}
}
}
tingsMovement.setOnMousePressed((MouseEvent event) -> {
mousePosX = event.getSceneX();
mousePosY = event.getSceneY();
mouseOldX = event.getSceneX();
mouseOldY = event.getSceneY();
});
tingsMovement.setOnMouseDragged((MouseEvent event) -> {
mouseOldX = mousePosX;
mouseOldY = mousePosY;
mousePosX = event.getSceneX();
mousePosY = event.getSceneY();
mouseDeltaX = (mousePosX - mouseOldX);
mouseDeltaY = (mousePosY - mouseOldY);
double modifier = 1.0;
double modifierFactor = 0.1;
if (event.isSecondaryButtonDown()) {
cameraXform.ry.setAngle(cameraXform.ry.getAngle() - mouseDeltaX * modifierFactor * modifier * 13.0); // +
cameraXform.rx.setAngle(cameraXform.rx.getAngle() + mouseDeltaY * modifierFactor * modifier * 13.0); // -
} else if (event.isPrimaryButtonDown()) {
double z = theCamera.getTranslateZ();
double newZ = z + mouseDeltaX * modifierFactor * modifier * 4;
theCamera.setTranslateZ(newZ);
} else if (event.isMiddleButtonDown()) {
cameraXform2.t.setX(cameraXform2.t.getX() + mouseDeltaX * modifierFactor * modifier * 0.3); // -
cameraXform2.t.setY(cameraXform2.t.getY() + mouseDeltaY * modifierFactor * modifier * 0.3); // -
}
});
//////////////////////////////
tingsMovement.setOnKeyPressed((KeyEvent event) -> {
switch (event.getCode()) {
case Z:
if (event.isShiftDown()) {
cameraXform.ry.setAngle(0.0);
cameraXform.rx.setAngle(0.0);
theCamera.setTranslateZ(-300.0);
}
cameraXform2.t.setX(0.0);
cameraXform2.t.setY(0.0);
break;
case X:
break;
case S:
if (event.isControlDown()) {
if (theTings.isVisible()) {
theTings.setVisible(false);
} else {
theTings.setVisible(true);
}
}
break;
case SPACE:
break;
case UP:
if (event.isControlDown() && event.isShiftDown()) {
cameraXform2.t.setY(cameraXform2.t.getY() - 10.0 * CONTROL_MULTIPLIER);
} else if (event.isAltDown() && event.isShiftDown()) {
cameraXform.rx.setAngle(cameraXform.rx.getAngle() - 10.0 * ALT_MULTIPLIER);
} else if (event.isControlDown()) {
cameraXform2.t.setY(cameraXform2.t.getY() - 1.0 * CONTROL_MULTIPLIER);
} else if (event.isAltDown()) {
cameraXform.rx.setAngle(cameraXform.rx.getAngle() - 2.0 * ALT_MULTIPLIER);
} else if (event.isShiftDown()) {
double z = theCamera.getTranslateZ();
double newZ = z + 5.0 * SHIFT_MULTIPLIER;
theCamera.setTranslateZ(newZ);
}
break;
case DOWN:
if (event.isControlDown() && event.isShiftDown()) {
cameraXform2.t.setY(cameraXform2.t.getY() + 10.0 * CONTROL_MULTIPLIER);
} else if (event.isAltDown() && event.isShiftDown()) {
cameraXform.rx.setAngle(cameraXform.rx.getAngle() + 10.0 * ALT_MULTIPLIER);
} else if (event.isControlDown()) {
cameraXform2.t.setY(cameraXform2.t.getY() + 1.0 * CONTROL_MULTIPLIER);
} else if (event.isAltDown()) {
cameraXform.rx.setAngle(cameraXform.rx.getAngle() + 2.0 * ALT_MULTIPLIER);
} else if (event.isShiftDown()) {
double z = theCamera.getTranslateZ();
double newZ = z - 5.0 * SHIFT_MULTIPLIER;
theCamera.setTranslateZ(newZ);
}
break;
case RIGHT:
if (event.isControlDown() && event.isShiftDown()) {
cameraXform2.t.setX(cameraXform2.t.getX() + 10.0 * CONTROL_MULTIPLIER);
} else if (event.isAltDown() && event.isShiftDown()) {
cameraXform.ry.setAngle(cameraXform.ry.getAngle() - 10.0 * ALT_MULTIPLIER);
} else if (event.isControlDown()) {
cameraXform2.t.setX(cameraXform2.t.getX() + 1.0 * CONTROL_MULTIPLIER);
} else if (event.isAltDown()) {
cameraXform.ry.setAngle(cameraXform.ry.getAngle() - 2.0 * ALT_MULTIPLIER);
}
break;
case LEFT:
if (event.isControlDown() && event.isShiftDown()) {
cameraXform2.t.setX(cameraXform2.t.getX() - 10.0 * CONTROL_MULTIPLIER);
} else if (event.isAltDown() && event.isShiftDown()) {
cameraXform.ry.setAngle(cameraXform.ry.getAngle() + 10.0 * ALT_MULTIPLIER); // -
} else if (event.isControlDown()) {
cameraXform2.t.setX(cameraXform2.t.getX() - 1.0 * CONTROL_MULTIPLIER);
} else if (event.isAltDown()) {
cameraXform.ry.setAngle(cameraXform.ry.getAngle() + 2.0 * ALT_MULTIPLIER); // -
}
break;
}
});
////////////////////////////////////////////////////////////////////////////////
SubScene theScene = new SubScene(tingsMovement, maxX, maxY, true, SceneAntialiasing.BALANCED);
theScene.setFill(Color.GRAY);
theScene.setCamera(theCamera);
getChildren().add(theScene);
}
}
package evelynsgemz;
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.event.EventHandler;
import javafx.scene.Cursor;
import javafx.scene.Group;
import javafx.scene.control.ProgressBar;
import javafx.scene.image.Image;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.paint.ImagePattern;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;
/**
*
* @progName: EvelynsGEMz
* @fileName: EvelynsGemz.java
* @author: MyKel D
* @contributor: Wesley Owen
* @date: July 8,2013
*
*/
public class PlayGame extends GEMz {
PlayGame(final Stage PlayGameStage) {
super(PlayGameStage);
setFullscreen(PlayGameStage);
Pane chatbox = ChatBox(minX + 3, maxY - 265, 352, 234);
Group Manager = UImanagment(PlayGameStage, centerX-150, maxY - 28, 350, 25);
Manager.setFocusTraversable(true);
View3D Td = new View3D(PlayGameStage);
Td.setFocusTraversable(true);
tingsMovement.setFocusTraversable(true);
Group root;
root = new Group();
root.getChildren().addAll(Td, chatbox, Manager, doExit(maxX - 25, minY + 3, "X"));
getChildren().add(root);
}
even though tingsMovement.setFocusTraversable() has been set to true, the keyboard wont respond, the tab doesn't seem to go to View3D Td object to allow key processing - what am I doing wrong and any suggestions on how to fix??