From db9de71c0ee73454f9ba05b84ddf4067e2c490c6 Mon Sep 17 00:00:00 2001 From: James Ball Date: Sat, 15 May 2021 18:53:46 +0100 Subject: [PATCH 1/3] Correct naming of EffectFactory --- .../effect/{EventFactory.java => EffectFactory.java} | 2 +- src/main/java/sh/ball/gui/Controller.java | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) rename src/main/java/sh/ball/audio/effect/{EventFactory.java => EffectFactory.java} (93%) diff --git a/src/main/java/sh/ball/audio/effect/EventFactory.java b/src/main/java/sh/ball/audio/effect/EffectFactory.java similarity index 93% rename from src/main/java/sh/ball/audio/effect/EventFactory.java rename to src/main/java/sh/ball/audio/effect/EffectFactory.java index edc21db..84d927e 100644 --- a/src/main/java/sh/ball/audio/effect/EventFactory.java +++ b/src/main/java/sh/ball/audio/effect/EffectFactory.java @@ -2,7 +2,7 @@ package sh.ball.audio.effect; import sh.ball.shapes.Vector2; -public class EventFactory { +public class EffectFactory { public static Effect vectorCancelling(int frequency) { return (count, v) -> count % frequency == 0 ? v.scale(-1) : v; } diff --git a/src/main/java/sh/ball/gui/Controller.java b/src/main/java/sh/ball/gui/Controller.java index 3864ed7..e2b15cf 100644 --- a/src/main/java/sh/ball/gui/Controller.java +++ b/src/main/java/sh/ball/gui/Controller.java @@ -2,7 +2,11 @@ package sh.ball.gui; import javafx.scene.control.*; import sh.ball.audio.Renderer; -import sh.ball.audio.effect.*; +import sh.ball.audio.effect.Effect; +import sh.ball.audio.effect.EffectType; +import sh.ball.audio.effect.RotateEffect; +import sh.ball.audio.effect.ScaleEffect; +import sh.ball.audio.effect.EffectFactory; import sh.ball.audio.FrameProducer; import java.io.File; @@ -24,6 +28,7 @@ import javafx.stage.Stage; import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; +import sh.ball.audio.effect.TranslateEffect; import sh.ball.engine.Vector3; import sh.ball.parser.obj.ObjFrameSettings; import sh.ball.parser.obj.ObjParser; @@ -160,10 +165,10 @@ public class Controller implements Initializable { InvalidationListener vectorCancellingListener = e -> updateEffect(EffectType.VECTOR_CANCELLING, vectorCancellingCheckBox.isSelected(), - EventFactory.vectorCancelling((int) vectorCancellingSlider.getValue())); + EffectFactory.vectorCancelling((int) vectorCancellingSlider.getValue())); InvalidationListener bitCrushListener = e -> updateEffect(EffectType.BIT_CRUSH, bitCrushCheckBox.isSelected(), - EventFactory.bitCrush(bitCrushSlider.getValue())); + EffectFactory.bitCrush(bitCrushSlider.getValue())); vectorCancellingSlider.valueProperty().addListener(vectorCancellingListener); vectorCancellingCheckBox.selectedProperty().addListener(vectorCancellingListener); From dd6751b8ccf3bc83ef74ee929eac9f8aea07d169 Mon Sep 17 00:00:00 2001 From: James H Ball Date: Sat, 15 May 2021 23:11:43 +0100 Subject: [PATCH 2/3] Update link to YouTube demonstration closes #8 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8fee907..afbe76c 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Some of this was built as part of a 24hr hackathon: IC Hack 20. The original rep ### Video Demonstration -[![osci-render demonstration](https://img.youtube.com/vi/oEX0mnv6PLM/0.jpg)](https://www.youtube.com/watch?v=oEX0mnv6PLM) +[![osci-render demonstration](https://img.youtube.com/vi/feQzC_Tz5K4/0.jpg)](https://www.youtube.com/watch?v=feQzC_Tz5K4) ## Current Features From 999bca8fc9d96ac7aa27ceb1759fe49350073485 Mon Sep 17 00:00:00 2001 From: James Ball Date: Sun, 16 May 2021 19:03:28 +0100 Subject: [PATCH 3/3] Add github actions code for MacOS --- .github/workflows/release.yml | 29 ++++++++++++++++++++++++++++- pom.xml | 10 ++++++---- src/main/resources/icons/icon.icns | Bin 0 -> 43651 bytes 3 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/icons/icon.icns diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7d84df6..3dd74f5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,7 +5,7 @@ on: branches: [ release ] jobs: - release: + release-windows: runs-on: windows-latest @@ -19,6 +19,7 @@ jobs: - name: Build with Maven run: | mvn -B package + mvn -B jpackage:jpackage@win $version= mvn help:evaluate -Dexpression="project.version" -q -DforceStdout echo "VERSION=$version" >> $env:GITHUB_ENV echo "Release version $version" > CHANGELOG @@ -33,3 +34,29 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_REPOSITORY: jameshball/osci-render + + release-mac: + + runs-on: macos-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 15 + uses: actions/setup-java@v2 + with: + java-version: '15' + distribution: 'adopt' + - name: Build with Maven + run: | + mvn -B package + mvn -B jpackage:jpackage@mac + version=$(mvn help:evaluate -Dexpression="project.version" -q -DforceStdout) + echo "VERSION=$version" >> $GITHUB_ENV + - name: Release + uses: softprops/action-gh-release@v1 + with: + tag_name: v${{ env.VERSION }} + files: target/osci-render-${{ env.VERSION }}.dmg + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_REPOSITORY: jameshball/osci-render diff --git a/pom.xml b/pom.xml index 3588876..f85a30b 100644 --- a/pom.xml +++ b/pom.xml @@ -126,16 +126,18 @@ win - package - - jpackage - src/main/resources/icons/icon.ico true osci-render + + mac + + src/main/resources/icons/icon.icns + + diff --git a/src/main/resources/icons/icon.icns b/src/main/resources/icons/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..26a175d82421bb87b4870b78530edbb99e78fb61 GIT binary patch literal 43651 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 literal 0 HcmV?d00001