Search in sources :

Example 76 with KeyValue

use of javafx.animation.KeyValue in project FXyzLib by Birdasaur.

the class SegmentedTorusTest 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(10000.0);
    camera.setTranslateZ(-4000);
    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(camera.getTranslateX());
    light.setTranslateY(camera.getTranslateY());
    light.setTranslateZ(camera.getTranslateZ());
    scene.setCamera(camera);
    rotateY = new Rotate(0, 0, 0, 0, Rotate.Y_AXIS);
    Group group = new Group();
    group.getChildren().add(cameraTransform);
    torus = new SegmentedTorusMesh(50, 42, 0, 500d, 300d);
    //        PhongMaterial matTorus = new PhongMaterial(Color.FIREBRICK);
    //        torus.setMaterial(matTorus);
    banner = new SegmentedTorusMesh(50, 42, 14, 500d, 300d);
    //        PhongMaterial matBanner = new PhongMaterial();
    //        matBanner.setDiffuseMap(new Image(getClass().getResource("res/Duke3DprogressionSmall.jpg").toExternalForm()));
    //        banner.setMaterial(matBanner);
    //        torus.setDrawMode(DrawMode.LINE);
    // NONE
    //        torus.setTextureModeNone(Color.FORESTGREEN);
    // IMAGE
    //        torus.setTextureModeImage(getClass().getResource("res/grid1.png").toExternalForm());
    banner.setTextureModeImage(getClass().getResource("res/office.jpg").toExternalForm());
    // PATTERN
    //       torus.setTextureModePattern(1.0d);
    // DENSITY
    torus.setTextureModeVertices3D(1530, dens);
    // FACES
    //        torus.setTextureModeFaces(256*256);
    torus.getTransforms().addAll(new Rotate(0, Rotate.X_AXIS), rotateY);
    banner.getTransforms().addAll(new Rotate(0, Rotate.X_AXIS), rotateY);
    group.getChildren().addAll(torus, banner);
    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);
        }
    });
    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);
        }
    });
    final Timeline bannerEffect = new Timeline();
    bannerEffect.setCycleCount(Timeline.INDEFINITE);
    final KeyValue kv1 = new KeyValue(rotateY.angleProperty(), 360);
    final KeyFrame kf1 = new KeyFrame(Duration.millis(10000), kv1);
    bannerEffect.getKeyFrames().addAll(kf1);
    bannerEffect.play();
    lastEffect = System.nanoTime();
    AtomicInteger count = new AtomicInteger();
    AnimationTimer timerEffect = new AnimationTimer() {

        @Override
        public void handle(long now) {
            if (now > lastEffect + 100_000_000l) {
                dens = p -> 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.setMinorRadius(150+10*(count.get()%10));
                //                    torus.setPatternScale(1d+(count.get()%10)*5d);
                count.getAndIncrement();
                lastEffect = now;
            }
        }
    };
    primaryStage.setTitle("F(X)yz - Segmented Torus");
    primaryStage.setScene(scene);
    primaryStage.show();
    timerEffect.start();
}
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) SegmentedTorusMesh(org.fxyz.shapes.primitives.SegmentedTorusMesh) Timeline(javafx.animation.Timeline) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) KeyFrame(javafx.animation.KeyFrame) KeyCode(javafx.scene.input.KeyCode) PointLight(javafx.scene.PointLight)

Example 77 with KeyValue

use of javafx.animation.KeyValue in project FXyzLib by Birdasaur.

the class CameraTransformer method transitionCameraTo.

public void transitionCameraTo(double milliseconds, double tx, double ty, double tz, double rx, double ry, double rz) {
    final Timeline timeline = new Timeline();
    timeline.getKeyFrames().addAll(new KeyFrame[] { new KeyFrame(Duration.millis(milliseconds), new KeyValue[] { // Frame End                
    new KeyValue(xRotateProperty(), rx, Interpolator.EASE_BOTH), new KeyValue(yRotateProperty(), ry, Interpolator.EASE_BOTH), new KeyValue(zRotateProperty(), rz, Interpolator.EASE_BOTH), new KeyValue(xTranslateProperty(), tx, Interpolator.EASE_BOTH), new KeyValue(yTranslateProperty(), ty, Interpolator.EASE_BOTH), new KeyValue(zTranslateProperty(), tz, Interpolator.EASE_BOTH) }) });
    timeline.playFromStart();
}
Also used : Timeline(javafx.animation.Timeline) KeyValue(javafx.animation.KeyValue) KeyFrame(javafx.animation.KeyFrame)

Example 78 with KeyValue

use of javafx.animation.KeyValue in project TrayNotification by PlusHaze.

the class FadeAnimation method setupShowAnimation.

@Override
protected Timeline setupShowAnimation() {
    Timeline tl = new Timeline();
    // Sets opacity to 0.0 instantly which is pretty much invisible
    KeyValue kvOpacity = new KeyValue(stage.opacityProperty(), 0.0);
    KeyFrame frame1 = new KeyFrame(Duration.ZERO, kvOpacity);
    // Sets opacity to 1.0 (fully visible) over the time of 3000 milliseconds.
    KeyValue kvOpacity2 = new KeyValue(stage.opacityProperty(), 1.0);
    KeyFrame frame2 = new KeyFrame(Duration.millis(3000), kvOpacity2);
    tl.getKeyFrames().addAll(frame1, frame2);
    tl.setOnFinished(e -> trayIsShowing = true);
    return tl;
}
Also used : Timeline(javafx.animation.Timeline) KeyValue(javafx.animation.KeyValue) KeyFrame(javafx.animation.KeyFrame)

Example 79 with KeyValue

use of javafx.animation.KeyValue in project fxexperience2 by EricCanull.

the class SplinePanelController method updateAnimation.

public void updateAnimation() {
    if (timeline != null) {
        timeline.stop();
    }
    Interpolator spline = Interpolator.SPLINE(SplineEditor.getControlPoint1x(), SplineEditor.getControlPoint1y(), SplineEditor.getControlPoint2x(), SplineEditor.getControlPoint2y());
    timeline = new Timeline();
    timeline.setCycleCount(Timeline.INDEFINITE);
    timeline.setAutoReverse(true);
    timeline.getKeyFrames().addAll(new KeyFrame(Duration.ZERO, new KeyValue(scaleCircle.scaleXProperty(), 0d, spline), new KeyValue(scaleCircle.scaleYProperty(), 0d, spline), new KeyValue(rotateRectangle.rotateProperty(), 0d, spline), new KeyValue(fadeSquare.opacityProperty(), 0d, spline), new KeyValue(linearCircle.translateXProperty(), 0d, spline)), new KeyFrame(Duration.seconds(5), new KeyValue(scaleCircle.scaleXProperty(), 1d, spline), new KeyValue(scaleCircle.scaleYProperty(), 1d, spline), new KeyValue(rotateRectangle.rotateProperty(), 360d, spline), new KeyValue(rotateRectangle.rotateProperty(), 360d, spline), new KeyValue(fadeSquare.opacityProperty(), 1d, spline), new KeyValue(linearCircle.translateXProperty(), 180d, spline)));
    timeline.play();
}
Also used : Timeline(javafx.animation.Timeline) KeyValue(javafx.animation.KeyValue) KeyFrame(javafx.animation.KeyFrame) Interpolator(javafx.animation.Interpolator)

Example 80 with KeyValue

use of javafx.animation.KeyValue in project Gargoyle by callakrsos.

the class CameraTransformer method transitionCameraTo.

public void transitionCameraTo(double milliseconds, double tx, double ty, double tz, double rx, double ry, double rz) {
    final Timeline timeline = new Timeline();
    timeline.getKeyFrames().addAll(new KeyFrame[] { new KeyFrame(Duration.millis(milliseconds), new KeyValue[] { // Frame End                 
    new KeyValue(xRotateProperty(), rx, Interpolator.EASE_BOTH), new KeyValue(yRotateProperty(), ry, Interpolator.EASE_BOTH), new KeyValue(zRotateProperty(), rz, Interpolator.EASE_BOTH), new KeyValue(xTranslateProperty(), tx, Interpolator.EASE_BOTH), new KeyValue(yTranslateProperty(), ty, Interpolator.EASE_BOTH), new KeyValue(zTranslateProperty(), tz, Interpolator.EASE_BOTH) }) });
    timeline.playFromStart();
}
Also used : Timeline(javafx.animation.Timeline) KeyValue(javafx.animation.KeyValue) KeyFrame(javafx.animation.KeyFrame)

Aggregations

KeyValue (javafx.animation.KeyValue)85 KeyFrame (javafx.animation.KeyFrame)83 Timeline (javafx.animation.Timeline)82 Interpolator (javafx.animation.Interpolator)12 Rotate (javafx.scene.transform.Rotate)12 Duration (javafx.util.Duration)12 Insets (javafx.geometry.Insets)11 MouseEvent (javafx.scene.input.MouseEvent)10 PerspectiveCamera (javafx.scene.PerspectiveCamera)9 ArrayList (java.util.ArrayList)8 Scene (javafx.scene.Scene)7 Label (javafx.scene.control.Label)7 Rectangle (javafx.scene.shape.Rectangle)7 ActionEvent (javafx.event.ActionEvent)6 EventHandler (javafx.event.EventHandler)6 Group (javafx.scene.Group)6 Node (javafx.scene.Node)6 KeyCode (javafx.scene.input.KeyCode)6 VBox (javafx.scene.layout.VBox)6 JFXButton (com.jfoenix.controls.JFXButton)5