- // ==UserScript==
- // @name Global Debugger
- // @namespace https://greatest.deepsurf.us/en/scripts/450102-global-debugger
- // @version 1.0.1
- // @description Shows an FPS / Ping / Speed counter wherever you go!
- // @author HYDROFLAME521
- // @match *://*/*
- // @license CDDL-1.0
- // @icon https://c.tenor.com/je-huTL1vwgAAAAi/loading-buffering.gif
- // @grant none
- // @require https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.6.5/dat.gui.min.js
- // ==/UserScript==
- 'use strict';
- (function(window, e) {
- if ("object" === typeof exports && "undefined" !== typeof module) {
- module.exports = e();
- } else {
- if ("function" === typeof define && define.amd) {
- define(e);
- } else {
- window.Stats = e();
- }
- }
- })(this, function() {
- var init = function() {
- function addPanel(panel) {
- container.appendChild(panel.dom);
- return panel;
- }
- function showPanel(id) {
- var i = 0;
- for (; i < container.children.length; i++) {
- container.children[i].style.display = i === id ? "block" : "none";
- }
- p = id;
- }
- var p = 0;
- var container = document.createElement("div");
- container.style.cssText = "position:fixed;bottom:0;right:0;cursor:pointer;opacity:0.9;z-index:10000";
- container.addEventListener("click", function(event) {
- event.preventDefault();
- showPanel(++p % container.children.length);
- }, false);
- var beginTime = (performance || Date).now();
- var prevTime = beginTime;
- var value = 0;
- var fpsPanel = addPanel(new init.Panel("FPS", "#0ff", "#002"));
- var msPanel = addPanel(new init.Panel("PING", "#0f0", "#020"));
- if (self.performance && self.performance.memory) {
- var memPanel = addPanel(new init.Panel("MB", "#f08", "#201"));
- }
- showPanel(0);
- return {
- REVISION : 16,
- dom : container,
- addPanel : addPanel,
- showPanel : showPanel,
- begin : function() {
- beginTime = (performance || Date).now();
- },
- end : function() {
- value++;
- var time = (performance || Date).now();
- msPanel.update(time - beginTime, 200);
- if (time > prevTime + 1E3 && (fpsPanel.update(1E3 * value / (time - prevTime), 100), prevTime = time, value = 0, memPanel)) {
- var m = performance.memory;
- memPanel.update(m.usedJSHeapSize / 1048576, m.jsHeapSizeLimit / 1048576);
- }
- return time;
- },
- update : function() {
- beginTime = this.end();
- },
- domElement : container,
- setMode : showPanel
- };
- };
- init.Panel = function(label, container, position) {
- var t = Infinity;
- var val = 0;
- var round = Math.round;
- var r = round(window.devicePixelRatio || 1);
- var w = 80 * r;
- var h = 48 * r;
- var right = 3 * r;
- var padding = 2 * r;
- var x = 3 * r;
- var y = 15 * r;
- var width = 74 * r;
- var height = 30 * r;
- var elem = document.createElement("canvas");
- elem.width = w;
- elem.height = h;
- elem.style.cssText = "width:200px;height:120px";
- var context = elem.getContext("2d");
- context.font = "bold " + 11 * r + "px Helvetica,Arial,sans-serif";
- context.textBaseline = "top";
- context.fillStyle = position;
- context.fillRect(0, 0, w, h);
- context.fillStyle = container;
- context.fillText(label, right, padding);
- context.fillRect(x, y, width, height);
- context.fillStyle = position;
- context.globalAlpha = .9;
- context.fillRect(x, y, width, height);
- return {
- dom : elem,
- update : function(i, radius) {
- t = Math.min(t, i);
- val = Math.max(val, i);
- context.fillStyle = position;
- context.globalAlpha = 1;
- context.fillRect(0, 0, w, y);
- context.fillStyle = container;
- context.fillText(round(i) + " " + label + " (" + round(t) + "-" + round(val) + ")", right, padding);
- context.drawImage(elem, x + r, y, width - r, height, x, y, width - r, height);
- context.fillRect(x + width - r, y, r, height);
- context.fillStyle = position;
- context.globalAlpha = .9;
- context.fillRect(x + width - r, y, r, round((1 - i / radius) * height));
- }
- };
- };
- return init;
- });
-
- (function() {
- 'use strict';
-
- const stats = new Stats();
- const statsParentNode = document.body;
-
- statsParentNode.appendChild(stats.dom);
-
-
- requestAnimationFrame(function loop() {
- stats.update();
- requestAnimationFrame(loop);
- });
- })();