diff --git a/jme3-examples/src/main/java/jme3test/audio/TestDoppler.java b/jme3-examples/src/main/java/jme3test/audio/TestDoppler.java index 1065e1cee9..1e1731d2b8 100644 --- a/jme3-examples/src/main/java/jme3test/audio/TestDoppler.java +++ b/jme3-examples/src/main/java/jme3test/audio/TestDoppler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009-2012 jMonkeyEngine + * Copyright (c) 2009-2025 jMonkeyEngine * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -35,11 +35,16 @@ import com.jme3.app.SimpleApplication; import com.jme3.audio.AudioData; import com.jme3.audio.AudioNode; -import com.jme3.math.FastMath; +import com.jme3.font.BitmapText; +import com.jme3.material.Material; +import com.jme3.math.ColorRGBA; import com.jme3.math.Vector3f; import com.jme3.scene.Geometry; +import com.jme3.scene.Mesh; +import com.jme3.scene.debug.Grid; import com.jme3.scene.shape.Sphere; -import com.jme3.scene.shape.Torus; + +import java.util.Locale; /** * Test Doppler Effect @@ -49,23 +54,17 @@ public class TestDoppler extends SimpleApplication { private float pos = -5; private float vel = 5; private AudioNode ufoNode; + private BitmapText bmp; - public static void main(String[] args){ - TestDoppler test = new TestDoppler(); - test.start(); + public static void main(String[] args) { + TestDoppler app = new TestDoppler(); + app.start(); } @Override public void simpleInitApp() { - flyCam.setMoveSpeed(10); - - Torus torus = new Torus(10, 6, 1, 3); - Geometry g = new Geometry("Torus Geom", torus); - g.rotate(-FastMath.HALF_PI, 0, 0); - g.center(); - - g.setMaterial(assetManager.loadMaterial("Common/Materials/RedColor.j3m")); -// rootNode.attachChild(g); + configureCamera(); + bmp = createLabelText(10, 20, ""); ufoNode = new AudioNode(assetManager, "Sound/Effects/Beep.ogg", AudioData.DataType.Buffer); ufoNode.setLooping(true); @@ -73,22 +72,50 @@ public void simpleInitApp() { ufoNode.setRefDistance(1); ufoNode.setMaxDistance(100000000); ufoNode.setVelocityFromTranslation(true); - ufoNode.play(); + rootNode.attachChild(ufoNode); - Geometry ball = new Geometry("Beeper", new Sphere(10, 10, 0.1f)); - ball.setMaterial(assetManager.loadMaterial("Common/Materials/RedColor.j3m")); + Geometry ball = makeShape("Beeper", new Sphere(10, 10, .5f), ColorRGBA.Red); ufoNode.attachChild(ball); - rootNode.attachChild(ufoNode); + Geometry grid = makeShape("DebugGrid", new Grid(21, 21, 2), ColorRGBA.Gray); + grid.center().move(0, 0, 0); + rootNode.attachChild(grid); + + ufoNode.play(); } + private void configureCamera() { + flyCam.setMoveSpeed(15f); + flyCam.setDragToRotate(true); + + cam.setLocation(Vector3f.UNIT_XYZ.mult(12)); + cam.lookAt(Vector3f.ZERO, Vector3f.UNIT_Y); + } @Override public void simpleUpdate(float tpf) { pos += tpf * vel; - if (pos < -10 || pos > 10) { + if (pos < -10f || pos > 10f) { vel *= -1; } - ufoNode.setLocalTranslation(new Vector3f(pos, 0, 0)); + ufoNode.setLocalTranslation(pos, 0f, 0f); + bmp.setText(String.format(Locale.ENGLISH, "Audio Position: (%.2f, %.1f, %.1f)", pos, 0f, 0f)); + } + + private BitmapText createLabelText(int x, int y, String text) { + BitmapText bmp = new BitmapText(guiFont); + bmp.setText(text); + bmp.setLocalTranslation(x, settings.getHeight() - y, 0); + bmp.setColor(ColorRGBA.Red); + guiNode.attachChild(bmp); + return bmp; + } + + private Geometry makeShape(String name, Mesh mesh, ColorRGBA color) { + Geometry geo = new Geometry(name, mesh); + Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); + mat.setColor("Color", color); + geo.setMaterial(mat); + return geo; } }