-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathStats.js
138 lines (138 loc) · 5.22 KB
/
Stats.js
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
129
130
131
132
133
134
135
136
137
138
// stats.js r6 - http://github.com / mrdoob / stats.js
var Stats = function() {
function s(a, g, d) {
var f, c, e;
for (c = 0; c < 30; c++)
for (f = 0; f < 73; f++)
e = (f + c * 74) * 4, a[e] = a[e + 4], a[e + 1] = a[e + 5], a[e + 2] = a[e + 6];
for (c = 0; c < 30; c++)
e = (73 + c * 74) * 4, c < g ? (a[e] = b[d].bg.r, a[e + 1] = b[d].bg.g, a[e + 2] = b[d].bg.b) : (a[e] = b[d].fg.r, a[e + 1] = b[d].fg.g, a[e + 2] = b[d].fg.b)
} var r = 0, t = 2, g, u = 0, j = (new Date).getTime(),
F = j, v = j, l = 0, w = 1E3, x = 0,
k, d, a, m, y, n = 0, z = 1E3,
A = 0, f, c, o, B, p = 0, C = 1E3,
D = 0, h, i, q, E, b = {fps:{bg:{r:16, g:16, b:48}, fg:{r:0, g:255, b:255}}, ms:{bg:{r:16, g:48, b:16}, fg:{r:0, g:255, b:0}}, mb:{bg:{r:48, g:16,
b:26}, fg:{r:255, g:0, b:128}}};
g = document.createElement("div");
g.style.cursor = "pointer";
g.style.width = "80px";
g.style.opacity = "0.9";
g.style.zIndex = "10001";
g.addEventListener("click", function() {
r++;
r == t && (r = 0);
k.style.display = "none";
f.style.display = "none";
h.style.display = "none";
switch (r) {
case 0:
k.style.display = "block";
break;
case 1:
f.style.display = "block";
break;
case 2:
h.style.display = "block"
}
}, !1);
k = document.createElement("div");
k.style.backgroundColor = "rgb(" + Math.floor(b.fps.bg.r / 2) + "," + Math.floor(b.fps.bg.g /
2) + "," + Math.floor(b.fps.bg.b / 2) + ")";
k.style.padding = "2px 0px 3px 0px";
g.appendChild(k);
d = document.createElement("div");
d.style.fontFamily = "Helvetica, Arial, sans-serif";
d.style.textAlign = "left";
d.style.fontSize = "9px";
d.style.color = "rgb(" + b.fps.fg.r + "," + b.fps.fg.g + "," + b.fps.fg.b + ")";
d.style.margin = "0px 0px 1px 3px";
d.innerHTML = '<span style="font-weight:bold">FPS</span>';
k.appendChild(d);
a = document.createElement("canvas");
a.width = 74;
a.height = 30;
a.style.display = "block";
a.style.marginLeft = "3px";
k.appendChild(a);
m = a.getContext("2d");
m.fillStyle = "rgb(" + b.fps.bg.r + "," + b.fps.bg.g + "," + b.fps.bg.b + ")";
m.fillRect(0, 0, a.width, a.height);
y = m.getImageData(0, 0, a.width, a.height);
f = document.createElement("div");
f.style.backgroundColor = "rgb(" + Math.floor(b.ms.bg.r / 2) + "," + Math.floor(b.ms.bg.g / 2) + "," + Math.floor(b.ms.bg.b / 2) + ")";
f.style.padding = "2px 0px 3px 0px";
f.style.display = "none";
g.appendChild(f);
c = document.createElement("div");
c.style.fontFamily = "Helvetica, Arial, sans-serif";
c.style.textAlign = "left";
c.style.fontSize =
"9px";
c.style.color = "rgb(" + b.ms.fg.r + "," + b.ms.fg.g + "," + b.ms.fg.b + ")";
c.style.margin = "0px 0px 1px 3px";
c.innerHTML = '<span style="font-weight:bold">MS</span>';
f.appendChild(c);
a = document.createElement("canvas");
a.width = 74;
a.height = 30;
a.style.display = "block";
a.style.marginLeft = "3px";
f.appendChild(a);
o = a.getContext("2d");
o.fillStyle = "rgb(" + b.ms.bg.r + "," + b.ms.bg.g + "," + b.ms.bg.b + ")";
o.fillRect(0, 0, a.width, a.height);
B = o.getImageData(0, 0, a.width, a.height);
try {
performance && performance.memory && performance.memory.totalJSHeapSize &&
(t = 3)
} catch(G) {
} h = document.createElement("div");
h.style.backgroundColor = "rgb(" + Math.floor(b.mb.bg.r / 2) + "," + Math.floor(b.mb.bg.g / 2) + "," + Math.floor(b.mb.bg.b / 2) + ")";
h.style.padding = "2px 0px 3px 0px";
h.style.display = "none";
g.appendChild(h);
i = document.createElement("div");
i.style.fontFamily = "Helvetica, Arial, sans-serif";
i.style.textAlign = "left";
i.style.fontSize = "9px";
i.style.color = "rgb(" + b.mb.fg.r + "," + b.mb.fg.g + "," + b.mb.fg.b + ")";
i.style.margin = "0px 0px 1px 3px";
i.innerHTML = '<span style="font-weight:bold">MB</span>';
h.appendChild(i);
a = document.createElement("canvas");
a.width = 74;
a.height = 30;
a.style.display = "block";
a.style.marginLeft = "3px";
h.appendChild(a);
q = a.getContext("2d");
q.fillStyle = "#301010";
q.fillRect(0, 0, a.width, a.height);
E = q.getImageData(0, 0, a.width, a.height);
return {
domElement: g, update:function() {
u++;
j = (new Date).getTime();
n = j - F;
z = Math.min(z, n);
A = Math.max(A, n);
s(B.data, Math.min(30, 30 - n / 200 * 30), "ms");
c.innerHTML = '<span style="font-weight:bold">' + n + " MS</span> (" + z + "-" + A + ")";
o.putImageData(B, 0, 0);
F = j;
if (j >
v + 1E3) {
l = Math.round(u * 1E3 / (j - v));
w = Math.min(w, l);
x = Math.max(x, l);
s(y.data, Math.min(30, 30 - l / 100 * 30), "fps");
d.innerHTML = '<span style="font-weight:bold">' + l + " FPS</span> (" + w + "-" + x + ")";
m.putImageData(y, 0, 0);
if (t == 3)
p = performance.memory.usedJSHeapSize * 9.54E-7, C = Math.min(C, p), D = Math.max(D, p), s(E.data, Math.min(30, 30 - p / 2), "mb"), i.innerHTML = '<span style="font-weight:bold">' + Math.round(p) + " MB</span> (" + Math.round(C) + "-" + Math.round(D) + ")", q.putImageData(E, 0, 0);
v = j;
u = 0
}
}
}
};