blob: 530cf09bae9071473eb69ef57b27fb9ae2369ff0 (
plain)
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
package net.minecraft.server;
public class Path {
private PathPoint[] a = new PathPoint[128]; // CraftBukkit - reduce default size
private int b = 0;
public Path() {}
public PathPoint a(PathPoint pathpoint) {
if (pathpoint.d >= 0) {
throw new IllegalStateException("OW KNOWS!");
} else {
if (this.b == this.a.length) {
PathPoint[] apathpoint = new PathPoint[this.b << 1];
System.arraycopy(this.a, 0, apathpoint, 0, this.b);
this.a = apathpoint;
}
this.a[this.b] = pathpoint;
pathpoint.d = this.b;
this.a(this.b++);
return pathpoint;
}
}
public void a() {
this.b = 0;
}
public PathPoint c() {
PathPoint pathpoint = this.a[0];
this.a[0] = this.a[--this.b];
this.a[this.b] = null;
if (this.b > 0) {
this.b(0);
}
pathpoint.d = -1;
return pathpoint;
}
public void a(PathPoint pathpoint, float f) {
float f1 = pathpoint.g;
pathpoint.g = f;
if (f < f1) {
this.a(pathpoint.d);
} else {
this.b(pathpoint.d);
}
}
private void a(int i) {
PathPoint pathpoint = this.a[i];
int j;
for (float f = pathpoint.g; i > 0; i = j) {
j = i - 1 >> 1;
PathPoint pathpoint1 = this.a[j];
if (f >= pathpoint1.g) {
break;
}
this.a[i] = pathpoint1;
pathpoint1.d = i;
}
this.a[i] = pathpoint;
pathpoint.d = i;
}
private void b(int i) {
PathPoint pathpoint = this.a[i];
float f = pathpoint.g;
while (true) {
int j = 1 + (i << 1);
int k = j + 1;
if (j >= this.b) {
break;
}
PathPoint pathpoint1 = this.a[j];
float f1 = pathpoint1.g;
PathPoint pathpoint2;
float f2;
if (k >= this.b) {
pathpoint2 = null;
f2 = Float.POSITIVE_INFINITY;
} else {
pathpoint2 = this.a[k];
f2 = pathpoint2.g;
}
if (f1 < f2) {
if (f1 >= f) {
break;
}
this.a[i] = pathpoint1;
pathpoint1.d = i;
i = j;
} else {
if (f2 >= f) {
break;
}
this.a[i] = pathpoint2;
pathpoint2.d = i;
i = k;
}
}
this.a[i] = pathpoint;
pathpoint.d = i;
}
public boolean e() {
return this.b == 0;
}
}
|