@melonjs/debug-plugin 14.5.2 → 14.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/@melonjs/debug-plugin.js +3 -560
- package/package.json +11 -8
- package/src/debugPanel.js +1 -3
- package/src/index.js +1 -1
package/README.md
CHANGED
|
@@ -46,5 +46,5 @@ Questions, need help ?
|
|
|
46
46
|
-------------------------------------------------------------------------------
|
|
47
47
|
If you need technical support, you can contact us through the following channels :
|
|
48
48
|
* Forums: with melonJS 2 we moved to a new discourse [forum](https://melonjs.discourse.group), but we can still also find the previous one [here](http://www.html5gamedevs.com/forum/32-melonjs/)
|
|
49
|
-
* Chat: come and chat with us on [discord](https://discord.gg/aur7JMk)
|
|
49
|
+
* Chat: come and chat with us on [discord](https://discord.gg/aur7JMk)
|
|
50
50
|
* we tried to keep our [wikipage](https://github.com/melonjs/melonJS/wiki) up-to-date with useful links, tutorials, and anything related melonJS.
|
|
@@ -1,569 +1,12 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS debug plugin - v14.
|
|
2
|
+
* melonJS debug plugin - v14.6.1
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* @melonjs/debug-plugin is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
6
6
|
* @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
class Counters {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.stats = [];
|
|
13
|
-
}
|
|
14
|
-
reset() {
|
|
15
|
-
Object.keys(this.stats).forEach((stat) => {
|
|
16
|
-
this.stats[stat] = 0;
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
inc(stat, value) {
|
|
20
|
-
this.stats[stat] += (value || 1);
|
|
21
|
-
}
|
|
22
|
-
get(stat) {
|
|
23
|
-
return this.stats[stat] || 0;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
var img = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAdhklEQVR42u1deXMUR5bnG8xH8EfgI+g/h405zCFzI3QLBJYDhgVjQBJICF1ugcVlHCtzXwZx2d6IAYqN9eA/20ji8hh6ltmxHeuI6fEV6zGI3Pxl9at+nZ1ZVdlqYSzqRWSoVZ2dnZWZnfXeL3/vvWnTEkkkTLp37Rz+9JOPBQpe7x18L0v/v/nmmha9Pq7R+yjHjx0Va9asmc7r8DZMJU67prq2vun3YLpuKryubUxQ8L1x6sXpd5zxKLXfVtE7QA3s3Llj+MKF4ayQ8vTpU3Fh+Hz285s31WuI/Fxm25bNrdQOXuPa/fv3BMp3330nHj16JA7u35devbpxDtX7+OMrgoTqUvnyy/tizeqmVt4/ahffi/ZQD3/1PvB2qY2dnfIeZL9xDW0PDPR7+r3pfaB+UF1dcB3voz8oH1+5LPQ6tvYfPfpv9ZlB2e8thn4X1i2+R3u7j4I2BgbeFU4LgDpAN/TBB4fUjV++fCl/fXxcjI8/CcrTp+Pq+sGDB1Tdxsb6lj17BtQkNTXUD62qr6+4dOlCULepsc5rbKybo7crr2fwHi9UT28Xfdi7d08abeOv3gfebmNDXaqpoa61oA+yX42NNWo3unTpYq7uuKivrxmqr6+uQIkzXmgDfaCxwHfodWztD+7Znfb781QcOLDf7/elfL8b6utl3foKlL2D8h7Hc/d44EDsuv19vW4LAAOHD9IN0YDW1axsHUj1Z/zJfyxS/X2ZC8PnxJMnv6p6dbUrvdra6irUvXjxQrBQ8Dn6PD5DE7B//15Pr4t20R4V1K2tWTlUW1v7UlG77PvwF+2jWPqQvnN7VLWJv2izvjo/wcPD54N7XrliWWspj8fxJ37fMSb6e7b2B98b8PA5XJe7gBoP+YsO6tbIflbLfqLs3p1Ko66/8Adj1+3u7nJbAP7AjfsTIBuhiVIdlp3El+E9dP7cR2fEk8f/UvX4jbnc8Ntvb/LwevC93V5fb3ema2eHkFu1OHb0sGr39u0x0dXV4blOFK97e2xE/PB9Vtzwromuzg6vZtmyAj3ko4/OBnWXLFpU0gJ48vhX8fjxL+L8ubNFA25rX/6ggvEYGEipezx//lxQd0z2e3T0CzE68oV4+OAvatx7enZl3nxzbQp1N23a4J08eSJrq4vrnXIsnW4EA6cmWU4sJuStt95M0Xu7dw8ECwDPvrNnTql6+H/JkvyNnTv3Uf6G2XV8hjqGtsL6Yapra9ckvC7aweSMjqSxoMWyZQsLFsC2bVvF9WvX1C/m1KkT4tRJVk6dFKdlWb9unVWZWrp0cRXG4fGv/yfOnj1VNOC29q9d/ZPqH9p/q6VF3ePZs/nFckaO75nTp8Tp0yfV3zNnTotFi94ouO/169d7uM7rXr92VdDCam9vc1sAGDh88PGvvxQM8oYN64ePHTuapQE9evRw9vq1PwU7QGdnR2b16tWq/r59g+Lhw4e0AuV1Xwnr7+9VK35sdFS0tbV61G5K/hL6+/u8hQsXBM97qotBw/th7eIvPi8fMR714ezZM8FAjshfxff//Ifq64OvvhQ93V1p/l20E42MjMi6t8TIrS/8MvKF/7+8jvdtY/bGGwta1WNLto8JMNUJa3/27JnBOJ+Wk0j6wrx580rajXp7uz161GLxOX0Yg4wJQudwY6aOKf0g98yjlYbrfX29apDmzp1b0dW1M011d2xvz8yb93or/uJ/+XpI1pmutzt//use6vG6Lu3yuoUD+XoaA877i++S7c2ZiFks22jB96MtGg/8suke6B5N8uqrr1ZQmTFjxkt0/cSJE4FixxeGi+za1eWRdbZ589vC9aaGcUP6AKEz7W2tvgYuB1X+gjMnjh8TvrY5LubMmunNnv1aVb7+a1W4FiwY/BJvydU+a9bQrFmzKmztBpaFQ7umuif5QMrvxPfw/kK6d+3y4owJsAtgGDqWwb+DW0bUfikTOGPGK61UsDhKWQCvvPJKFbWB104fppvCjeg3sHz58lRnZ6eHgtdNTY0e/W/6Ilyj91E2btzgvfzyy9OLn6FLhzZu/DdBhX8mTrumuqa+8Wt0D3HGZO3aVRXXr19TeIAn/+J/3/qoyfB+64X3h+MrLWubh2hBhQFev4lETeqLJo2NjdNXNTbIxV7vUWlurn3JtR0O8OzZM5C9efPPBUDTagZ4xUUNTcioDYl0qeeEFlKHcM0E9UZtqeWAQ+PA1mHwcJjU1dW0Kr0hpzvcvXtXEEjk0s8ADMrhHQCBCBBCIawjCpVcrSGjajzltTAk0oSgHj1yWEROLt+q+ORekV9Cz72mpgbVoQ+H/l38+c+fCaBQjXV1VuUKMDDgYHSCOs3hWlc41GpGpt4tgkNN8HCUVFevqNo98G468/ArtQju3rktqquXV1B7P//8s8hDwePiu+/+1wjxFmAYVcu86hVLjbsrRw0b6moy9XW1Hi91ddUFyCgQTiCmHIlU12QhpBMCQI/0lH17BxWCarxhTG4AzcrHwb17d1Rn7t+/L1at8j/EsYIVOUBm8eLKip6e7jSu6bZqvsN1c9BZE5SMDnM0MuhDDkq2Qb426e/rCSBqaVIKA+zs0UCZBkzTfSpGpbnmI4ljAv/TZN27dw/wbposo4sXhoUJ4s2DQY9DwSYAXH29PRkyt3184RcGuC0fql2ypAAZ5VYZYSe4d0Jha2pqpu9Bn3J19ueQxBAEbVw1WCVX6tgY3fjt4MYBPFAH31iQNxVJ+zRpr9QJK5Sc66wO4xJsi7Jn90Bah5JtIm39YCB6enYJV9iZy+LFiytgFqPe7bFRwcfqjtwR8IumyQI6akI8YZbSdy+IsO+bm1elBlIpD0hhKleOHzuSVRiK/P4d7e0FKCoWDCGR/3njugCqikK7zKFDB8Vf/5pR/e/tKQT3igSTSyu1csECb+RWWvjgzYiorKxUE7tqVZPX1dWlymuvvRZLUaROYFAIYYwDJQPGRRkbvaUgTtTFDYfehBRAyjQJXTs7hd4u+oCJek+WUyePZ3XYmQvuGzgCTQCHeG+PjYnFixZ5hDYCjTNBvPKvICAozDxsb2vLnj51SqGDUaghCQC7MCSyo2O7uHHDUwsA6K20UOxHxNrkpjZt2qheb9q0yZs5c+b0UhVHDs2ePXtadQTQLEHJH8nFQB0z1UXxvGtFdW2yY0d78MvesWO7cIWoAeIAeEIB4KMWgHx/VP4QODg2OjoqFsyf69GOgsnqY0gcAVM24KcYAqeFEo0auiCRqVRfsEsBNZ1084lMDtLAFcIofz0YQP9mvhDffP0/wQ7A4WEO43I00gQP26DktrZtgurKdoVru3Ih5Pp6S9ySE/DDD9+Lq/JX+M47b3t8svBYmTVrpkeTBeXTh32jIeRyCVBHjkSa6mAh0mNb/jgyWNSxETBXm5FMDk6koF8TLydPHg+26VLhYVvdrVvfEXk8fItwbVfufOL48WOqHDvmF1wzwbkAt/gvnP9PwJcLQ8lmZttMWOwKpFgD7TTNCSGodJ8A/EInEEQQMtfA/MH/KJzNY9b061ukspbRSRcm4dAs39oKINYIyNcFSnaFncsp3ATltvwHHxwMcHsi35jqkumtf15HRmG5hUHEkfV01k2YuaYLNHVo9ibShQvq6AKxukLJrrBzKeBRDPs+GMMD0prRTUYOGlFdmJdUj3++7KKZYFlMJiYVDBxVqquNO0C1NBE//eSKMoNMpIvfq5QCHkURVGwkGVg3xXWXD2FsQTQhPYU+P9HHyjTbufWZUyeznEkDZc03x0aNTJwlSxa2kLa+Y7uZgBAFm0axdE16iAsU64qvm0Epf/cLELgAQKqLPFaOwwqSuogauw1/XO+dOC5NU2lZgOED5fJrOQcPpBnc29uTXrx4cZW+OIE64nGCIhdQVn+sAPr929989DUSSd2w4Y8eTC1MKiYf5prNBAMBA2QQaPVtbVutz5/Dhz9UaCKQs3v37gogjH65qwreI/Nk+/a24fPnzmWx2u/evSN+/PF78dln/6UUNA7U4KagaHJWLtjHdI3/Yom9G8XKjdgRh+gxxxG3KFAqDitIJ2/A1gcbibR7LIL39uwWlVJ5Nj1WCA3k5xb8sQIkFRAwPdYP5q4bJj9vVnV3d6XBoAHzBwwg3VyDKSFt7EyOdDEURoBwEZ8W5aORCxe+kR4BXiAHAd8NyDnALHIQsc7KpWvNbLHguanj6u/292b1gYriFqJw8zUOKBWXddTSslbo2v1IbgeAeVkEG1ctGwYKKUuGw8boo7yWVu+xHRsLlRYUUFWgs0WdjGL+8ImGtj4qO66TPMIRRoZb50AgbHX4PtoBOCmCkxv8YgZRwli50EfkAKZt+DqHbONwC4G4ffPN39UOGcVNnIjgXrl5qb+/f/8+hUQCX8n37RdFfwNyy2FjtavIhQoEFHUePvxKHHr/oDDYizNbgyInFiAIzDW6xicaWryN5FF8rFqX2bRpk/DLRq3415cvXz5U6mCFsXIxUJmMzyXc1dWZ0fF1DtkW70bxuYV0JI5TVK672LyRJir8fMH2WCFcA4JHNxYtFjAe6YSQWgUTiwkOsy2fB5koK1cfKNuOGMUthFIGPaO5uckjrAH2u8nWL1WDb1m7ZtgEG3McxYZEThocHIdp4uLD5qqxT5SVGwbZunALg+NhqV/w42GTrW8zL7FA6LoODOHza5pXCR2J1M8XTEgk6Wv0KANz2IlNY8L3daZJGCNF18KhrdOvQvfTkwOc1TV2ok5xE2YirNyJUORs3MI4x8Nk6xe4dTFwDQukyAWMeWs1NdaLUu4jv5AjEE8+Adw30ITvB0wT5kpm8o3zbWffh45IITY/PdwsJht1A1ub/AQb6oc5GaRcrNwoilpciXM8TLZ+HLcuuWVnyBSlX25dbbUo10K2Ah+YgMaGOmWHw14Mw/eVX17tSi9MCw9MsYaGP9TWrmzhfnrw2+PoIm4Wtj8IIpy0oerK7+F2tytkHEVRM2EILmATdA06y6e+41FjsvVd3Lo4A2tl1XIxqQpVkQOmXJ1R+D5szTAtnNcjdBF18VdHF4NtFG2qLf14Fj59OdvWCzPZXMTKp9O8ku38RDOI5GLrx3Xr8r21Hqsxkwrv5C4A7qwJHDoOvh/FSOH1oggeuFkwc5Yu9bdR7/pVhUSS3a37FZp+oaSIhr0Xl0/n4trtvi03tML66O1F6VblyOEPs0Q8Wb9+XcBjoB1g4cLKyV0ANnyfbEgTGydKC3fx/8PNAsCQ9TwijlABMZMjkbqGTL9OojwTVIxrgZIq67vw6Vw8nV3PO3ZJ64HMRdJhSAGcJS0O0uyVvT/uI6Pz58+d/AWg4/sbNqwbPnBgXxYTwCcrrhbuSvDAApA3WsUoWZ5Nsw8Oa0BRlxoywcAmqBh1UN9l93Jx7T7Cziaw6H766cccM9mfVF2Blmba8IwZr4p8MbuFQdmlPsyZPWtyF4AJ3wdzB88y+X+WT1ZcLbycpA1dsw+2cjkZYRoygTewy112Lxub18T7yzt61LaAKg4fAn44g0dIY03NdPdHRV6Dx6KZ1AVgwvdtTqAuWvhkkTaIxo5JDNOQFfYv6wyfL7RSovh0rmgbOPvQnYoOZ3Ln+mHg2ITctcolJnz/efYX9A9rxilIxZANKsYW7yucZ4ULn84FbYPg8IUfzkCrl9q81H0Kg1LIXVbFWwBySDsdPKugJzU2NrYcOnTQ27x5c+u0511cYNuJOD3alCn/sMZfAJzpW7TN504eYXaVwqeLI+D005kDxwFMkUbI3K2qWpbmuwUwAXktUy5ztyyTatuaosKU2UKakUbOfQNtYeZ4ODiCg7kyRc9oOpjJKaUtupJKJh4mYrLGLYrTzx8X8KhSZf78qsrK+UPqkIkdj8MpB+8988nXJ/Wnn35SrGBovc3NzS/Z6VK+Dx/gWmklZMPCtrmEmePh4HghNJJj3DrlOey9ch50TVTgcEMOOK4eV2WXwvh69WnAsr5b9B2he5RSaDZZUvgbRpfSEUY/pNvK4b6+nmxUXcDNYK+QjyAKUcP0gxm+lYe9F1cACdPuc+TIh2LaVJew+Ho2mjdBvGF0KY4wEsjy/sH9Rn8/E/iCukRMtfnwlVvUwZXc2fhh1JRfACZWsC2+HrFMgA7GpUtxhJFDvFFh5oBGEnTM4WCXwBSuiuj+3Dl+nIOuKSM7d3Zkb9y4EThmEisY8fVgZnEoWA8dB5oUFJ7Lly8GnsQmjZzDu6a6UWHmOBoJuPfzz28WxSB2U1rNBzs+hy4PFYcddE0Z4Rw44PGYICwCTO6O7e1ZjsXrBNK2tm1ZijAmte9UDrotmBT8T3Xydee9pNWJHQ4uoDvngj6EcfRt0TfC2MFxD7qmjOgcOEyQ5sSpJqMICjbAtqZQbAp40ULHmRjFYeHg9HYDToI0n6x0Z023iMsOjkM3m1IShcXzwY+CglEA69qAl7DQcea69nahWA6k+tI40YPCaGqPH+xwdvD29jahyvZ2sbqpacjloGtKio7FR03q8yII5bJf6g9QMEuJCcx95icjCOQLI2GOiK5ZROJk+9BlcHCP8mZyjQnMJ7UcdLPftYQhYFHoWJ6kMV7gy67Du3GyiNgo02GZMKBE7tzZmY4TEzhu6JYXSqKCCq4OAhP6jg8mbZsYLOTLboJ3Y2URYZRpEFT10G92XcZXIl1iAifCJ8oQVBBEB3KyhMZNBAtcQyGyA3Na9KpXrJhjg3fjZBGxhYmj0G9hQkqkLSZwuYI/TEko2GfY5NOyFJlROXCETCgeuAC+eDjWxLOVaFQu3LqoMHE89NtEpFzBH6aUFDBstGAQCFwA/htMKLKhr1+/qk4KEdiQAhcQiRFtEI0qKvSbLTOIrW6kY2MIBEwKZKmRQ6e0aAwb468CkxpNo/K1bNKsdS9bKkAYSwnnRnXjikmBLDVy6JQWH4d/oAaB4/A6WBQWuMCkWWsI4xAxfklbt4VzI9QRUpgKZYuw6zE4xSv8NZNnE1cgS40cOqWFcPiwoIJRgQtMctKSCqVbpTfxwZV3culNXOrqosck1n/VXIEsR3KrKQoHOwQVjCk2YinPQkIIo0tdXfSYxPqvmiuQLpFDXzixkSXLlYhhcnWY8F81KZBxHjW2wBEvrICuTIOD10qbvnQpODhqCAkkabPByxk0wkWBjPOoeeFApLBf84oVy1p6FUHiXwoHILsdUb3IedGWLCLMBjcFgoiT3NnEPo7jhkYKZJxHTdzEUlNGwgIK+pG+xtXkc9pyKanObFlBIusy/z9TBpE4x9nvuObSe5FEDygI8wnwsHqvhEQRUYijDvdSQTAJU13u/4fUJ6ZgjVHH2Yg9mMx0iBDDxuZQOZHHiAlW5nCvKSRtYcKlvP+fCUZOpEyCCdAdKuOGS6HHSFiGLxvcq16HsoQXp4n0YYKR40DBUQpnItN8MqTuUInIkvBnu3171I9EOXorF5FyRCWVogxieaJm8WMkSls3iY2oaso2YpIoJZKHZEtkGgWI2KG0fUSo3rt30Flp4o8Rxam/cL7AscRmg5vEhahqVCJ5SLb6+qF6uUBRkONQD8n2woseUBBY/VwWoTpsa9W3USJqPnjwpfj226/Ff3z6qSAf+ZMOWbJtmj0YxXNmz8xE2esuIdleeIkdUDAn2DrJy1ffRpUXkHxWK+cS+bg4sH+fAHEzzAa3CbfNOaNYmp2pKHvdJSTbCy+uE4Otk36RfBsteIx89SWUwd90gOOGZEvEUeSW2lpdvdJDqcmFVuOPEQxw1GMkLjxsSzDNAyjbHklxQ7IlYhjEMLu+o2OHh+0UFgFe6893l0xcLkmjC+hcLICyKWk0JG5ItkSm5QM7Y3CQfwa57hHyzJS+HMelFNkilUp5pTxGouBhE+Srw8PUhilpNCRuSLYXXhTzt752GM6TPA8NQp4h9BlCnVEK83Xr1g0fOeKnkgE7aOvWLRMypbTYBK1hkK8NHjYljU7EQVwcKE/QVi8nAduoKbewy7FvqcxhDg+bkkYn4iB55m9XhuehgSaPlGVg/yK9OerG2UZdjn3jJI1GRjO9Lg+gbEoanYirybTurWEKeY5Q59jev/n670UOlBN5rkdBvqY4wRwyLoSH8wGUTUmjE3EU7kCJ19Csw9KXQ3jSBe7w6XLsa2MOU+GBJAqJH3NFWNLoRBxFj4IZ5UCpJ124fv2aWLtqVYX+rI469i0HPPwsEkEnwoRSwNAEXL50UTF26Jftcuzraj66JoJOxEFsYVo5EEQcfLIY4OjJzTf9WR117JvIcyJhYVq5E2XAwVdx/rqNKVRtJM1yQMITDSSRiHFLDw/TyvPxdnRsFzdueGoBYFvXM4noz/W4gaTiJoWeaCCJRCLQOKm1Z3TNnWvtvtnV6sFEA1CEBNOIHcjfLyWQVNyk0IVhbetSvkdvfYtLIIlEQpDAKK0dgmhZMNkIMkbwJWzxlZWVfyhHf8KidJrC2qKeayCJRJjEQeP0rR5x/ijRNAYdGUdMsf9c8wVAwqJ06osVYW1BPil3IIkXSkp1mKRE07bYf3G8e9rbt7UULwB7lE5bavd83P0EDnYWlwxfJUPCzLvHdnwbLICQKJ18sVKsYs4WTuDgEsQFYbOZa6bYf6Ue34ZFItFjFYN5xNnCCRxcosRF2EwnfbbYf6Ue34YldDIxj7CA29QCTvwAJ11M27ot9p/mtx+YfVHROMIyfUwkkEQiJaJwHF0zbeu22H9JNI7fiUQRM7kblYvT5mQolwkUPNnbekQmMJdtfTKOb/liJcbwzk5pbg6fzyY+fyUKywTWSvAvzwTGo4eatnUkmgYkbHLaLPfxrZ6KDk6oXAfhizWREgR+fJ9+ciVA1wZS76Yp45dtW9ecNocmM7ECFulAqj9jCwmnh7pNxEEouxdPGkV+fSYzTHfa5MmnXcUEGdsygwWJnYjB/PgX42JNxFHi5MrhZtjWrVuCU7/m5tWiVE8bE2RswxYg4WnrFiYRwEsVlVY95xiCbf23VEILsAUWhs6Uto5DwZ2dHRk4qSazWYLw7F4mFE43w7iD5kTMNROLWKWapVJdPcekg9ig4CTQY4kSJ626zUEzjrmG6ybmjp65NC6L2AYFJ9lCntV2zRw045hrYcwdeP/guR7FR0gCPU6SxNXCg+wiyuSqti4AU1x+G3MHz3VAwv39fR7P+JVAxs9IbMSNz2/ejH3Cp4vJ4dTG3HGFjE36RZILqGzbel0GZEvuo8+1cMougl81d9DURaeZYfJtzB1XyNjEDP74yuUkF1Cpom/X2KZ5xi7u+GFz0NQlKs6fztxxgYxNKeZgNpJu0RQzenkiOeFaOH6d2KahhSMnrxUKHi900NTz62pOnyk4epaLucP1EDIboV9Qu7qnUiKROkBHFpFBSQun7ZrQNa6Fx82va3L6DGPuuOAGutk4NnZLfCv7mnn4IIGDSxFs12PS3q6srKxAwXatZ/ciLTxufl1X5k4cjx9+zEtmIzGIEQfQdHaRSAzBdo0FgJM8bNfQxFHa2rZlnxW6Fid1rH7MG+fsIpGYEHAprOCordolBqAOByN3n/JEZrgBzw8AUWcXIQziRBykFFawjZFDEK9LDEDd46ers8N7/+D+AtxAzw+gzi7Gw88uEpnErdrGyCGI1yUGoO91fCMAjrzrVxUngXADHiyKJM7ZRSITgIKjtuqoJI2mGIBh27ryOh4dCZBDlO//+Y+iYFGJPCMoOGqr5owcHlOQIF5TDMCwbT3wOs5xEtA+opUhShkPFuWafi4RJw08fKs2QbzYqk1Zvk1ex6jL8QV9W+dex3iu4zmvM414MAnOIMJ3JczgCULBPDiEaas2QbyDg3uEKUmjHgMQ2zmFku/p7krzkz8u5HVse67zYBIUsCphBpcJCuaEDNNWbYJ4UUxZvvW0L9jOKSsZ6gJrkJ+dU2q/EbmktnZlC4JEJMzgCUoYIYM7e5ScEVxu66iPbd0UK6iU5zr0CgoSkTCDy74gzM4eE80Izq9x9k4+O9mYSvHCM5SBFobrwAbo+3RmsI3GnkhMwVbMT/WepbOH++IsZgZDD0lmcUI4QD67RrmcPSZLdGYwziw4kyh3LD0nmVUHsWXo0uP+PA9SShzCRKaQlBKHMJFEEjHI/wOfNIUgGtbuFQAAAC10RVh0U29mdHdhcmUAYnkuYmxvb2RkeS5jcnlwdG8uaW1hZ2UuUE5HMjRFbmNvZGVyqAZ/7gAAAABJRU5ErkJggg==";
|
|
28
|
-
|
|
29
|
-
var fontDataSource = "info face=PressStart2P size=10 bold=0 italic=0 charset= unicode= stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=0,0 outline=0\ncommon lineHeight=10 base=10 scaleW=128 scaleH=128 pages=1 packed=0\npage id=0 file=\"PressStart2P.png\"\nchars count=95\nchar id=32 x=1 y=1 width=0 height=0 xoffset=0 yoffset=10 xadvance=10 page=0 chnl=15\nchar id=33 x=1 y=2 width=5 height=10 xoffset=3 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=34 x=1 y=13 width=8 height=5 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=35 x=7 y=1 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=36 x=1 y=19 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=37 x=1 y=30 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=38 x=1 y=41 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=39 x=10 y=12 width=4 height=5 xoffset=3 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=40 x=1 y=52 width=6 height=10 xoffset=3 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=41 x=1 y=63 width=6 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=42 x=1 y=74 width=10 height=8 xoffset=0 yoffset=1 xadvance=10 page=0 chnl=15\nchar id=43 x=8 y=52 width=9 height=8 xoffset=1 yoffset=1 xadvance=10 page=0 chnl=15\nchar id=44 x=8 y=61 width=5 height=5 xoffset=1 yoffset=6 xadvance=10 page=0 chnl=15\nchar id=45 x=8 y=67 width=9 height=2 xoffset=1 yoffset=4 xadvance=10 page=0 chnl=15\nchar id=46 x=14 y=61 width=4 height=4 xoffset=3 yoffset=6 xadvance=10 page=0 chnl=15\nchar id=47 x=12 y=18 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=48 x=18 y=1 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=49 x=12 y=29 width=9 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=50 x=12 y=40 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=51 x=22 y=29 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=52 x=23 y=12 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=53 x=29 y=1 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=54 x=1 y=83 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=55 x=1 y=94 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=56 x=1 y=105 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=57 x=1 y=116 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=58 x=18 y=51 width=4 height=8 xoffset=3 yoffset=1 xadvance=10 page=0 chnl=15\nchar id=59 x=12 y=70 width=5 height=9 xoffset=1 yoffset=1 xadvance=10 page=0 chnl=15\nchar id=60 x=12 y=80 width=8 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=61 x=23 y=23 width=10 height=5 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=62 x=18 y=66 width=8 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=63 x=23 y=40 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=64 x=33 y=29 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=65 x=23 y=51 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=66 x=34 y=12 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=67 x=40 y=1 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=68 x=12 y=91 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=69 x=21 y=77 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=70 x=27 y=62 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=71 x=34 y=40 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=72 x=34 y=51 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=73 x=44 y=23 width=9 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=74 x=45 y=12 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=75 x=51 y=1 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=76 x=12 y=102 width=9 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=77 x=12 y=113 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=78 x=22 y=102 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=79 x=23 y=88 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=80 x=32 y=73 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=81 x=38 y=62 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=82 x=23 y=113 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=83 x=33 y=99 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=84 x=34 y=84 width=9 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=85 x=43 y=73 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=86 x=34 y=110 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=87 x=44 y=84 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=88 x=44 y=95 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=89 x=45 y=106 width=9 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=90 x=45 y=117 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=91 x=45 y=34 width=6 height=10 xoffset=3 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=92 x=45 y=45 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=93 x=52 y=34 width=6 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=94 x=34 y=23 width=8 height=4 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=95 x=34 y=121 width=10 height=2 xoffset=0 yoffset=9 xadvance=10 page=0 chnl=15\nchar id=96 x=15 y=12 width=4 height=4 xoffset=4 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=97 x=54 y=23 width=10 height=7 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=98 x=56 y=12 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=99 x=62 y=1 width=10 height=7 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=100 x=49 y=56 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=101 x=56 y=45 width=10 height=8 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=102 x=59 y=31 width=9 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=103 x=54 y=67 width=10 height=9 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=104 x=60 y=54 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=105 x=67 y=42 width=9 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=106 x=67 y=9 width=8 height=11 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=107 x=69 y=21 width=10 height=10 xoffset=0 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=108 x=76 y=1 width=9 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=109 x=76 y=12 width=10 height=8 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=110 x=69 y=32 width=10 height=8 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=111 x=86 y=1 width=10 height=8 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=112 x=97 y=1 width=10 height=9 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=113 x=108 y=1 width=10 height=9 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=114 x=87 y=10 width=9 height=8 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=115 x=97 y=11 width=10 height=7 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=116 x=108 y=11 width=9 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=117 x=87 y=19 width=10 height=7 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=118 x=98 y=19 width=9 height=8 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=119 x=80 y=27 width=10 height=7 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=120 x=108 y=22 width=10 height=8 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=121 x=91 y=28 width=10 height=9 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=122 x=80 y=35 width=10 height=7 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=123 x=118 y=11 width=6 height=10 xoffset=3 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=124 x=102 y=28 width=4 height=10 xoffset=4 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=125 x=119 y=22 width=6 height=10 xoffset=1 yoffset=0 xadvance=10 page=0 chnl=15\nchar id=126 x=91 y=38 width=10 height=5 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\nchar id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15\n";
|
|
30
|
-
|
|
31
|
-
const DEBUG_HEIGHT = 50;
|
|
32
|
-
|
|
33
|
-
class DebugPanel extends Renderable {
|
|
34
|
-
constructor(debugToggle = input.KEY.S) {
|
|
35
|
-
// call the super constructor
|
|
36
|
-
super(0, 0, video.renderer.getWidth(), DEBUG_HEIGHT );
|
|
37
|
-
|
|
38
|
-
// enable collision and event detection
|
|
39
|
-
this.isKinematic = false;
|
|
40
|
-
|
|
41
|
-
// to hold the debug CheckBox
|
|
42
|
-
// zone and status
|
|
43
|
-
this.checkbox = {};
|
|
44
|
-
|
|
45
|
-
// Useful counters
|
|
46
|
-
this.counters = new Counters([
|
|
47
|
-
"shapes",
|
|
48
|
-
"sprites",
|
|
49
|
-
"velocity",
|
|
50
|
-
"bounds",
|
|
51
|
-
"children"
|
|
52
|
-
]);
|
|
53
|
-
|
|
54
|
-
// for z ordering
|
|
55
|
-
// make it ridiculously high
|
|
56
|
-
this.pos.z = Infinity;
|
|
57
|
-
|
|
58
|
-
// visibility flag
|
|
59
|
-
this.visible = false;
|
|
60
|
-
|
|
61
|
-
// frame update time in ms
|
|
62
|
-
this.frameUpdateTime = 0;
|
|
63
|
-
|
|
64
|
-
// frame draw time in ms
|
|
65
|
-
this.frameDrawTime = 0;
|
|
66
|
-
|
|
67
|
-
// set the object GUID value
|
|
68
|
-
this.GUID = "debug-" + utils.createGUID();
|
|
69
|
-
|
|
70
|
-
// set the object entity name
|
|
71
|
-
this.name = "debugPanel";
|
|
72
|
-
|
|
73
|
-
// the debug panel version
|
|
74
|
-
this.version = "14.5.2";
|
|
75
|
-
|
|
76
|
-
// persistent
|
|
77
|
-
this.isPersistent = true;
|
|
78
|
-
|
|
79
|
-
// a floating object
|
|
80
|
-
this.floating = true;
|
|
81
|
-
|
|
82
|
-
// renderable
|
|
83
|
-
this.isRenderable = true;
|
|
84
|
-
|
|
85
|
-
// always update, even when not visible
|
|
86
|
-
this.alwaysUpdate = true;
|
|
87
|
-
|
|
88
|
-
// WebGL/Canvas compatibility
|
|
89
|
-
this.canvas = video.createCanvas(this.width, this.height, true);
|
|
90
|
-
|
|
91
|
-
// create a default font, with fixed char width
|
|
92
|
-
this.font_size = 10;
|
|
93
|
-
this.mod = 2;
|
|
94
|
-
if (this.width < 500) {
|
|
95
|
-
this.font_size = 7;
|
|
96
|
-
this.mod = this.mod * (this.font_size / 10);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// create the bitmapfont
|
|
100
|
-
var fontImage = new Image();
|
|
101
|
-
fontImage.src = img;
|
|
102
|
-
|
|
103
|
-
this.font = new BitmapText(0, 0, {
|
|
104
|
-
fontData: fontDataSource,
|
|
105
|
-
font: fontImage
|
|
106
|
-
});
|
|
107
|
-
this.font.name = "debugPanelFont";
|
|
108
|
-
|
|
109
|
-
// clickable areas
|
|
110
|
-
var hash = utils.getUriFragment();
|
|
111
|
-
var size = 10 * this.mod;
|
|
112
|
-
this.checkbox.renderHitBox = new Rect(250, 2, size, size);
|
|
113
|
-
this.checkbox.renderHitBox.selected = hash.hitbox || false;
|
|
114
|
-
this.checkbox.renderVelocity = new Rect(250, 17, size, size);
|
|
115
|
-
this.checkbox.renderVelocity.selected = hash.velocity || false;
|
|
116
|
-
this.checkbox.renderQuadTree = new Rect(410, 2, size, size);
|
|
117
|
-
this.checkbox.renderVelocity.selected = hash.quadtree || false;
|
|
118
|
-
|
|
119
|
-
// add some keyboard shortcuts
|
|
120
|
-
this.debugToggle = debugToggle;
|
|
121
|
-
this.keyHandler = event.on(event.KEYDOWN, (action, keyCode) => {
|
|
122
|
-
if (keyCode === this.debugToggle) {
|
|
123
|
-
plugins.debugPanel.toggle();
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
// some internal string/length
|
|
128
|
-
this.help_str = "["+String.fromCharCode(32 + this.debugToggle)+"]show/hide";
|
|
129
|
-
this.help_str_len = this.font.measureText(this.help_str).width;
|
|
130
|
-
this.fps_str_len = this.font.measureText("00/00 fps").width;
|
|
131
|
-
this.memoryPositionX = 325 * this.mod;
|
|
132
|
-
|
|
133
|
-
// resize the panel if the browser is resized
|
|
134
|
-
event.on(event.CANVAS_ONRESIZE, (w) => {
|
|
135
|
-
this.resize(w, DEBUG_HEIGHT);
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
// few variables to keep track of time
|
|
139
|
-
this.frameUpdateStartTime = 0;
|
|
140
|
-
this.frameDrawStartTime = 0;
|
|
141
|
-
this.frameUpdateTime = 0;
|
|
142
|
-
this.frameDrawTime = 0;
|
|
143
|
-
|
|
144
|
-
event.on(event.GAME_BEFORE_UPDATE, (time) => {
|
|
145
|
-
this.frameUpdateStartTime = time;
|
|
146
|
-
});
|
|
147
|
-
event.on(event.GAME_AFTER_UPDATE, (time) => {
|
|
148
|
-
this.frameUpdateTime = time - this.frameUpdateStartTime;
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
event.on(event.GAME_BEFORE_DRAW, (time) => {
|
|
152
|
-
this.frameDrawStartTime = time;
|
|
153
|
-
this.counters.reset();
|
|
154
|
-
});
|
|
155
|
-
event.on(event.GAME_AFTER_DRAW, (time) => {
|
|
156
|
-
this.frameDrawTime = time - this.frameDrawStartTime;
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
this.anchorPoint.set(0, 0);
|
|
161
|
-
|
|
162
|
-
//patch patch patch !
|
|
163
|
-
this.patchSystemFn();
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* patch system fn to draw debug information
|
|
168
|
-
*/
|
|
169
|
-
patchSystemFn() {
|
|
170
|
-
var _this = this;
|
|
171
|
-
|
|
172
|
-
// patch renderable.js
|
|
173
|
-
plugin.patch(Renderable, "postDraw", function (renderer) {
|
|
174
|
-
|
|
175
|
-
// call the original Renderable.postDraw function
|
|
176
|
-
this._patched.apply(this, arguments);
|
|
177
|
-
|
|
178
|
-
// increment the sprites counter
|
|
179
|
-
if (typeof this.image !== "undefined") {
|
|
180
|
-
_this.counters.inc("sprites");
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
// increment the bound counter
|
|
184
|
-
_this.counters.inc("bounds");
|
|
185
|
-
|
|
186
|
-
// increment the children counter
|
|
187
|
-
if (this instanceof Container) {
|
|
188
|
-
_this.counters.inc("children");
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
// don't do anything else if the panel is hidden
|
|
192
|
-
if (_this.visible) {
|
|
193
|
-
|
|
194
|
-
// omit following object as they are patched later through different methods
|
|
195
|
-
// XXX TODO: make this patched method more generic at Renderable level
|
|
196
|
-
if (!(this instanceof Entity) && !(this.ancestor instanceof Entity) && !(this instanceof Text) &&
|
|
197
|
-
!(this instanceof BitmapText) && !(this instanceof Camera2d)
|
|
198
|
-
&& !(this instanceof ImageLayer)) {
|
|
199
|
-
|
|
200
|
-
// draw the renderable bounding box
|
|
201
|
-
if (_this.checkbox.renderHitBox.selected && this.getBounds().isFinite()) {
|
|
202
|
-
|
|
203
|
-
if (typeof this.ancestor !== "undefined") {
|
|
204
|
-
renderer.save();
|
|
205
|
-
if (!this.floating) {
|
|
206
|
-
var absolutePosition = this.ancestor.getAbsolutePosition();
|
|
207
|
-
renderer.translate(
|
|
208
|
-
-absolutePosition.x,
|
|
209
|
-
-absolutePosition.y
|
|
210
|
-
);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
var bounds = this.getBounds();
|
|
215
|
-
|
|
216
|
-
renderer.setColor("green");
|
|
217
|
-
renderer.stroke(bounds);
|
|
218
|
-
|
|
219
|
-
// the sprite mask if defined
|
|
220
|
-
if (typeof this.mask !== "undefined") {
|
|
221
|
-
renderer.setColor("orange");
|
|
222
|
-
renderer.stroke(this.mask);
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
if (typeof this.body !== "undefined") {
|
|
226
|
-
renderer.translate(bounds.x, bounds.y);
|
|
227
|
-
|
|
228
|
-
renderer.setColor("orange");
|
|
229
|
-
renderer.stroke(this.body.getBounds());
|
|
230
|
-
|
|
231
|
-
// draw all defined shapes
|
|
232
|
-
renderer.setColor("red");
|
|
233
|
-
for (var i = this.body.shapes.length, shape; i--, (shape = this.body.shapes[i]);) {
|
|
234
|
-
renderer.stroke(shape);
|
|
235
|
-
_this.counters.inc("shapes");
|
|
236
|
-
}
|
|
237
|
-
renderer.translate(-bounds.x, -bounds.y);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
if (typeof this.ancestor !== "undefined") {
|
|
241
|
-
renderer.restore();
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
|
|
248
|
-
plugin.patch(BitmapText, "draw", function (renderer) {
|
|
249
|
-
// call the original Sprite.draw function
|
|
250
|
-
this._patched.apply(this, arguments);
|
|
251
|
-
|
|
252
|
-
// draw the font rectangle
|
|
253
|
-
if (_this.visible && _this.checkbox.renderHitBox.selected && this.name !== "debugPanelFont") {
|
|
254
|
-
var bounds = this.getBounds();
|
|
255
|
-
|
|
256
|
-
if (typeof this.ancestor !== "undefined") {
|
|
257
|
-
var ax = this.anchorPoint.x * bounds.width,
|
|
258
|
-
ay = this.anchorPoint.y * bounds.height;
|
|
259
|
-
// translate back as the bounds position
|
|
260
|
-
// is already adjusted to the anchor Point
|
|
261
|
-
renderer.save();
|
|
262
|
-
renderer.translate(ax, ay);
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
renderer.setColor("green");
|
|
266
|
-
renderer.stroke(bounds);
|
|
267
|
-
|
|
268
|
-
if (typeof this.ancestor !== "undefined") {
|
|
269
|
-
renderer.restore();
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
});
|
|
273
|
-
|
|
274
|
-
// patch text.js
|
|
275
|
-
plugin.patch(Text, "draw", function (renderer) {
|
|
276
|
-
// call the original Text.draw function
|
|
277
|
-
this._patched.apply(this, arguments);
|
|
278
|
-
|
|
279
|
-
if (_this.visible && _this.checkbox.renderHitBox.selected) {
|
|
280
|
-
var bounds = this.getBounds();
|
|
281
|
-
|
|
282
|
-
if (typeof this.ancestor !== "undefined") {
|
|
283
|
-
renderer.save();
|
|
284
|
-
|
|
285
|
-
// if this object of this renderable parent is not the root container
|
|
286
|
-
if (!this.root && !this.ancestor.root && this.ancestor.isFloating) {
|
|
287
|
-
var absolutePosition = this.ancestor.getAbsolutePosition();
|
|
288
|
-
renderer.translate(
|
|
289
|
-
-absolutePosition.x,
|
|
290
|
-
-absolutePosition.y
|
|
291
|
-
);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
renderer.setColor("green");
|
|
296
|
-
renderer.stroke(bounds);
|
|
297
|
-
|
|
298
|
-
if (typeof this.ancestor !== "undefined") {
|
|
299
|
-
renderer.restore();
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
});
|
|
303
|
-
|
|
304
|
-
// patch entities.js
|
|
305
|
-
plugin.patch(Entity, "postDraw", function (renderer) {
|
|
306
|
-
// don't do anything else if the panel is hidden
|
|
307
|
-
if (_this.visible) {
|
|
308
|
-
|
|
309
|
-
// check if debug mode is enabled
|
|
310
|
-
if (_this.checkbox.renderHitBox.selected) {
|
|
311
|
-
|
|
312
|
-
renderer.save();
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
if (typeof this.ancestor !== "undefined") {
|
|
316
|
-
// if this object of this renderable parent is not the root container
|
|
317
|
-
if (!this.floating) {
|
|
318
|
-
var absolutePosition = this.ancestor.getAbsolutePosition();
|
|
319
|
-
renderer.translate(
|
|
320
|
-
-absolutePosition.x,
|
|
321
|
-
-absolutePosition.y
|
|
322
|
-
);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
if (this.renderable instanceof Renderable) {
|
|
327
|
-
var rbounds = this.renderable.getBounds();
|
|
328
|
-
var rx = -rbounds.x - this.anchorPoint.x * rbounds.width,
|
|
329
|
-
ry = -rbounds.y - this.anchorPoint.y * rbounds.height;
|
|
330
|
-
|
|
331
|
-
renderer.setColor("green");
|
|
332
|
-
renderer.translate(rx, ry);
|
|
333
|
-
renderer.stroke(rbounds);
|
|
334
|
-
renderer.translate(-rx, -ry);
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
renderer.translate(
|
|
338
|
-
this.body.getBounds().x,
|
|
339
|
-
this.body.getBounds().y
|
|
340
|
-
);
|
|
341
|
-
|
|
342
|
-
renderer.translate(
|
|
343
|
-
-this.anchorPoint.x * this.body.getBounds().width,
|
|
344
|
-
-this.anchorPoint.y * this.body.getBounds().height
|
|
345
|
-
);
|
|
346
|
-
|
|
347
|
-
// draw the bounding rect shape
|
|
348
|
-
renderer.setColor("orange");
|
|
349
|
-
renderer.stroke(this.body.getBounds());
|
|
350
|
-
|
|
351
|
-
// draw all defined shapes
|
|
352
|
-
renderer.setColor("red");
|
|
353
|
-
for (var i = this.body.shapes.length, shape; i--, (shape = this.body.shapes[i]);) {
|
|
354
|
-
renderer.stroke(shape);
|
|
355
|
-
_this.counters.inc("shapes");
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
renderer.restore();
|
|
359
|
-
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
if (_this.checkbox.renderVelocity.selected && (this.body.vel.x || this.body.vel.y)) {
|
|
363
|
-
var bounds = this.body.getBounds();
|
|
364
|
-
var hWidth = bounds.width / 2;
|
|
365
|
-
var hHeight = bounds.height / 2;
|
|
366
|
-
|
|
367
|
-
renderer.save();
|
|
368
|
-
renderer.setLineWidth(1);
|
|
369
|
-
|
|
370
|
-
renderer.setColor("blue");
|
|
371
|
-
renderer.translate(0, -hHeight);
|
|
372
|
-
renderer.strokeLine(0, 0, ~~(this.body.vel.x * hWidth), ~~(this.body.vel.y * hHeight));
|
|
373
|
-
_this.counters.inc("velocity");
|
|
374
|
-
|
|
375
|
-
renderer.restore();
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
// call the original Entity.postDraw function
|
|
379
|
-
this._patched.apply(this, arguments);
|
|
380
|
-
});
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
/**
|
|
384
|
-
* show the debug panel
|
|
385
|
-
*/
|
|
386
|
-
show() {
|
|
387
|
-
if (!this.visible) {
|
|
388
|
-
// add the debug panel to the game world
|
|
389
|
-
game.world.addChild(this, Infinity);
|
|
390
|
-
// register a mouse event for the checkboxes
|
|
391
|
-
input.registerPointerEvent("pointerdown", this, this.onClick.bind(this));
|
|
392
|
-
// mark it as visible
|
|
393
|
-
this.visible = true;
|
|
394
|
-
// force repaint
|
|
395
|
-
game.repaint();
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
/**
|
|
400
|
-
* hide the debug panel
|
|
401
|
-
*/
|
|
402
|
-
hide() {
|
|
403
|
-
if (this.visible) {
|
|
404
|
-
// release the mouse event for the checkboxes
|
|
405
|
-
input.releasePointerEvent("pointerdown", this);
|
|
406
|
-
// remove the debug panel from the game world
|
|
407
|
-
game.world.removeChild(this, true);
|
|
408
|
-
// mark it as invisible
|
|
409
|
-
this.visible = false;
|
|
410
|
-
// force repaint
|
|
411
|
-
game.repaint();
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
update() {
|
|
416
|
-
// update the FPS counter
|
|
417
|
-
timer.countFPS();
|
|
418
|
-
|
|
419
|
-
return this.visible;
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
onClick(e) {
|
|
423
|
-
// check the clickable areas
|
|
424
|
-
if (this.checkbox.renderHitBox.contains(e.gameX, e.gameY)) {
|
|
425
|
-
this.checkbox.renderHitBox.selected = !this.checkbox.renderHitBox.selected;
|
|
426
|
-
} else if (this.checkbox.renderVelocity.contains(e.gameX, e.gameY)) {
|
|
427
|
-
// does nothing for now, since velocity is
|
|
428
|
-
// rendered together with hitboxes (is a global debug flag required?)
|
|
429
|
-
this.checkbox.renderVelocity.selected = !this.checkbox.renderVelocity.selected;
|
|
430
|
-
} else if (this.checkbox.renderQuadTree.contains(e.gameX, e.gameY)) {
|
|
431
|
-
this.checkbox.renderQuadTree.selected = !this.checkbox.renderQuadTree.selected;
|
|
432
|
-
}
|
|
433
|
-
// force repaint
|
|
434
|
-
game.repaint();
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
drawQuadTreeNode(renderer, node) {
|
|
438
|
-
var bounds = node.bounds;
|
|
439
|
-
|
|
440
|
-
// draw the current bounds
|
|
441
|
-
if (node.nodes.length === 0) {
|
|
442
|
-
// cap the alpha value to 0.4 maximum
|
|
443
|
-
var _alpha = (node.objects.length * 0.4) / collision.maxChildren;
|
|
444
|
-
if (_alpha > 0.0) {
|
|
445
|
-
renderer.save();
|
|
446
|
-
renderer.setColor("rgba(255,0,0," + _alpha + ")");
|
|
447
|
-
renderer.fillRect(bounds.left, bounds.top, bounds.width, bounds.height);
|
|
448
|
-
renderer.restore();
|
|
449
|
-
}
|
|
450
|
-
} else {
|
|
451
|
-
//has subnodes? drawQuadtree them!
|
|
452
|
-
for (var i = 0; i < node.nodes.length; i++) {
|
|
453
|
-
this.drawQuadTreeNode(renderer, node.nodes[i]);
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
drawQuadTree(renderer) {
|
|
459
|
-
var x = game.viewport.pos.x;
|
|
460
|
-
var y = game.viewport.pos.y;
|
|
461
|
-
|
|
462
|
-
renderer.translate(-x, -y);
|
|
463
|
-
|
|
464
|
-
this.drawQuadTreeNode(renderer, game.world.broadphase);
|
|
465
|
-
|
|
466
|
-
renderer.translate(x, y);
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
/** @private */
|
|
470
|
-
drawMemoryGraph(renderer, endX) {
|
|
471
|
-
if (window && window.performance && window.performance.memory) {
|
|
472
|
-
var usedHeap = Math.round(window.performance.memory.usedJSHeapSize / 1048576, 2);
|
|
473
|
-
var totalHeap = Math.round(window.performance.memory.totalJSHeapSize / 1048576, 2);
|
|
474
|
-
var maxLen = ~~(endX - this.memoryPositionX - 5);
|
|
475
|
-
var len = maxLen * (usedHeap / totalHeap);
|
|
476
|
-
|
|
477
|
-
renderer.setColor("#0065AD");
|
|
478
|
-
renderer.fillRect(this.memoryPositionX, 0, maxLen, 20);
|
|
479
|
-
renderer.setColor("#3AA4F0");
|
|
480
|
-
renderer.fillRect(this.memoryPositionX + 1, 1, len - 1, 17);
|
|
481
|
-
|
|
482
|
-
this.font.draw(renderer, "Heap : " + usedHeap + "/" + totalHeap + " MB", this.memoryPositionX + 5, 2 * this.mod);
|
|
483
|
-
} else {
|
|
484
|
-
// Heap Memory information not available
|
|
485
|
-
this.font.draw(renderer, "Heap : ??/?? MB", this.memoryPositionX, 2 * this.mod);
|
|
486
|
-
}
|
|
487
|
-
this.font.draw(renderer, "Pool : " + pool.getInstanceCount(), this.memoryPositionX, 10 * this.mod);
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
draw(renderer) {
|
|
491
|
-
renderer.save();
|
|
492
|
-
|
|
493
|
-
// draw the QuadTree (before the panel)
|
|
494
|
-
if (this.checkbox.renderQuadTree.selected === true) {
|
|
495
|
-
this.drawQuadTree(renderer);
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
// draw the panel
|
|
499
|
-
renderer.setGlobalAlpha(0.5);
|
|
500
|
-
renderer.setColor("black");
|
|
501
|
-
renderer.fillRect(
|
|
502
|
-
this.left, this.top,
|
|
503
|
-
this.width, this.height
|
|
504
|
-
);
|
|
505
|
-
renderer.setGlobalAlpha(1.0);
|
|
506
|
-
renderer.setColor("white");
|
|
507
|
-
|
|
508
|
-
this.font.textAlign = "left";
|
|
509
|
-
|
|
510
|
-
this.font.draw(renderer, "#objects : " + game.world.children.length, 5 * this.mod, 2 * this.mod);
|
|
511
|
-
this.font.draw(renderer, "#draws : " + game.world.drawCount, 5 * this.mod, 10 * this.mod);
|
|
512
|
-
|
|
513
|
-
// debug checkboxes
|
|
514
|
-
this.font.draw(renderer, "?hitbox [" + (this.checkbox.renderHitBox.selected ? "x" : " ") + "]", 75 * this.mod, 2 * this.mod);
|
|
515
|
-
this.font.draw(renderer, "?velocity [" + (this.checkbox.renderVelocity.selected ? "x" : " ") + "]", 75 * this.mod, 10 * this.mod);
|
|
516
|
-
|
|
517
|
-
this.font.draw(renderer, "?QuadTree [" + (this.checkbox.renderQuadTree.selected ? "x" : " ") + "]", 150 * this.mod, 2 * this.mod);
|
|
518
|
-
|
|
519
|
-
// draw the update duration
|
|
520
|
-
this.font.draw(renderer, "Update : " + this.frameUpdateTime.toFixed(2) + " ms", 225 * this.mod, 2 * this.mod);
|
|
521
|
-
// draw the draw duration
|
|
522
|
-
this.font.draw(renderer, "Draw : " + this.frameDrawTime.toFixed(2) + " ms", 225 * this.mod, 10 * this.mod);
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
// Draw color code hints (not supported with bitmapfont)
|
|
526
|
-
//this.font.fillStyle.copy("red");
|
|
527
|
-
this.font.draw(renderer, "Shapes : " + this.counters.get("shapes"), 5 * this.mod, 17 * this.mod);
|
|
528
|
-
|
|
529
|
-
//this.font.fillStyle.copy("green");
|
|
530
|
-
this.font.draw(renderer, "Sprites : " + this.counters.get("sprites"), 75 * this.mod, 17 * this.mod);
|
|
531
|
-
|
|
532
|
-
//this.font.fillStyle.copy("blue");
|
|
533
|
-
this.font.draw(renderer, "Velocity : " + this.counters.get("velocity"), 150 * this.mod, 17 * this.mod);
|
|
534
|
-
|
|
535
|
-
//this.font.fillStyle.copy("orange");
|
|
536
|
-
this.font.draw(renderer, "Bounds : " + this.counters.get("bounds"), 225 * this.mod, 17 * this.mod);
|
|
537
|
-
|
|
538
|
-
//this.font.fillStyle.copy("purple");
|
|
539
|
-
this.font.draw(renderer, "Children : " + this.counters.get("children"), 325 * this.mod, 17 * this.mod);
|
|
540
|
-
|
|
541
|
-
// Reset font style
|
|
542
|
-
//this.font.setFont("courier", this.font_size, "white");
|
|
543
|
-
|
|
544
|
-
// draw the memory heap usage
|
|
545
|
-
var endX = this.width - 5;
|
|
546
|
-
this.drawMemoryGraph(renderer, endX - this.help_str_len);
|
|
547
|
-
|
|
548
|
-
this.font.textAlign = "right";
|
|
549
|
-
|
|
550
|
-
// some help string
|
|
551
|
-
this.font.draw(renderer, this.help_str, endX, 17 * this.mod);
|
|
552
|
-
|
|
553
|
-
//fps counter
|
|
554
|
-
var fps_str = timer.fps + "/" + timer.maxfps + " fps";
|
|
555
|
-
this.font.draw(renderer, fps_str, endX, 2 * this.mod);
|
|
556
|
-
|
|
557
|
-
renderer.restore();
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
onDestroyEvent() {
|
|
561
|
-
// hide the panel
|
|
562
|
-
this.hide();
|
|
563
|
-
// unbind keys event
|
|
564
|
-
input.unbindKey(this.toggleKey);
|
|
565
|
-
}
|
|
566
|
-
}
|
|
8
|
+
import { plugin, utils } from 'melonjs';
|
|
9
|
+
import { DebugPanel } from 'debugPanel';
|
|
567
10
|
|
|
568
11
|
/**
|
|
569
12
|
* @classdesc
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@melonjs/debug-plugin",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.6.1",
|
|
4
4
|
"description": "melonJS debug plugin",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"main": "dist/@melonjs/debug-plugin.js",
|
|
40
40
|
"module": "dist/@melonjs/debug-plugin.js",
|
|
41
|
+
"types": "dist/index.d.ts",
|
|
41
42
|
"sideEffects": false,
|
|
42
43
|
"files": [
|
|
43
44
|
"dist/@melonjs/debug-plugin.js",
|
|
@@ -47,7 +48,7 @@
|
|
|
47
48
|
"LICENSE"
|
|
48
49
|
],
|
|
49
50
|
"peerDependencies": {
|
|
50
|
-
"melonjs": "^15.1.
|
|
51
|
+
"melonjs": "^15.1.6"
|
|
51
52
|
},
|
|
52
53
|
"devDependencies": {
|
|
53
54
|
"@babel/eslint-parser": "^7.21.8",
|
|
@@ -57,16 +58,18 @@
|
|
|
57
58
|
"@rollup/plugin-node-resolve": "^15.0.2",
|
|
58
59
|
"@rollup/plugin-replace": "^5.0.2",
|
|
59
60
|
"del-cli": "^5.0.0",
|
|
60
|
-
"eslint": "^8.
|
|
61
|
-
"eslint-plugin-jsdoc": "^
|
|
62
|
-
"rollup": "^3.21.
|
|
61
|
+
"eslint": "^8.40.0",
|
|
62
|
+
"eslint-plugin-jsdoc": "^44.2.2",
|
|
63
|
+
"rollup": "^3.21.6",
|
|
63
64
|
"rollup-plugin-bundle-size": "^1.0.3",
|
|
64
|
-
"rollup-plugin-string": "^3.0.0"
|
|
65
|
+
"rollup-plugin-string": "^3.0.0",
|
|
66
|
+
"typescript": "^5.0.4"
|
|
65
67
|
},
|
|
66
68
|
"scripts": {
|
|
67
|
-
"build": "npm run lint && rollup -c --silent",
|
|
69
|
+
"build": "npm run lint && rollup -c --silent && npm run types",
|
|
68
70
|
"lint": "eslint src/**.js rollup.config.mjs",
|
|
69
71
|
"prepublishOnly": "npm run build",
|
|
70
|
-
"clean": "del-cli --force
|
|
72
|
+
"clean": "del-cli --force dist/*.*",
|
|
73
|
+
"types": "tsc"
|
|
71
74
|
}
|
|
72
75
|
}
|
package/src/debugPanel.js
CHANGED
|
@@ -26,7 +26,7 @@ import fontDataSource from "./font/PressStart2P.fnt";
|
|
|
26
26
|
|
|
27
27
|
const DEBUG_HEIGHT = 50;
|
|
28
28
|
|
|
29
|
-
class DebugPanel extends Renderable {
|
|
29
|
+
export class DebugPanel extends Renderable {
|
|
30
30
|
constructor(debugToggle = input.KEY.S) {
|
|
31
31
|
// call the super constructor
|
|
32
32
|
super(0, 0, video.renderer.getWidth(), DEBUG_HEIGHT );
|
|
@@ -560,5 +560,3 @@ class DebugPanel extends Renderable {
|
|
|
560
560
|
input.unbindKey(this.toggleKey);
|
|
561
561
|
}
|
|
562
562
|
}
|
|
563
|
-
|
|
564
|
-
export default DebugPanel;
|
package/src/index.js
CHANGED