Search in sources :

Example 11 with KeyCode

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();
}
Also used : Group(javafx.scene.Group) Rotate(javafx.scene.transform.Rotate) ArrayList(java.util.ArrayList) KeyCode(javafx.scene.input.KeyCode) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) ScatterPlotMesh(org.fxyz.shapes.composites.ScatterPlotMesh)

Example 12 with KeyCode

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();
}
Also used : Group(javafx.scene.Group) ScatterPlot(org.fxyz.shapes.composites.ScatterPlot) Rotate(javafx.scene.transform.Rotate) ArrayList(java.util.ArrayList) KeyCode(javafx.scene.input.KeyCode) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene)

Example 13 with KeyCode

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();
}
Also used : Group(javafx.scene.Group) MouseEvent(javafx.scene.input.MouseEvent) KeyValue(javafx.animation.KeyValue) Rotate(javafx.scene.transform.Rotate) AnimationTimer(javafx.animation.AnimationTimer) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) Timeline(javafx.animation.Timeline) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Point3D(org.fxyz.geometry.Point3D) SegmentedSphereMesh(org.fxyz.shapes.primitives.SegmentedSphereMesh) KeyFrame(javafx.animation.KeyFrame) KeyCode(javafx.scene.input.KeyCode) PointLight(javafx.scene.PointLight) AmbientLight(javafx.scene.AmbientLight)

Example 14 with KeyCode

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);
}
Also used : KeyCode(javafx.scene.input.KeyCode) KeyCombination(javafx.scene.input.KeyCombination)

Example 15 with KeyCode

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;
}
Also used : KeyCode(javafx.scene.input.KeyCode)

Aggregations

KeyCode (javafx.scene.input.KeyCode)48 Scene (javafx.scene.Scene)36 PerspectiveCamera (javafx.scene.PerspectiveCamera)31 MouseEvent (javafx.scene.input.MouseEvent)30 Group (javafx.scene.Group)29 PointLight (javafx.scene.PointLight)24 Rotate (javafx.scene.transform.Rotate)23 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)16 AnimationTimer (javafx.animation.AnimationTimer)14 Point3D (org.fxyz.geometry.Point3D)11 Translate (javafx.scene.transform.Translate)10 ArrayList (java.util.ArrayList)9 AmbientLight (javafx.scene.AmbientLight)8 Sphere (javafx.scene.shape.Sphere)8 Color (javafx.scene.paint.Color)7 OBJWriter (org.fxyz.utils.OBJWriter)7 KeyFrame (javafx.animation.KeyFrame)6 KeyValue (javafx.animation.KeyValue)6 Timeline (javafx.animation.Timeline)6 PhongMaterial (javafx.scene.paint.PhongMaterial)6