blob: 1f870647ef0507e7ab91a25718edf586d4ea9e13 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
package NET.worlds.scape;
import NET.worlds.network.URL;
public class ASFSoundPlayer extends MCISoundPlayer {
float ang;
float dist;
float vol;
int leftToRepeat;
int running;
private URL url;
public ASFSoundPlayer(Sound owner) {
super(owner);
}
@Override
public boolean open(float volume, float stopDist, boolean atten, boolean pan) {
return true;
}
@Override
public void close() {
this.stop();
}
@Override
public boolean position(Point3Temp cam, Point3Temp obj, Point3Temp out, Point3Temp up) {
Point3Temp toObj = Point3Temp.make(obj).minus(cam);
Point3Temp right = Point3Temp.make(out).cross(up);
float y = toObj.dot(out);
float x = toObj.dot(right);
this.ang = (float)(Math.atan2(y, x) / Math.PI);
this.dist = toObj.length();
return this.setVolume(this.vol);
}
@Override
public boolean setVolume(float v) {
return true;
}
@Override
public int getState() {
this.gotFinished(!ASFThread.isActive());
return this.running != 0 ? 0 : 1;
}
@Override
public synchronized void start(int repeatCount) {
if (repeatCount == 0) {
this.running = 0;
} else {
this.leftToRepeat = repeatCount;
if (this.leftToRepeat > 0) {
this.leftToRepeat--;
}
this.running = 1;
URL myURL = this.owner == null ? this.url : this.owner.getURL();
this.running = 2;
new ASFThread(myURL, this);
}
}
@Override
public synchronized void start(URL u) {
this.url = u;
this.start(1);
}
public static void pauseSystem() {
ASFThread.pauseASF();
WavSoundPlayer.pauseSystemExceptASF();
}
public static void resumeSystem() {
ASFThread.resumeASF();
WavSoundPlayer.resumeSystemExceptASF();
}
@Override
synchronized void gotFinished(boolean f) {
if (f && this.running == 2) {
this.start(this.leftToRepeat);
}
}
@Override
public synchronized void stop() {
this.leftToRepeat = 0;
ASFThread.stopASF();
}
@Override
public void volume(float left, float right) {
}
public static synchronized boolean isActive() {
return ASFThread.isActive();
}
static synchronized void shutdown() {
ASFThread.stopASF();
}
static native boolean nativePlay(String var0);
}
|