From ca7551acd3ad1b2735130a8f17c24ea2b62775ba Mon Sep 17 00:00:00 2001 From: James Ball Date: Sun, 13 Mar 2022 21:47:02 +0000 Subject: [PATCH] Add reset rotation buttons --- pom.xml | 2 +- src/main/java/sh/ball/audio/effect/PhaseEffect.java | 2 +- src/main/java/sh/ball/audio/effect/RotateEffect.java | 8 +------- src/main/java/sh/ball/gui/Gui.java | 5 +++-- src/main/java/sh/ball/gui/controller/ImageController.java | 5 +++++ src/main/java/sh/ball/gui/controller/MainController.java | 7 +------ src/main/java/sh/ball/gui/controller/ObjController.java | 4 ++++ src/main/java/sh/ball/parser/obj/ObjFrameSource.java | 6 +----- src/main/resources/fxml/image.fxml | 6 ++++-- src/main/resources/fxml/obj.fxml | 4 +++- 10 files changed, 24 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index d625df9a..3ac0a2ce 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ sh.ball osci-render - 1.19.1 + 1.19.2 osci-render diff --git a/src/main/java/sh/ball/audio/effect/PhaseEffect.java b/src/main/java/sh/ball/audio/effect/PhaseEffect.java index 1312bf71..e4cf6937 100644 --- a/src/main/java/sh/ball/audio/effect/PhaseEffect.java +++ b/src/main/java/sh/ball/audio/effect/PhaseEffect.java @@ -16,7 +16,7 @@ public abstract class PhaseEffect implements Effect { this.speed = speed; } - protected void resetTheta() { + public void resetTheta() { phase = -LARGE_VAL; } diff --git a/src/main/java/sh/ball/audio/effect/RotateEffect.java b/src/main/java/sh/ball/audio/effect/RotateEffect.java index c8d520b3..d3c3ef79 100644 --- a/src/main/java/sh/ball/audio/effect/RotateEffect.java +++ b/src/main/java/sh/ball/audio/effect/RotateEffect.java @@ -15,12 +15,6 @@ public class RotateEffect extends PhaseEffect { @Override public Vector2 apply(int count, Vector2 vector) { - if (speed != 0) { - return vector.rotate(nextTheta()); - } - - resetTheta(); - - return vector; + return vector.rotate(nextTheta()); } } diff --git a/src/main/java/sh/ball/gui/Gui.java b/src/main/java/sh/ball/gui/Gui.java index 0aef835b..677a6da9 100644 --- a/src/main/java/sh/ball/gui/Gui.java +++ b/src/main/java/sh/ball/gui/Gui.java @@ -65,11 +65,12 @@ public class Gui extends Application { scene.addEventFilter(MouseEvent.MOUSE_MOVED, event -> { if (controller.mouseRotate()) { - controller.setObjRotate(new Vector3( + Vector3 rotate = new Vector3( 3 * Math.PI * (event.getSceneY() / scene.getHeight()), 3 * Math.PI * (event.getSceneX() / scene.getWidth()), 0 - )); + ); + controller.setObjRotate(rotate, rotate); } if (controller.mouseTranslate()) { controller.setTranslation(new Vector2( diff --git a/src/main/java/sh/ball/gui/controller/ImageController.java b/src/main/java/sh/ball/gui/controller/ImageController.java index fa644091..d14f64df 100644 --- a/src/main/java/sh/ball/gui/controller/ImageController.java +++ b/src/main/java/sh/ball/gui/controller/ImageController.java @@ -4,6 +4,7 @@ import javafx.beans.property.DoubleProperty; import javafx.beans.property.SimpleDoubleProperty; import javafx.fxml.FXML; import javafx.fxml.Initializable; +import javafx.scene.control.Button; import javafx.scene.control.CheckBox; import javafx.scene.control.Slider; import javafx.scene.control.TextField; @@ -84,6 +85,8 @@ public class ImageController implements Initializable, SubController { private SVGPath visibilityMidi; @FXML private CheckBox visibilityMic; + @FXML + private Button resetRotationButton; public ImageController() { this.frequency = new SimpleDoubleProperty(0); @@ -140,6 +143,8 @@ public class ImageController implements Initializable, SubController { ) ); + resetRotationButton.setOnAction(e -> rotateEffect.resetTheta()); + translationXTextField.textProperty().addListener(e -> updateTranslation()); translationXTextField.setOnScroll((e) -> changeTranslation(e.getDeltaY() > 0, translationXTextField)); translationYTextField.textProperty().addListener(e -> updateTranslation()); diff --git a/src/main/java/sh/ball/gui/controller/MainController.java b/src/main/java/sh/ball/gui/controller/MainController.java index 67aabe9c..7baf5c95 100644 --- a/src/main/java/sh/ball/gui/controller/MainController.java +++ b/src/main/java/sh/ball/gui/controller/MainController.java @@ -461,13 +461,8 @@ public class MainController implements Initializable, FrequencyListener, MidiLis imageController.disableMouseTranslate(); } - // updates the 3D object base rotation angle - public void setObjRotate(Vector3 vector) { - objController.setObjRotate(vector); - } - // updates the 3D object base and current rotation angle - protected void setObjRotate(Vector3 baseRotation, Vector3 currentRotation) { + public void setObjRotate(Vector3 baseRotation, Vector3 currentRotation) { objController.setObjRotate(baseRotation, currentRotation); } diff --git a/src/main/java/sh/ball/gui/controller/ObjController.java b/src/main/java/sh/ball/gui/controller/ObjController.java index a63b3e4f..8501b87a 100644 --- a/src/main/java/sh/ball/gui/controller/ObjController.java +++ b/src/main/java/sh/ball/gui/controller/ObjController.java @@ -2,6 +2,7 @@ package sh.ball.gui.controller; import javafx.fxml.FXML; import javafx.fxml.Initializable; +import javafx.scene.control.Button; import javafx.scene.control.CheckBox; import javafx.scene.control.Slider; import javafx.scene.shape.SVGPath; @@ -32,6 +33,8 @@ public class ObjController implements Initializable, SubController { private CheckBox objectRotateSpeedMic; @FXML private CheckBox rotateCheckBox; + @FXML + private Button resetObjectRotationButton; @Override public Map getMidiButtonMap() { @@ -96,6 +99,7 @@ public class ObjController implements Initializable, SubController { objectRotateSpeedSlider.valueProperty().addListener((source, oldValue, newValue) -> setObjectRotateSpeed(newValue.doubleValue()) ); + resetObjectRotationButton.setOnAction(e -> setObjRotate(new Vector3(2 * Math.PI, 2 * Math.PI, 0), new Vector3())); } @Override diff --git a/src/main/java/sh/ball/parser/obj/ObjFrameSource.java b/src/main/java/sh/ball/parser/obj/ObjFrameSource.java index d713efdf..5209b0b4 100644 --- a/src/main/java/sh/ball/parser/obj/ObjFrameSource.java +++ b/src/main/java/sh/ball/parser/obj/ObjFrameSource.java @@ -26,11 +26,7 @@ public class ObjFrameSource implements FrameSource> { @Override public List next() { currentRotation = currentRotation.add(baseRotation.scale(rotateSpeed)); - if (rotateSpeed == 0) { - object.setRotation(baseRotation); - } else { - object.setRotation(currentRotation); - } + object.setRotation(currentRotation); return camera.draw(object); } diff --git a/src/main/resources/fxml/image.fxml b/src/main/resources/fxml/image.fxml index 48fc0fd2..850c148a 100644 --- a/src/main/resources/fxml/image.fxml +++ b/src/main/resources/fxml/image.fxml @@ -1,5 +1,6 @@ + @@ -12,7 +13,7 @@ -