|
849 | 849 | "function" === typeof callback, |
850 | 850 | "listen: 2nd param must be a function" |
851 | 851 | ); |
| 852 | + eventName = eventName.toLowerCase(); |
852 | 853 | _events[eventName] = _events[eventName] || /* @__PURE__ */ new Set(); |
853 | 854 | _events[eventName].add(callback); |
854 | 855 | return () => _events[eventName].delete(callback); |
|
868 | 869 | "emit: 1st param must be a string" |
869 | 870 | ); |
870 | 871 | if (_initialized) { |
| 872 | + eventName = eventName.toLowerCase(); |
871 | 873 | triggerEvent("before:" + eventName, arg1, arg2, arg3, arg4); |
872 | 874 | triggerEvent(eventName, arg1, arg2, arg3, arg4); |
873 | 875 | triggerEvent("after:" + eventName, arg1, arg2, arg3, arg4); |
|
969 | 971 | // 11 |
970 | 972 | _fontFamily |
971 | 973 | ]; |
972 | | - return list[n]; |
| 974 | + const data = { index: n, value: list[n] }; |
| 975 | + instance.emit("stat", data); |
| 976 | + return data.value; |
973 | 977 | }, |
974 | 978 | /** |
975 | 979 | * Stops the litecanvas instance and remove all event listeners. |
|
1137 | 1141 | }); |
1138 | 1142 | } |
1139 | 1143 | if (settings.keyboardEvents) { |
1140 | | - const toLowerCase = (s) => s.toLowerCase(); |
1141 | 1144 | const _keysDown = /* @__PURE__ */ new Set(); |
1142 | 1145 | const _keysPress = /* @__PURE__ */ new Set(); |
1143 | | - const keyCheck = (keysSet, key) => { |
1144 | | - return !key ? keysSet.size > 0 : keysSet.has( |
1145 | | - "space" === toLowerCase(key) ? " " : toLowerCase(key) |
1146 | | - ); |
| 1146 | + const keyCheck = (keySet, key = "") => { |
| 1147 | + key = key.toLowerCase(); |
| 1148 | + return !key ? keySet.size > 0 : keySet.has("space" === key ? " " : key); |
1147 | 1149 | }; |
1148 | 1150 | on(root, "keydown", (event) => { |
1149 | | - if (!_keysDown.has(toLowerCase(event.key))) { |
1150 | | - _keysDown.add(toLowerCase(event.key)); |
1151 | | - _keysPress.add(toLowerCase(event.key)); |
| 1151 | + const key = event.key.toLowerCase(); |
| 1152 | + if (!_keysDown.has(key)) { |
| 1153 | + _keysDown.add(key); |
| 1154 | + _keysPress.add(key); |
1152 | 1155 | } |
1153 | 1156 | }); |
1154 | 1157 | on(root, "keyup", (event) => { |
1155 | | - _keysDown.delete(toLowerCase(event.key)); |
| 1158 | + _keysDown.delete(event.key.toLowerCase()); |
1156 | 1159 | }); |
1157 | 1160 | on(root, "blur", () => _keysDown.clear()); |
1158 | | - instance.listen("after:draw", () => _keysPress.clear()); |
| 1161 | + instance.listen("after:update", () => _keysPress.clear()); |
1159 | 1162 | instance.def( |
1160 | 1163 | "iskeydown", |
1161 | 1164 | /** |
|
2014 | 2017 | } |
2015 | 2018 | window.pluginMigrate = p; |
2016 | 2019 | })(); |
| 2020 | + (() => { |
| 2021 | + function A() { |
| 2022 | + let o = 0, a = true, i = document.createElement("div"), r = [], p = () => (performance || Date).now(); |
| 2023 | + i.style.cssText = "position:absolute;top:0;right:0;cursor:pointer;opacity:0.8;z-index:10000", i.addEventListener("click", function(e) { |
| 2024 | + e.preventDefault(), l(++o % i.children.length); |
| 2025 | + }, false); |
| 2026 | + function u(e, n, _, t) { |
| 2027 | + let w = new P(e, n, _, i, t); |
| 2028 | + return r.push(w), w; |
| 2029 | + } |
| 2030 | + function l(e) { |
| 2031 | + for (let n = 0; n < i.children.length; n++) i.children[n].style.display = n === e ? "block" : "none"; |
| 2032 | + o = e; |
| 2033 | + } |
| 2034 | + function f() { |
| 2035 | + o++, o >= i.children.length && (o = 0), l(o); |
| 2036 | + } |
| 2037 | + function s(e = "all") { |
| 2038 | + if (e === "all") for (let n = 0; n < r.length; n++) r[n].reset(); |
| 2039 | + else r[e] && r[e].reset(); |
| 2040 | + h = p(), y2 = 0; |
| 2041 | + } |
| 2042 | + function g(e = true) { |
| 2043 | + a = !!e, i.style.display = a ? "" : "none"; |
| 2044 | + } |
| 2045 | + let b = p(), h = b, y2 = 0, c = u("FPS", "#0ff", "#002"), d = u("MS", "#0f0", "#020"), m; |
| 2046 | + return self.performance && self.performance.memory && (m = u("MB", "#f08", "#201")), l(0), { dom: i, addPanel: u, showPanel: l, nextPanel: f, resetPanel: s, display: g, get hidden() { |
| 2047 | + return !a; |
| 2048 | + }, begin: function() { |
| 2049 | + b = p(); |
| 2050 | + }, end: function() { |
| 2051 | + y2++; |
| 2052 | + let e = p(); |
| 2053 | + if (d.update(e - b, 200), e >= h + 1e3 && (c.update(y2 * 1e3 / (e - h), 100), h = e, y2 = 0, m)) { |
| 2054 | + let n = performance.memory; |
| 2055 | + m.update(n.usedJSHeapSize / 1048576, n.jsHeapSizeLimit / 1048576); |
| 2056 | + } |
| 2057 | + return e; |
| 2058 | + }, update: function() { |
| 2059 | + b = this.end(); |
| 2060 | + } }; |
| 2061 | + } |
| 2062 | + function P(o, a, i, r, p = {}) { |
| 2063 | + let u = Math.round, l = 1 / 0, f = 0, s = u(window.devicePixelRatio || 1), g = (p.width || 80) * s, b = 48 * s, h = 3 * s, y2 = 2 * s, c = 3 * s, d = 15 * s, m = (g - 6) * s, e = 30 * s, n = document.createElement("canvas"); |
| 2064 | + n.width = g, n.height = b; |
| 2065 | + let _ = r.children.length; |
| 2066 | + r.appendChild(n); |
| 2067 | + let t = n.getContext("2d"); |
| 2068 | + t.font = "bold " + 9 * s + "px Helvetica,Arial,sans-serif", t.textBaseline = "top"; |
| 2069 | + function w() { |
| 2070 | + t.fillStyle = i, t.fillRect(0, 0, g, b), t.fillStyle = a, t.fillText(o, h, y2), t.fillRect(c, d, m, e), t.fillStyle = i, t.globalAlpha = 0.9, t.fillRect(c, d, m, e); |
| 2071 | + } |
| 2072 | + return w(), { id: _, dom: n, reset: w, update: function(x2, E) { |
| 2073 | + l = Math.min(l, x2), f = Math.max(f, x2), t.fillStyle = i, t.globalAlpha = 1, t.fillRect(0, 0, g, d), t.fillStyle = a; |
| 2074 | + let T = [u(x2), o]; |
| 2075 | + p.labelBefore && T.reverse(), t.fillText(T.join(" ") + " (" + u(l) + "-" + u(f) + ")", h, y2), t.drawImage(n, c + s, d, m - s, e, c, d, m - s, e), t.fillRect(c + m - s, d, s, e), t.fillStyle = i, t.globalAlpha = 0.9, t.fillRect(c + m - s, d, s, u((1 - x2 / E) * e)); |
| 2076 | + } }; |
| 2077 | + } |
| 2078 | + var S = { hotkeyShow: "F1", hotkeyNext: "F2", css: {}, hidden: false, id: "" }; |
| 2079 | + function v(o, a = {}) { |
| 2080 | + a = Object.assign({}, S, a); |
| 2081 | + let i = o.stat(0), r = new A(), p = r.display, u = (l = true) => { |
| 2082 | + console.log("display", l), a.hidden = !l, p(l), r.resetPanel(); |
| 2083 | + }; |
| 2084 | + a.id && (r.dom.id = a.id); |
| 2085 | + for (let [l, f] of Object.entries(a.css || {})) r.dom.style[l] = f; |
| 2086 | + return o.CANVAS.parentElement.appendChild(r.dom), u(!a.hidden), i.keyboardEvents && listen("update", () => { |
| 2087 | + a.hotkeyShow && o.iskeypressed(a.hotkeyShow) && u(a.hidden), a.hotkeyNext && o.iskeypressed(a.hotkeyNext) && r.nextPanel(); |
| 2088 | + }), listen("before:update", (l, f = 1) => { |
| 2089 | + a.hidden || f === 1 && r.begin(); |
| 2090 | + }), listen("after:draw", () => { |
| 2091 | + a.hidden || r.end(); |
| 2092 | + }), r.display = u, { FPS_METER: r }; |
| 2093 | + } |
| 2094 | + window.pluginFrameRateMeter = v; |
| 2095 | + })(); |
2017 | 2096 | })(); |
2018 | 2097 | /*! @litecanvas/utils by Luiz Bills | MIT Licensed */ |
2019 | 2098 | /*! Asset Loader plugin for litecanvas by Luiz Bills | MIT Licensed */ |
2020 | 2099 | /*! pluginMigrate for litecanvas v0.0.1 by Luiz Bills | MIT Licensed */ |
| 2100 | +/*! pluginFrameRateMeter for litecanvas by Luiz Bills | MIT Licensed */ |
0 commit comments