diff options
Diffstat (limited to 'NET/worlds/scape/MCISoundPlayer.java')
| -rw-r--r-- | NET/worlds/scape/MCISoundPlayer.java | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/NET/worlds/scape/MCISoundPlayer.java b/NET/worlds/scape/MCISoundPlayer.java new file mode 100644 index 0000000..cd26226 --- /dev/null +++ b/NET/worlds/scape/MCISoundPlayer.java @@ -0,0 +1,211 @@ +/* */ package NET.worlds.scape; +/* */ +/* */ import NET.worlds.network.URL; +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public class MCISoundPlayer +/* */ extends SoundPlayer +/* */ { +/* */ public MCISoundPlayer(Sound owner) +/* */ { +/* 32 */ super(owner); +/* */ } +/* */ +/* */ +/* */ +/* */ +/* 38 */ private static MCIThread mciThread = new MCIThread(); +/* */ float ang; +/* */ float dist; +/* */ float vol; +/* */ int leftToRepeat; +/* */ int running; +/* */ +/* */ public boolean open(float volume, float stopDist, boolean atten, boolean pan) +/* */ { +/* 47 */ return true; +/* */ } +/* */ +/* */ public void close() { +/* 51 */ stop(); +/* */ } +/* */ +/* */ public boolean position(Point3Temp cam, Point3Temp obj, Point3Temp out, Point3Temp up) +/* */ { +/* 56 */ Point3Temp toObj = Point3Temp.make(obj).minus(cam); +/* 57 */ Point3Temp right = Point3Temp.make(out).cross(up); +/* 58 */ float y = toObj.dot(out); +/* 59 */ float x = toObj.dot(right); +/* 60 */ this.ang = ((float)(Math.atan2(y, x) / 3.141592653589793D)); +/* 61 */ this.dist = toObj.length(); +/* */ +/* */ +/* 64 */ return setVolume(this.vol); +/* */ } +/* */ +/* */ public boolean setVolume(float v) { +/* 68 */ this.vol = v; +/* */ +/* 70 */ float leftFrac = 0.5F; +/* 71 */ if ((this.owner != null) && (this.owner.getPanning())) +/* */ { +/* */ +/* 74 */ leftFrac = Math.abs(this.ang); +/* */ +/* */ +/* 77 */ if (this.ang < 0.0F) { +/* 78 */ v = this.vol * (float)(0.5D + Math.abs(0.5D + this.ang)); +/* */ } +/* */ } +/* 81 */ if ((this.owner != null) && (this.owner.getAttenuate())) { +/* 82 */ float stopDist = this.owner.getStopDistance(); +/* 83 */ if (this.dist > stopDist) { +/* 84 */ volume(0.0F, 0.0F); +/* 85 */ return false; +/* */ } +/* */ +/* 88 */ v *= (stopDist - this.dist) / stopDist; +/* */ } +/* */ +/* 91 */ volume(v * leftFrac, v * (1.0F - leftFrac)); +/* 92 */ return true; +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* 101 */ MCISoundCommand poll = new MCISoundCommand() { +/* 102 */ public void run() { MCISoundPlayer.this.gotFinished(MCISoundPlayer.this.nativeIsFinished()); } +/* */ }; +/* */ +/* */ private URL url; +/* */ +/* */ private static MCISoundCommand activeStopCmd; +/* */ +/* */ +/* */ public int getState() +/* */ { +/* 112 */ if (!this.poll.isOnQueue) { +/* 113 */ mciThread.pushCommand(this.poll); +/* */ } +/* 115 */ return this.running != 0 ? 0 : 1; +/* */ } +/* */ +/* */ public synchronized void start(int repeatCount) { +/* 119 */ if (repeatCount == 0) { +/* 120 */ this.running = 0; +/* 121 */ return; +/* */ } +/* */ +/* 124 */ this.leftToRepeat = repeatCount; +/* */ +/* 126 */ if (this.leftToRepeat > 0) { +/* 127 */ this.leftToRepeat -= 1; +/* */ } +/* 129 */ this.running = 1; +/* */ +/* 131 */ activeStopCmd = null; +/* 132 */ mciThread.pushCommand(new MCISoundCommand() { +/* 133 */ public void run() { MCISoundPlayer.this.doStart(); } +/* */ }); +/* */ } +/* */ +/* */ +/* */ public synchronized void start(URL u) +/* */ { +/* 140 */ this.url = u; +/* 141 */ start(1); +/* */ } +/* */ +/* */ synchronized void doStart() { +/* 145 */ this.running = 2; +/* 146 */ if (!nativeStart((this.owner == null ? this.url : this.owner.getURL()).unalias())) { +/* 147 */ this.running = 3; +/* */ } +/* */ } +/* */ +/* */ synchronized void gotFinished(boolean f) { +/* 152 */ if ((f) && +/* 153 */ (this.running == 2)) { +/* 154 */ start(this.leftToRepeat); +/* */ } +/* */ } +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ +/* */ public synchronized void stop() +/* */ { +/* 167 */ this.leftToRepeat = 0; +/* 168 */ activeStopCmd = new MCISoundCommand() { +/* */ public void run() { +/* 170 */ if (MCISoundPlayer.activeStopCmd == this) { +/* 171 */ MCISoundPlayer.activeStopCmd = null; +/* 172 */ MCISoundPlayer.this.nativeStop(); +/* */ } +/* */ } +/* 175 */ }; +/* 176 */ mciThread.pushCommand(activeStopCmd); +/* */ } +/* */ +/* 179 */ MCISoundCommand volumeCmd = new MCISoundCommand() { +/* */ public void run() { +/* 181 */ if (!WavSoundPlayer.ignoreVolumeChanges) +/* 182 */ MCISoundPlayer.this.nativeVolume(this.left, this.right); +/* */ } +/* */ }; +/* */ +/* */ public void volume(float left, float right) { +/* 187 */ this.volumeCmd.left = left; +/* 188 */ this.volumeCmd.right = right; +/* 189 */ if (!this.volumeCmd.isOnQueue) { +/* 190 */ mciThread.pushCommand(this.volumeCmd); +/* */ } +/* */ } +/* */ +/* */ private native void nativeVolume(float paramFloat1, float paramFloat2); +/* */ +/* */ private native boolean nativeStart(String paramString); +/* */ +/* */ private native boolean nativeIsFinished(); +/* */ +/* */ private native void nativeStop(); +/* */ +/* */ public static native boolean isActive(); +/* */ +/* */ static native void shutdown(); +/* */ } + + +/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\scape\MCISoundPlayer.class + * Java compiler version: 6 (50.0) + * JD-Core Version: 0.7.1 + */
\ No newline at end of file |