• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2009-2010 jMonkeyEngine
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in the
14  *   documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
17  *   may be used to endorse or promote products derived from this software
18  *   without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 package com.jme3.niftygui;
34 
35 import com.jme3.asset.AssetManager;
36 import com.jme3.audio.AudioNode;
37 import com.jme3.audio.AudioNode.Status;
38 import com.jme3.audio.AudioRenderer;
39 import de.lessvoid.nifty.spi.sound.SoundHandle;
40 
41 public class SoundHandleJme implements SoundHandle {
42 
43     private AudioNode node;
44     private AssetManager am;
45     private String fileName;
46     private float volume = 1;
47 
SoundHandleJme(AudioRenderer ar, AudioNode node)48     public SoundHandleJme(AudioRenderer ar, AudioNode node){
49         if (ar == null || node == null)
50             throw new NullPointerException();
51 
52         this.node = node;
53     }
54 
55     /**
56      * For streaming music only. (May need to loop..)
57      * @param ar
58      * @param am
59      * @param fileName
60      */
SoundHandleJme(AudioRenderer ar, AssetManager am, String fileName)61     public SoundHandleJme(AudioRenderer ar, AssetManager am, String fileName){
62         if (ar == null || am == null)
63             throw new NullPointerException();
64 
65         this.am = am;
66         if (fileName == null)
67             throw new NullPointerException();
68 
69         this.fileName = fileName;
70     }
71 
play()72     public void play() {
73         if (fileName != null){
74             if (node != null){
75                 node.stop();
76             }
77 
78             node = new AudioNode(am, fileName, true);
79             node.setPositional(false);
80             node.setVolume(volume);
81             node.play();
82         }else{
83             node.playInstance();
84         }
85     }
86 
stop()87     public void stop() {
88         if (node != null){
89             node.stop();
90             node = null;
91         }
92     }
93 
setVolume(float f)94     public void setVolume(float f) {
95         if (node != null) {
96             node.setVolume(f);
97         }
98         volume = f;
99     }
100 
getVolume()101     public float getVolume() {
102         return volume;
103     }
104 
isPlaying()105     public boolean isPlaying() {
106         return node != null && node.getStatus() == Status.Playing;
107     }
108 
dispose()109     public void dispose() {
110     }
111 }
112