use of javafx.scene.input.KeyCode in project FXyzLib by Birdasaur.
the class ScatterPlotMeshTest method start.
@Override
public void start(Stage primaryStage) throws Exception {
Group sceneRoot = new Group();
Scene scene = new Scene(sceneRoot, sceneWidth, sceneHeight, true, SceneAntialiasing.BALANCED);
scene.setFill(Color.BLACK);
camera = new PerspectiveCamera(true);
camera.setNearClip(0.1);
camera.setFarClip(10000.0);
camera.setTranslateZ(-1000);
scene.setCamera(camera);
scatterPlotMesh = new ScatterPlotMesh(1000, 1, true);
sceneRoot.getChildren().addAll(scatterPlotMesh);
ArrayList<Double> dataX = new ArrayList<>();
ArrayList<Double> dataY = new ArrayList<>();
ArrayList<Double> dataZ = new ArrayList<>();
for (int i = -250; i < 250; i++) {
dataX.add(new Double(i));
dataY.add(new Double(Math.sin(i) * 50) + i);
dataZ.add(new Double(Math.cos(i) * 50) + i);
}
scatterPlotMesh.setXYZData(dataX, dataY, dataZ);
scene.setOnKeyPressed(event -> {
double change = 10.0;
if (event.isShiftDown()) {
change = 50.0;
}
KeyCode keycode = event.getCode();
if (keycode == KeyCode.W) {
camera.setTranslateZ(camera.getTranslateZ() + change);
}
if (keycode == KeyCode.S) {
camera.setTranslateZ(camera.getTranslateZ() - change);
}
if (keycode == KeyCode.A) {
camera.setTranslateX(camera.getTranslateX() - change);
}
if (keycode == KeyCode.D) {
camera.setTranslateX(camera.getTranslateX() + change);
}
});
//Add a Mouse Handler for Rotations
Rotate xRotate = new Rotate(0, Rotate.X_AXIS);
Rotate yRotate = new Rotate(0, Rotate.Y_AXIS);
Rotate zRotate = new Rotate(0, Rotate.Z_AXIS);
scatterPlotMesh.getTransforms().addAll(xRotate, yRotate);
//Use Binding so your rotation doesn't have to be recreated
xRotate.angleProperty().bind(angleX);
yRotate.angleProperty().bind(angleY);
zRotate.angleProperty().bind(angleZ);
//Start Tracking mouse movements only when a button is pressed
scene.setOnMousePressed(event -> {
scenex = event.getSceneX();
sceney = event.getSceneY();
fixedXAngle = angleX.get();
fixedYAngle = angleY.get();
if (event.isMiddleButtonDown()) {
scenez = event.getSceneX();
fixedZAngle = angleZ.get();
}
});
//Angle calculation will only change when the button has been pressed
scene.setOnMouseDragged(event -> {
if (event.isMiddleButtonDown())
angleZ.set(fixedZAngle - (scenez - event.getSceneY()));
else
angleX.set(fixedXAngle - (scenex - event.getSceneY()));
angleY.set(fixedYAngle + sceney - event.getSceneX());
});
primaryStage.setTitle("F(X)yz ScatterPlotTest");
primaryStage.setScene(scene);
primaryStage.show();
}
use of javafx.scene.input.KeyCode in project FXyzLib by Birdasaur.
the class ScatterPlotTest method start.
@Override
public void start(Stage primaryStage) throws Exception {
Group sceneRoot = new Group();
Scene scene = new Scene(sceneRoot, sceneWidth, sceneHeight, true, SceneAntialiasing.BALANCED);
scene.setFill(Color.BLACK);
camera = new PerspectiveCamera(true);
camera.setNearClip(0.1);
camera.setFarClip(10000.0);
camera.setTranslateZ(-1000);
scene.setCamera(camera);
scatterPlot = new ScatterPlot(1000, 1, true);
sceneRoot.getChildren().addAll(scatterPlot);
ArrayList<Double> dataX = new ArrayList<>();
ArrayList<Double> dataY = new ArrayList<>();
ArrayList<Double> dataZ = new ArrayList<>();
for (int i = -250; i < 250; i++) {
dataX.add(new Double(i));
dataY.add(new Double(Math.sin(i) * 50) + i);
dataZ.add(new Double(Math.cos(i) * 50) + i);
}
scatterPlot.setXYZData(dataX, dataY, dataZ);
scene.setOnKeyPressed(event -> {
double change = 10.0;
if (event.isShiftDown()) {
change = 50.0;
}
KeyCode keycode = event.getCode();
if (keycode == KeyCode.W) {
camera.setTranslateZ(camera.getTranslateZ() + change);
}
if (keycode == KeyCode.S) {
camera.setTranslateZ(camera.getTranslateZ() - change);
}
if (keycode == KeyCode.A) {
camera.setTranslateX(camera.getTranslateX() - change);
}
if (keycode == KeyCode.D) {
camera.setTranslateX(camera.getTranslateX() + change);
}
});
//Add a Mouse Handler for Rotations
Rotate xRotate = new Rotate(0, Rotate.X_AXIS);
Rotate yRotate = new Rotate(0, Rotate.Y_AXIS);
Rotate zRotate = new Rotate(0, Rotate.Z_AXIS);
scatterPlot.getTransforms().addAll(xRotate, yRotate);
//Use Binding so your rotation doesn't have to be recreated
xRotate.angleProperty().bind(angleX);
yRotate.angleProperty().bind(angleY);
zRotate.angleProperty().bind(angleZ);
//Start Tracking mouse movements only when a button is pressed
scene.setOnMousePressed(event -> {
scenex = event.getSceneX();
sceney = event.getSceneY();
fixedXAngle = angleX.get();
fixedYAngle = angleY.get();
if (event.isMiddleButtonDown()) {
scenez = event.getSceneX();
fixedZAngle = angleZ.get();
}
});
//Angle calculation will only change when the button has been pressed
scene.setOnMouseDragged(event -> {
if (event.isMiddleButtonDown())
angleZ.set(fixedZAngle - (scenez - event.getSceneY()));
else
angleX.set(fixedXAngle - (scenex - event.getSceneY()));
angleY.set(fixedYAngle + sceney - event.getSceneX());
});
primaryStage.setTitle("F(X)yz ScatterPlotTest");
primaryStage.setScene(scene);
primaryStage.show();
}
use of javafx.scene.input.KeyCode in project FXyzLib by Birdasaur.
the class SegmentedSphereTest method start.
@Override
public void start(Stage primaryStage) throws Exception {
Group sceneRoot = new Group();
Scene scene = new Scene(sceneRoot, sceneWidth, sceneHeight, true, SceneAntialiasing.BALANCED);
// scene.setFill(Color.BLACK);
camera = new PerspectiveCamera(true);
//setup camera transform for rotational support
cameraTransform.setTranslate(0, 0, 0);
cameraTransform.getChildren().add(camera);
camera.setNearClip(0.1);
camera.setFarClip(100000.0);
camera.setTranslateZ(-0);
camera.setFieldOfView(100);
cameraTransform.ry.setAngle(-45.0);
cameraTransform.rx.setAngle(-30.0);
//add a Point Light for better viewing of the grid coordinate system
PointLight light = new PointLight(Color.WHITE);
// cameraTransform.getChildren().add(light);
cameraTransform.getChildren().add(new AmbientLight(Color.WHITE));
light.setTranslateX(0);
light.setTranslateY(0);
light.setTranslateZ(-1000);
scene.setCamera(camera);
rotateY = new Rotate(0, 0, 0, 0, Rotate.Y_AXIS);
Group group = new Group();
group.getChildren().add(cameraTransform);
// torus = new SegmentedSphereMesh(100, 0, 10, 2000d, new Point3D(20f,4f,-2f));
sphere = new SegmentedSphereMesh(200, 0, 0, 100, new Point3D(0f, 0f, 0f));
// torus.setDrawMode(DrawMode.LINE);
// torus.setCullFace(CullFace.NONE);
// NONE
// torus.setTextureModeNone(Color.FORESTGREEN);
// IMAGE
// torus.setTextureModeImage(getClass().getResource("res/share-carousel_In.png").toExternalForm());
// PATTERN
// torus.setTextureModePattern(20.0d);
// DENSITY
sphere.setTextureModeVertices3D(2, dens);
// FACES
// torus.setTextureModeFaces(256*256);
sphere.getTransforms().addAll(new Rotate(0, Rotate.X_AXIS), rotateY);
// banner.getTransforms().addAll(new Rotate(0,Rotate.X_AXIS),rotateY);
//,banner);
group.getChildren().addAll(sphere);
sceneRoot.getChildren().addAll(group);
//First person shooter keyboard movement
scene.setOnKeyPressed(event -> {
double change = 10.0;
if (event.isShiftDown()) {
change = 50.0;
}
KeyCode keycode = event.getCode();
if (keycode == KeyCode.W) {
camera.setTranslateZ(camera.getTranslateZ() + change);
}
if (keycode == KeyCode.S) {
camera.setTranslateZ(camera.getTranslateZ() - change);
}
if (keycode == KeyCode.A) {
camera.setTranslateX(camera.getTranslateX() - change);
}
if (keycode == KeyCode.D) {
camera.setTranslateX(camera.getTranslateX() + change);
}
if (keycode == KeyCode.L) {
camera.setTranslateY(camera.getTranslateY() - change);
}
if (keycode == KeyCode.R) {
camera.setTranslateY(camera.getTranslateY() + change);
}
});
scene.setOnMousePressed((MouseEvent me) -> {
mousePosX = me.getSceneX();
mousePosY = me.getSceneY();
mouseOldX = me.getSceneX();
mouseOldY = me.getSceneY();
});
scene.setOnMouseDragged((MouseEvent me) -> {
mouseOldX = mousePosX;
mouseOldY = mousePosY;
mousePosX = me.getSceneX();
mousePosY = me.getSceneY();
mouseDeltaX = (mousePosX - mouseOldX);
mouseDeltaY = (mousePosY - mouseOldY);
double modifier = 10.0;
double modifierFactor = 0.1;
if (me.isControlDown()) {
modifier = 0.1;
}
if (me.isShiftDown()) {
modifier = 50.0;
}
if (me.isPrimaryButtonDown()) {
// +
cameraTransform.ry.setAngle(((cameraTransform.ry.getAngle() + mouseDeltaX * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180);
// -
cameraTransform.rx.setAngle(((cameraTransform.rx.getAngle() - mouseDeltaY * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180);
} else if (me.isSecondaryButtonDown()) {
double z = camera.getTranslateZ();
double newZ = z + mouseDeltaX * modifierFactor * modifier;
camera.setTranslateZ(newZ);
} else if (me.isMiddleButtonDown()) {
// -
cameraTransform.t.setX(cameraTransform.t.getX() + mouseDeltaX * modifierFactor * modifier * 0.3);
// -
cameraTransform.t.setY(cameraTransform.t.getY() + mouseDeltaY * modifierFactor * modifier * 0.3);
}
});
lastEffect = System.nanoTime();
AtomicInteger count = new AtomicInteger();
AnimationTimer timerEffect = new AnimationTimer() {
@Override
public void handle(long now) {
if (now > lastEffect + 1_000_000_000l) {
// dens = p->(float)(p.x*Math.cos(count.get()%100d*2d*Math.PI/50d)+p.y*Math.sin(count.get()%100d*2d*Math.PI/50d));
// torus.setDensity(dens);
// if(count.get()%100<50){
// torus.setDrawMode(DrawMode.LINE);
// } else {
// torus.setDrawMode(DrawMode.FILL);
// }
// spring.setLength(100+20*(count.get()%10));
// torus.setColors((int)Math.pow(2,count.get()%16));
// torus.setMajorRadius(500+100*(count.get()%10));
// torus.setRadius(150+10*(count.get()%10));
// torus.setPatternScale(1d+(count.get()%10)*5d);
count.getAndIncrement();
lastEffect = now;
}
}
};
primaryStage.setTitle("F(X)yz - Segmented Sphere");
primaryStage.setScene(scene);
primaryStage.show();
// timerEffect.start();
final Timeline bannerEffect = new Timeline();
bannerEffect.setCycleCount(Timeline.INDEFINITE);
final KeyValue kv1 = new KeyValue(cameraTransform.ry.angleProperty(), 360);
final KeyFrame kf1 = new KeyFrame(Duration.millis(20000), kv1);
bannerEffect.getKeyFrames().addAll(kf1);
// bannerEffect.play();
}
use of javafx.scene.input.KeyCode in project jabref by JabRef.
the class KeyBindingRepository method checkKeyCombinationEquality.
/**
* Check if the given keyCombination equals the given keyEvent
*
* @param combination as KeyCombination
* @param keyEvent as KeEvent
* @return true if matching, else false
*/
public boolean checkKeyCombinationEquality(KeyCombination combination, KeyEvent keyEvent) {
KeyCode code = keyEvent.getCode();
if (code == KeyCode.UNDEFINED) {
return false;
}
// gather the pressed modifier keys
String modifiers = "";
if (keyEvent.isControlDown()) {
modifiers = "ctrl";
}
if (keyEvent.isShiftDown()) {
modifiers += " shift";
}
if (keyEvent.isAltDown()) {
modifiers += " alt";
}
modifiers = modifiers.trim();
String newShortcut = (modifiers.isEmpty()) ? code.toString() : modifiers + " " + code;
KeyCombination pressedCombination = KeyCombination.valueOf(newShortcut);
return combination.equals(pressedCombination);
}
use of javafx.scene.input.KeyCode in project jabref by JabRef.
the class KeyBindingViewModel method setNewBinding.
/**
* Sets a a new key bind to this objects key binding object if
* the given key event is a valid combination of keys.
*
* @param evt as KeyEvent
* @return true if the KeyEvent is a valid binding, false else
*/
public boolean setNewBinding(KeyEvent evt) {
// validate the shortcut is no modifier key
KeyCode code = evt.getCode();
if (code.isModifierKey() || (code == KeyCode.BACK_SPACE) || (code == KeyCode.SPACE) || (code == KeyCode.TAB) || (code == KeyCode.ENTER) || (code == KeyCode.UNDEFINED)) {
return false;
}
// gather the pressed modifier keys
String modifiers = "";
if (evt.isControlDown()) {
modifiers = "ctrl ";
}
if (evt.isShiftDown()) {
modifiers += "shift ";
}
if (evt.isAltDown()) {
modifiers += "alt ";
}
// if no modifier keys are pressed, only special keys can be shortcuts
if (modifiers.isEmpty()) {
if (!(code.isFunctionKey() || (code == KeyCode.ESCAPE) || (code == KeyCode.DELETE))) {
return false;
}
}
String newShortcut = modifiers + code;
setBinding(newShortcut);
return true;
}
Aggregations