@melonjs/debug-plugin 14.6.0 → 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.
@@ -1,569 +1,12 @@
1
1
  /*!
2
- * melonJS debug plugin - v14.6.0
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 { Renderable, video, utils, BitmapText, Rect, event, plugins, input, plugin, Container, Entity, Text, Camera2d, ImageLayer, game, timer, collision, Math, pool } from 'melonjs';
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,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";
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.6.0";
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.6.0",
3
+ "version": "14.6.1",
4
4
  "description": "melonJS debug plugin",
5
5
  "type": "module",
6
6
  "keywords": [
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
@@ -1,5 +1,5 @@
1
1
  import { utils, plugin } from "melonjs";
2
- import DebugPanel from "./debugPanel";
2
+ import { DebugPanel } from "debugPanel";
3
3
 
4
4
  /**
5
5
  * @classdesc