Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
198 commits
Select commit Hold shift + click to select a range
06b7b1d
Finish modularizing PBRTerrain.j3md
yaRnMcDonuts Feb 11, 2025
acaa45a
Delete jme3-terrain/src/main/resources/Common/MatDefs/Terrain/PBRTerr…
yaRnMcDonuts Feb 11, 2025
ca07eb4
Update AdvancedPBRTerrain.frag to work with both MatDefs
yaRnMcDonuts Feb 11, 2025
8cc262b
Update AdvancedPBRTerrain.frag
yaRnMcDonuts Feb 11, 2025
d9ae33b
Update AdvancedPBRTerrain.j3md
yaRnMcDonuts Feb 11, 2025
b52a678
Update AdvancedPBRTerrain.j3md
yaRnMcDonuts Feb 11, 2025
1f28da6
Update AdvancedPBRTerrain.j3md
yaRnMcDonuts Feb 11, 2025
e5a0f28
Update PBRTerrainUtils.glsllib
yaRnMcDonuts Feb 20, 2025
db5b9f0
Change trigger for USE_TEXTURE_ARRAYS define
yaRnMcDonuts Feb 24, 2025
5cf3308
Update PBRTerrain.j3md
yaRnMcDonuts Mar 2, 2025
fed3972
Update AdvancedPBRTerrain.j3md
yaRnMcDonuts Mar 2, 2025
2a9d258
Update PBRTerrain.j3md
yaRnMcDonuts Mar 2, 2025
d2967f9
Update PBRTerrain.j3md
yaRnMcDonuts Mar 2, 2025
9d0e74e
Update AdvancedPBRTerrain.frag
yaRnMcDonuts Mar 3, 2025
8a9253b
Update PBRTerrain.j3md
yaRnMcDonuts Mar 3, 2025
232289d
Update PBRTerrainUtils.glsllib
yaRnMcDonuts Mar 3, 2025
14fc28d
Update PBRTerrainUtils.glsllib
yaRnMcDonuts Mar 3, 2025
4748826
Merge branch 'master' into yaRnMcDonuts-patch-9
yaRnMcDonuts Mar 3, 2025
d602311
Update PBRTerrainUtils.glsllib
yaRnMcDonuts Mar 3, 2025
50ece7c
Add NORMAL_TYPE to PBRTerrainUtils.glsllib
yaRnMcDonuts Mar 3, 2025
2285370
Update PBRTerrainUtils.glsllib
yaRnMcDonuts Mar 3, 2025
885f8f7
NORMAL_TYPE support for TriPlanarUtils.glsllib
yaRnMcDonuts Mar 3, 2025
f3c79f7
add NORMAL_TYPE define to AdvancedPBRTerrain.j3md
yaRnMcDonuts Mar 3, 2025
7ebab5f
add NORMAL_TYPE define to PBRTerrain.j3md
yaRnMcDonuts Mar 3, 2025
8f1a0c8
Add emissive vars to PBRTerrain.j3md
yaRnMcDonuts Mar 3, 2025
24f6bb2
Update PBRTerrainUtils.glsllib
yaRnMcDonuts Mar 4, 2025
3c5eb5c
Update TriPlanarUtils.glsllib
yaRnMcDonuts Mar 4, 2025
75f0b73
Merge pull request #2377 from jMonkeyEngine/yaRnMcDonuts-patch-9
yaRnMcDonuts Mar 5, 2025
b846c6a
Fix logic errors and exception in SpecGloss pipeline
yaRnMcDonuts Mar 6, 2025
9b9ba45
fix typo
yaRnMcDonuts Mar 6, 2025
154022e
condense redundant spec gloss code
yaRnMcDonuts Mar 6, 2025
1372737
Camera: add runtime checks for the viewport bounds
stephengold Mar 6, 2025
fdf1df1
jme3-core: create junit4 tests for newly-added Camera viewport checks
stephengold Mar 6, 2025
000aa79
Fix non decimal format floats in TangentUtils.glsllib
yaRnMcDonuts Mar 6, 2025
3d70353
Spline: implement JmeCloneable and test
stephengold Mar 6, 2025
43fead7
MotionPath: implement JmeCloneable and test
stephengold Mar 6, 2025
d233f1d
Merge pull request #2389 from jMonkeyEngine/yaRnMcDonuts-patch-3
yaRnMcDonuts Mar 6, 2025
13d8ebe
MotionEvent: clone the lookAt, path, and rotation fields
stephengold Mar 6, 2025
946b3ea
Fix exception when using Instancing with Fog in PBR
yaRnMcDonuts Mar 7, 2025
c372b32
Minor formatting update to Lighting.vert
yaRnMcDonuts Mar 8, 2025
94cba89
rename varying fog_distance to fogDistance to match expected name in …
yaRnMcDonuts Mar 8, 2025
e9049b5
Merge pull request #2387 from jMonkeyEngine/yaRnMcDonuts-patch-2
yaRnMcDonuts Mar 8, 2025
ca0a9f4
Add debugging to PBRTerrainTests to to help troubleshoot an unsolved …
yaRnMcDonuts Mar 10, 2025
49dfa9f
Update PBRTerrainUtils.glsllib
yaRnMcDonuts Mar 10, 2025
c8beaf0
Update PBRTerrainTest.java
yaRnMcDonuts Mar 10, 2025
d1864bb
Fix TextureArray not exporting WrapMode
jcfandino Mar 10, 2025
91b5eee
Added unit test for exporting TextureArray WrapMode
jcfandino Mar 10, 2025
10baaa2
Implemented equals and hashCode for TextureArray
jcfandino Mar 11, 2025
832814b
Merge pull request #2391 from jMonkeyEngine/yaRnMcDonuts-patch-3
yaRnMcDonuts Mar 12, 2025
09b862d
Merge pull request #2388 from jMonkeyEngine/sgold/issue/2333
yaRnMcDonuts Mar 13, 2025
0319161
Add == check
yaRnMcDonuts Mar 18, 2025
576b238
fix typo mistake i made by accident
yaRnMcDonuts Mar 18, 2025
985ac2c
Merge pull request #2390 from jMonkeyEngine/sgold/issue/2370
yaRnMcDonuts Mar 19, 2025
1cfe65d
Add Debug options to PBRTerrainAdvancedTest.java
yaRnMcDonuts Mar 19, 2025
49ffddd
Update PBRTerrainAdvancedTest.java
yaRnMcDonuts Mar 19, 2025
4f055d1
Merge pull request #2393 from jMonkeyEngine/yaRnMcDonuts-patch-2
yaRnMcDonuts Mar 20, 2025
0d62284
Merge pull request #2395 from jcfandino/texture-array-wrap
yaRnMcDonuts Mar 20, 2025
8a96ba4
Fix LightProbe blending
yaRnMcDonuts Mar 26, 2025
36c4d5a
Merge pull request #2402 from jMonkeyEngine/yaRnMcDonuts-patch-2
yaRnMcDonuts Mar 28, 2025
8da632a
Improved fix for IndexOutOfBoundsException
tonihele Mar 30, 2025
670dda3
Fix NPE on AbstractShadowFilter deserialization
capdevon Apr 17, 2025
de1289c
add FilterPostProcessingTest class
capdevon Apr 17, 2025
3008ac5
Merge pull request #2403 from tonihele/bugfix/issue-2296
yaRnMcDonuts Apr 21, 2025
dcb2262
Merge pull request #2405 from capdevon/capdevon-shadow
yaRnMcDonuts Apr 22, 2025
66eaa9d
NewtonianParticleInfluencer: remove unnecessary clone() method
capdevon Apr 22, 2025
273e33b
Add ParticleInfluencerTest class
capdevon Apr 22, 2025
0f4353e
DefaultParticleInfluencer: clone temp Vector3f
capdevon Apr 22, 2025
78e1090
ParticleInfluencerTest: assertNotSame temp Vector3f
capdevon Apr 22, 2025
fb38a4d
DefaultParticleInfluencer: use Cloner
capdevon Apr 22, 2025
f6a02e9
DefaultParticleInfluencer: updated license year
capdevon Apr 22, 2025
5d3bdff
Update ParticleInfluencerTest
capdevon Apr 22, 2025
cd0eb24
ParticleInfluencer: removed redundant clonable interface
capdevon Apr 22, 2025
e634703
Filter: implements JmeCloneable interface
capdevon Apr 23, 2025
2cfc023
LowPassFilter: add javadoc
capdevon Apr 23, 2025
0138e5f
Add AudioNodeTest class
capdevon Apr 23, 2025
aff2da4
Update AudioNodeTest.java
capdevon Apr 23, 2025
ff3f242
Update AudioNodeTest.java
capdevon Apr 23, 2025
20a2b74
Update AudioNodeTest.java
capdevon Apr 23, 2025
dff1c33
Create additional screenshot tests and add an auto message on screens…
richardTingle Apr 26, 2025
30aa1db
com.jme3.audio.Listener: format code + javadoc
capdevon May 2, 2025
e92ea4f
Update Listener.java
capdevon May 2, 2025
10add91
update javadoc
capdevon May 2, 2025
14dd4da
Update gradle.properties
yaRnMcDonuts May 3, 2025
4309b2f
#2416 Automate TestPBRLighting as a screenshot test
richardTingle May 3, 2025
2b163b5
#2416 Automate TestPBRSimple as a screenshot test
richardTingle May 3, 2025
1dcfeb8
#2416 Automate PBR Terrain tests
richardTingle May 3, 2025
cd40dde
#2416 Automate Correct image names
richardTingle May 3, 2025
38d2c27
#2416 Add PBR model screenshots
richardTingle May 3, 2025
fb43fb0
#2416 Try mode zero for final render
richardTingle May 3, 2025
e60b2c7
#2416 Add screenshots for PBR terrain
richardTingle May 3, 2025
3bfb124
TestPostWater: code cleanup
capdevon May 3, 2025
df3ce7d
Update TestReverb: code cleanup
capdevon May 3, 2025
22c64b1
Update getRandomPosition() method
capdevon May 3, 2025
9cc2839
make lightDir variable non static
capdevon May 3, 2025
a275406
EmitterBoxShape: add javadoc
capdevon May 3, 2025
d12430c
EmitterSphereShape: add javadoc
capdevon May 3, 2025
ff4c260
EmitterPointShape: add javadoc
capdevon May 3, 2025
0f57803
Update EmitterShape.java
capdevon May 3, 2025
c3d61a9
Update EmitterSphereShape.java
capdevon May 3, 2025
52bdb34
Update EmitterBoxShape.java
capdevon May 3, 2025
d128d96
Merge pull request #2415 from jMonkeyEngine/yaRnMcDonuts-patch-2
yaRnMcDonuts May 3, 2025
6c1ff6a
ALAudioRenderer: code improvements
capdevon May 4, 2025
eb40ab6
Update ALAudioRenderer.java
capdevon May 4, 2025
2ed2008
ALAudioRenderer: add checkAlError() method
capdevon May 4, 2025
cf3de68
add Environment field
capdevon May 4, 2025
72fc3e9
ALAudioRenderer: comments and logging
capdevon May 4, 2025
81f5614
Update ALAudioRenderer.java
capdevon May 5, 2025
9f42607
fix updateSourceParams
capdevon May 5, 2025
3c81447
Replaced box with grid
capdevon May 5, 2025
40837f6
remove unused imports
capdevon May 5, 2025
ad12842
Update TestReverb.java
capdevon May 6, 2025
4badf3e
reorder update source params
capdevon May 6, 2025
a74be4a
Update TestOgg.java
capdevon May 6, 2025
9dd1165
added sourceId & filterId to debugUI
capdevon May 7, 2025
b3fb458
increase marker sphere radius
capdevon May 7, 2025
0060551
enhanced log message
capdevon May 7, 2025
432e684
Merge pull request #2413 from richardTingle/create-additional-screens…
yaRnMcDonuts May 7, 2025
59b3349
Merge pull request #2417 from richardTingle/#2416-pbr-screenshot-tests
yaRnMcDonuts May 8, 2025
6f95af8
Merge pull request #2410 from capdevon/capdevon-audio-filter
yaRnMcDonuts May 8, 2025
e903149
Merge pull request #2414 from capdevon/capdevon-audio-listener
yaRnMcDonuts May 8, 2025
2fa2101
Merge pull request #2418 from capdevon/capdevon-TestPostWater
yaRnMcDonuts May 8, 2025
8435949
Update DebugValuesMode documentation in PBRLighting.j3md
yaRnMcDonuts May 8, 2025
27788bf
com.jme3.audio.Environment: javadoc
capdevon May 8, 2025
8e35d58
added comments
capdevon May 8, 2025
9ee8a33
remove unused imports
capdevon May 8, 2025
874f86d
Merge branch 'jMonkeyEngine:master' into capdevon-ALAudioRenderer
capdevon May 8, 2025
db60f78
Update ALAudioRenderer: enhanced log message
capdevon May 8, 2025
3f692e5
jme3-examples: TestAmbient - test code optimization
capdevon May 8, 2025
654f26b
jme3-examples: TestWav - test code optimization
capdevon May 8, 2025
fa4ed01
jme3-examples: TestDoppler - test code optimization
capdevon May 8, 2025
d5ad08d
jme3-examples: add TestAudioDirectional class
capdevon May 8, 2025
64d08f9
Merge branch 'jMonkeyEngine:master' into capdevon-TestReverb
capdevon May 8, 2025
606d064
Update TestReverb: add reverbFilter
capdevon May 8, 2025
a88c156
jme3-examples: add TestDeviceDisconnect class
capdevon May 8, 2025
cbbae55
LwjglCanvas: typo in getPrintContextInitInfo() method
capdevon May 9, 2025
05e496a
Prefer ArrayDeque over ArrayList
capdevon May 9, 2025
f6e646f
Add InstanceNode test using PBRLighting
yaRnMcDonuts May 10, 2025
fcaf17f
Fix wPosition calculation in PBRLighting.vert
yaRnMcDonuts May 10, 2025
b920f8c
Merge pull request #2419 from capdevon/capdevon-TestReverb
yaRnMcDonuts May 10, 2025
ed6be6e
fix accelerated pbr baker: apply band factors and avoid fireflies art…
riccardobl May 10, 2025
e8e538a
Update TestInstanceNodeWithPbr.java
yaRnMcDonuts May 10, 2025
4ae2e55
LowPassFilter: add no-args constructor
capdevon May 13, 2025
c3c6ba4
Add files via upload
capdevon May 13, 2025
3eebd56
LowPassFilter: correct default values for read/write fields
capdevon May 13, 2025
a0d7b49
ALAudioRenderer.run(): set log Level to FINE
capdevon May 14, 2025
2ca7b52
Merge pull request #2437 from jMonkeyEngine/yaRnMcDonuts-TestInstance…
yaRnMcDonuts May 15, 2025
3daabf2
Merge pull request #2429 from capdevon/capdevon-TestAmbient
yaRnMcDonuts May 15, 2025
1c2195e
Merge pull request #2425 from capdevon/capdevon-TestOgg
yaRnMcDonuts May 15, 2025
9e2a2ef
Merge pull request #2433 from capdevon/capdevon-TestDeviceDisconnect
yaRnMcDonuts May 15, 2025
62e62aa
Merge pull request #2428 from capdevon/capdevon-Environment
yaRnMcDonuts May 15, 2025
6995e22
Merge pull request #2434 from capdevon/capdevon-LwjglCanvas
yaRnMcDonuts May 15, 2025
b102aba
Merge branch 'jMonkeyEngine:master' into capdevon-ALAudioRenderer
capdevon May 15, 2025
d080f54
Refactor: Remove redundant checkAlError call for performance
capdevon May 15, 2025
0c636aa
TestWav: rename test -> app
capdevon May 15, 2025
374e15c
Merge branch 'jMonkeyEngine:master' into capdevon-TestWav
capdevon May 15, 2025
a9a18ef
TestDoppler: rename test -> app
capdevon May 15, 2025
462d918
Merge branch 'jMonkeyEngine:master' into capdevon-TestDoppler
capdevon May 15, 2025
cd475e3
TestAudioDirectional: rename test -> app
capdevon May 15, 2025
18063ee
Merge branch 'jMonkeyEngine:master' into capdevon-TestAudioDirectional
capdevon May 15, 2025
7c65fc5
Merge pull request #2427 from jMonkeyEngine/yaRnMcDonuts-patch-2
yaRnMcDonuts May 15, 2025
6afdac6
Merge pull request #2430 from capdevon/capdevon-TestWav
yaRnMcDonuts May 16, 2025
86055ea
Merge pull request #2431 from capdevon/capdevon-TestDoppler
yaRnMcDonuts May 16, 2025
3cc16ab
Merge pull request #2432 from capdevon/capdevon-TestAudioDirectional
yaRnMcDonuts May 16, 2025
a905e41
Merge pull request #2407 from capdevon/capdevon-ParticleInfluencer
yaRnMcDonuts May 16, 2025
1327f1e
Merge pull request #2420 from capdevon/capdevon-emitter-shape
yaRnMcDonuts May 16, 2025
6afdbc1
#2442 Automate test TestInstanceNodeWithPbr that was introduced in ht…
richardTingle May 16, 2025
dcf1b3b
#2442 Add new screenshots
richardTingle May 16, 2025
0925f98
Merge pull request #2423 from capdevon/capdevon-ALAudioRenderer
yaRnMcDonuts May 18, 2025
069d4e7
Merge pull request #2443 from richardTingle/#2442-automate-TestInstan…
yaRnMcDonuts May 18, 2025
389d91a
Merge pull request #2441 from capdevon/capdevon-LowPassFilter-no-args
yaRnMcDonuts May 20, 2025
8eff650
add HighPassFilter class
capdevon May 20, 2025
9d33f17
add BandPassFilter class
capdevon May 20, 2025
127446b
EFX: added OpenAL constants for BandPassFilter and HighPassFilter
capdevon May 20, 2025
27f14c4
ALAudioRenderer: added config constants for HighPassFilter and BandPa…
capdevon May 20, 2025
ae01c94
AudioFilterTest: added HighPassFilter and BandPassFilter tests
capdevon May 20, 2025
04c191e
HighPassFilter: update javadoc
capdevon May 20, 2025
3ffc51c
BandPassFilter: update javadoc
capdevon May 20, 2025
87cf23f
Update HighPassFilter javadoc
capdevon May 20, 2025
57d90d3
Update BandPassFilter javadoc
capdevon May 20, 2025
4e6f655
HighPassFilter: typo
capdevon May 20, 2025
cb7ad5a
BandPassFilter: typo
capdevon May 20, 2025
256d701
CameraEvent: javadoc
capdevon May 22, 2025
7948d72
Update CameraEvent javadoc
capdevon May 22, 2025
6213dd9
Update FastMath.java
capdevon May 22, 2025
97ba999
add TestRandomPoints
capdevon May 22, 2025
b82a0d4
Update FastMath: javadoc
capdevon May 22, 2025
f136321
FastMath: restore previous code format
capdevon May 22, 2025
1e4cb11
FastMath.nextRandomFloat: correct for [min, max)
capdevon May 22, 2025
730c688
Update WireSphere.java
capdevon May 24, 2025
b7f1118
Merge pull request #2450 from capdevon/capdevon-FastMath
yaRnMcDonuts May 28, 2025
37ea339
Merge pull request #2458 from capdevon/capdevon-WireSphere
yaRnMcDonuts May 28, 2025
73062b6
Merge pull request #2448 from capdevon/capdevon-CameraEvent
yaRnMcDonuts May 28, 2025
8cec96f
Merge pull request #2439 from riccardobl/fixPBR
yaRnMcDonuts May 28, 2025
8432643
Update PBR Screenshot Tests
yaRnMcDonuts May 28, 2025
c14e3e2
Merge pull request #2462 from jMonkeyEngine/yaRnMcDonuts-patch-2
yaRnMcDonuts May 28, 2025
c110698
Merge pull request #2444 from capdevon/capdevon-new-audio-filters
yaRnMcDonuts May 29, 2025
06760bf
Update LoopMode.java
capdevon Jun 3, 2025
60c101f
Merge pull request #2477 from capdevon/capdevon-LoopMode
yaRnMcDonuts Jun 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
117 changes: 117 additions & 0 deletions .github/workflows/screenshot-test-comment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
name: Screenshot Test PR Comment

# This workflow is designed to safely comment on PRs from forks
# It uses pull_request_target which has higher permissions than pull_request
# Security note: This workflow does NOT check out or execute code from the PR
# It only monitors the status of the ScreenshotTests job and posts comments
# (If this commenting was done in the main worflow it would not have the permissions
# to create a comment)

on:
pull_request_target:
types: [opened, synchronize, reopened]

jobs:
monitor-screenshot-tests:
name: Monitor Screenshot Tests and Comment
runs-on: ubuntu-latest
timeout-minutes: 60
permissions:
pull-requests: write
contents: read
steps:
- name: Wait for GitHub to register the workflow run
run: sleep 15

- name: Wait for Screenshot Tests to complete
uses: lewagon/wait-on-check-action@v1.3.1
with:
ref: ${{ github.event.pull_request.head.sha }}
check-name: 'Run Screenshot Tests'
repo-token: ${{ secrets.GITHUB_TOKEN }}
wait-interval: 10
allowed-conclusions: success,skipped,failure
- name: Check Screenshot Tests status
id: check-status
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { owner, repo } = context.repo;
const ref = '${{ github.event.pull_request.head.sha }}';

// Get workflow runs for the PR
const runs = await github.rest.actions.listWorkflowRunsForRepo({
owner,
repo,
head_sha: ref
});

// Find the ScreenshotTests job
let screenshotTestRun = null;
for (const run of runs.data.workflow_runs) {
if (run.name === 'Build jMonkeyEngine') {
const jobs = await github.rest.actions.listJobsForWorkflowRun({
owner,
repo,
run_id: run.id
});

for (const job of jobs.data.jobs) {
if (job.name === 'Run Screenshot Tests') {
screenshotTestRun = job;
break;
}
}

if (screenshotTestRun) break;
}
}

if (!screenshotTestRun) {
console.log('Screenshot test job not found');
return;
}

// Check if the job failed
if (screenshotTestRun.conclusion === 'failure') {
core.setOutput('failed', 'true');
} else {
core.setOutput('failed', 'false');
}
- name: Find Existing Comment
uses: peter-evans/find-comment@v3
id: existingCommentId
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: Screenshot tests have failed.

- name: Comment on PR if tests fail
if: steps.check-status.outputs.failed == 'true'
uses: peter-evans/create-or-update-comment@v4
with:
issue-number: ${{ github.event.pull_request.number }}
body: |
🖼️ **Screenshot tests have failed.**

The purpose of these tests is to ensure that changes introduced in this PR don't break visual features. They are visual unit tests.

📄 **Where to find the report:**
- Go to the (failed run) > Summary > Artifacts > screenshot-test-report
- Download the zip and open jme3-screenshot-tests/build/reports/ScreenshotDiffReport.html

⚠️ **If you didn't expect to change anything visual:**
Fix your changes so the screenshot tests pass.

✅ **If you did mean to change things:**
Review the replacement images in jme3-screenshot-tests/build/changed-images to make sure they really are improvements and then replace and commit the replacement images at jme3-screenshot-tests/src/test/resources.

✨ **If you are creating entirely new tests:**
Find the new images in jme3-screenshot-tests/build/changed-images and commit the new images at jme3-screenshot-tests/src/test/resources.

**Note;** it is very important that the committed reference images are created on the build pipeline, locally created images are not reliable. Similarly tests will fail locally but you can look at the report to check they are "visually similar".

See https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-screenshot-tests/README.md for more information
edit-mode: replace
comment-id: ${{ steps.existingCommentId.outputs.comment-id }}
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Version number: Major.Minor.SubMinor (e.g. 3.3.0)
jmeVersion = 3.8.0
jmeVersion = 3.9.0

# Leave empty to autogenerate
# (use -PjmeVersionName="myVersion" from commandline to specify a custom version name )
Expand Down
5 changes: 2 additions & 3 deletions jme3-core/src/main/java/com/jme3/animation/LoopMode.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2009-2021 jMonkeyEngine
* Copyright (c) 2009-2025 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
Expand Down Expand Up @@ -35,7 +35,6 @@
* <code>LoopMode</code> determines how animations repeat, or if they
* do not repeat.
*/
@Deprecated
public enum LoopMode {
/**
* The animation will play repeatedly, when it reaches the end
Expand All @@ -55,6 +54,6 @@ public enum LoopMode {
* animation will play backwards from the last frame until it reaches
* the first frame.
*/
Cycle,
Cycle

}
152 changes: 152 additions & 0 deletions jme3-core/src/main/java/com/jme3/audio/BandPassFilter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
/*
* Copyright (c) 2009-2025 jMonkeyEngine
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.jme3.audio;

import com.jme3.export.InputCapsule;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
import com.jme3.export.OutputCapsule;
import com.jme3.util.NativeObject;

import java.io.IOException;

/**
* Represents an OpenAL EFX Band-Pass Filter.
*/
public class BandPassFilter extends Filter {

// Default values based on OpenAL EFX specification defaults
protected float volume = 1.0f;
protected float highFreqVolume = 1.0f;
protected float lowFreqVolume = 1.0f;

/**
* Constructs a band-pass filter with default settings.
* Required for jME deserialization
*/
public BandPassFilter() {}

protected BandPassFilter(int id) {
super(id);
}

public BandPassFilter(float volume, float highFreqVolume, float lowFreqVolume) {
super();
setVolume(volume);
setHighFreqVolume(highFreqVolume);
setLowFreqVolume(lowFreqVolume);
}

public float getVolume() {
return volume;
}

/**
* Sets the overall gain of the Band-Pass filter.
*
* @param volume The gain value (0.0 to 1.0).
*/
public void setVolume(float volume) {
if (volume < 0 || volume > 1)
throw new IllegalArgumentException("Volume must be between 0 and 1");

this.volume = volume;
this.updateNeeded = true;
}

public float getHighFreqVolume() {
return highFreqVolume;
}

/**
* Sets the gain at high frequencies for the Band-Pass filter.
*
* @param highFreqVolume The high-frequency gain value (0.0 to 1.0).
*/
public void setHighFreqVolume(float highFreqVolume) {
if (highFreqVolume < 0 || highFreqVolume > 1)
throw new IllegalArgumentException("High freq volume must be between 0 and 1");

this.highFreqVolume = highFreqVolume;
this.updateNeeded = true;
}

public float getLowFreqVolume() {
return lowFreqVolume;
}

/**
* Sets the gain at low frequencies for the Band-Pass filter.
*
* @param lowFreqVolume The low-frequency gain value (0.0 to 1.0).
*/
public void setLowFreqVolume(float lowFreqVolume) {
if (lowFreqVolume < 0 || lowFreqVolume > 1)
throw new IllegalArgumentException("Low freq volume must be between 0 and 1");

this.lowFreqVolume = lowFreqVolume;
this.updateNeeded = true;
}

@Override
public NativeObject createDestructableClone() {
return new BandPassFilter(this.id);
}

/**
* Retrieves a unique identifier for this filter. Used internally for native object management.
*
* @return a unique long identifier.
*/
@Override
public long getUniqueId() {
return ((long) OBJTYPE_FILTER << 32) | (0xffffffffL & (long) id);
}

@Override
public void write(JmeExporter ex) throws IOException {
super.write(ex);
OutputCapsule oc = ex.getCapsule(this);
oc.write(this.volume, "volume", 1f);
oc.write(this.lowFreqVolume, "lf_volume", 1f);
oc.write(this.highFreqVolume, "hf_volume", 1f);
}

@Override
public void read(JmeImporter im) throws IOException {
super.read(im);
InputCapsule ic = im.getCapsule(this);
this.volume = ic.readFloat("volume", 1f);
this.lowFreqVolume = ic.readFloat("lf_volume", 1f);
this.highFreqVolume = ic.readFloat("hf_volume", 1f);
}
}
Loading