| (window["webpackJsonpGUI"] = window["webpackJsonpGUI"] || []).push([[1],{ |
|
|
| "./node_modules/css-loader/index.js!./src/addons/addons/fps/userstyle.css": |
| |
| |
| |
| |
| (function(module, exports, __webpack_require__) { |
|
|
| exports = module.exports = __webpack_require__( "./node_modules/css-loader/lib/css-base.js")(false); |
| |
|
|
|
|
| |
| exports.push([module.i, ".fps-counter {\n font-size: 0.625rem;\n font-weight: bold;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n white-space: nowrap;\n padding: 0.25rem;\n user-select: none;\n color: #0fbd8c;\n display: none;\n align-items: center;\n}\n\n.fps-counter.show {\n display: flex;\n}\n\n.sa-small-stage .fps-counter {\n display: none;\n}", ""]); |
|
|
| |
|
|
|
|
| }), |
|
|
| "./src/addons/addons/fps/_runtime_entry.js": |
| |
| |
| |
| |
| (function(module, __webpack_exports__, __webpack_require__) { |
|
|
| "use strict"; |
| __webpack_require__.r(__webpack_exports__); |
| __webpack_require__.d(__webpack_exports__, "resources", function() { return resources; }); |
| var _userscript_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( "./src/addons/addons/fps/userscript.js"); |
| var _css_loader_userstyle_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( "./node_modules/css-loader/index.js!./src/addons/addons/fps/userstyle.css"); |
| var _css_loader_userstyle_css__WEBPACK_IMPORTED_MODULE_1___default = __webpack_require__.n(_css_loader_userstyle_css__WEBPACK_IMPORTED_MODULE_1__); |
| |
|
|
|
|
| const resources = { |
| "userscript.js": _userscript_js__WEBPACK_IMPORTED_MODULE_0__["default"], |
| "userstyle.css": _css_loader_userstyle_css__WEBPACK_IMPORTED_MODULE_1___default.a |
| }; |
|
|
| }), |
|
|
| "./src/addons/addons/fps/userscript.js": |
| |
| |
| |
| |
| (function(module, __webpack_exports__, __webpack_require__) { |
|
|
| "use strict"; |
| __webpack_require__.r(__webpack_exports__); |
| __webpack_exports__["default"] = (async function (_ref) { |
| let { |
| addon, |
| console, |
| msg |
| } = _ref; |
| const { |
| vm |
| } = addon.tab.traps; |
| const { |
| runtime |
| } = vm; |
| if (!vm.editingTarget) { |
| await new Promise(resolve => runtime.once("PROJECT_LOADED", resolve)); |
| } |
| let fpsCounterElement = document.createElement("span"); |
| fpsCounterElement.className = "fps-counter"; |
| addon.tab.displayNoneWhileDisabled(fpsCounterElement); |
| let lastRender; |
| let lastFps; |
| let wasRunning = false; |
| const { |
| renderer |
| } = runtime; |
| const _draw = renderer.draw; |
| renderer.draw = function () { |
| _draw.call(this); |
| const now = runtime.currentMSecs; |
| |
| if (typeof lastRender !== "number" || now - lastRender > 500) { |
| lastRender = now; |
| lastFps = null; |
| return; |
| } |
| |
| if (now === lastRender) return; |
| |
| let smoothing = 0.9; |
| let calculatedFps = 1000 / (now - lastRender); |
| if (typeof lastFps !== "number") lastFps = calculatedFps; |
| |
| const fps = Math.round(lastFps * smoothing + calculatedFps * (1 - smoothing)); |
| lastRender = now; |
|
|
| |
| if (runtime.threads.length === 0) { |
| if (wasRunning) fpsCounterElement.classList.remove("show"); |
| wasRunning = false; |
| return; |
| } |
| if (!wasRunning) fpsCounterElement.classList.add("show"); |
| if (fps !== lastFps || !wasRunning) fpsCounterElement.innerText = "FPS: ".concat(lastFps = fps); |
| wasRunning = true; |
| }; |
| while (true) { |
| await addon.tab.waitForElement('[class*="controls_controls-container"]', { |
| markAsSeen: true, |
| reduxEvents: ["scratch-gui/mode/SET_PLAYER", "fontsLoaded/SET_FONTS_LOADED", "scratch-gui/locales/SELECT_LOCALE"] |
| }); |
| addon.tab.appendToSharedSpace({ |
| space: "afterStopButton", |
| element: fpsCounterElement, |
| order: 3 |
| }); |
| } |
| }); |
|
|
| }) |
|
|
| }]); |
| |