• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package jme3test.helloworld;
2 
3 import com.jme3.app.SimpleApplication;
4 import com.jme3.audio.AudioNode;
5 import com.jme3.input.controls.ActionListener;
6 import com.jme3.input.controls.MouseButtonTrigger;
7 import com.jme3.material.Material;
8 import com.jme3.math.ColorRGBA;
9 import com.jme3.math.Vector3f;
10 import com.jme3.scene.Geometry;
11 import com.jme3.scene.shape.Box;
12 
13 /** Sample 11 - playing 3D audio. */
14 public class HelloAudio extends SimpleApplication {
15 
16   private AudioNode audio_gun;
17   private AudioNode audio_nature;
18   private Geometry player;
19 
main(String[] args)20   public static void main(String[] args) {
21     HelloAudio app = new HelloAudio();
22     app.start();
23   }
24 
25   @Override
simpleInitApp()26   public void simpleInitApp() {
27     flyCam.setMoveSpeed(40);
28 
29     /** just a blue box floating in space */
30     Box box1 = new Box(Vector3f.ZERO, 1, 1, 1);
31     player = new Geometry("Player", box1);
32     Material mat1 = new Material(assetManager,
33             "Common/MatDefs/Misc/Unshaded.j3md");
34     mat1.setColor("Color", ColorRGBA.Blue);
35     player.setMaterial(mat1);
36     rootNode.attachChild(player);
37 
38     /** custom init methods, see below */
39     initKeys();
40     initAudio();
41   }
42 
43   /** We create two audio nodes. */
initAudio()44   private void initAudio() {
45     /* gun shot sound is to be triggered by a mouse click. */
46     audio_gun = new AudioNode(assetManager, "Sound/Effects/Gun.wav", false);
47     audio_gun.setLooping(false);
48     audio_gun.setVolume(2);
49     rootNode.attachChild(audio_gun);
50 
51     /* nature sound - keeps playing in a loop. */
52     audio_nature = new AudioNode(assetManager, "Sound/Environment/Nature.ogg", true);
53     audio_nature.setLooping(true);  // activate continuous playing
54     audio_nature.setPositional(true);
55     audio_nature.setLocalTranslation(Vector3f.ZERO.clone());
56     audio_nature.setVolume(3);
57     rootNode.attachChild(audio_nature);
58     audio_nature.play(); // play continuously!
59   }
60 
61   /** Declaring "Shoot" action, mapping it to a trigger (mouse click). */
initKeys()62   private void initKeys() {
63     inputManager.addMapping("Shoot", new MouseButtonTrigger(0));
64     inputManager.addListener(actionListener, "Shoot");
65   }
66 
67   /** Defining the "Shoot" action: Play a gun sound. */
68   private ActionListener actionListener = new ActionListener() {
69     @Override
70     public void onAction(String name, boolean keyPressed, float tpf) {
71       if (name.equals("Shoot") && !keyPressed) {
72         audio_gun.playInstance(); // play each instance once!
73       }
74     }
75   };
76 
77   /** Move the listener with the a camera - for 3D audio. */
78   @Override
simpleUpdate(float tpf)79   public void simpleUpdate(float tpf) {
80     listener.setLocation(cam.getLocation());
81     listener.setRotation(cam.getRotation());
82   }
83 
84 }
85