littlejsengine 1.15.9 → 1.16.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/dist/littlejs.d.ts +66 -83
- package/dist/littlejs.esm.js +318 -330
- package/dist/littlejs.esm.min.js +1 -1
- package/dist/littlejs.js +306 -319
- package/dist/littlejs.min.js +1 -1
- package/dist/littlejs.release.js +229 -242
- package/examples/box2d/game.js +1 -1
- package/examples/breakout/game.js +3 -3
- package/examples/electron/game.js +1 -2
- package/examples/electron/index.html +2 -2
- package/examples/htmlMenu/game.js +0 -1
- package/examples/index.html +1 -1
- package/examples/module/game.js +1 -2
- package/examples/particles/index.html +1 -1
- package/examples/platformer/game.js +4 -4
- package/examples/puzzle/game.js +2 -2
- package/examples/shorts/base.html +3 -3
- package/examples/shorts/box2dPool.js +2 -2
- package/examples/shorts/empty.js +1 -1
- package/examples/shorts/{systemFont.js → fontImage.js} +3 -3
- package/examples/shorts/fps.js +1 -1
- package/examples/shorts/helloWorld.js +2 -2
- package/examples/shorts/nineSlice.js +2 -2
- package/examples/shorts/slidingPuzzle.js +1 -1
- package/examples/starter/game.js +1 -2
- package/examples/starter/index.html +2 -2
- package/examples/stress/index.html +1 -1
- package/examples/typescript/game.js +1 -2
- package/examples/typescript/game.ts +1 -2
- package/package.json +1 -1
- package/plugins/box2d.js +8 -8
- package/plugins/drawUtilities.js +6 -6
- package/plugins/postProcess.js +13 -20
- package/plugins/uiSystem.js +15 -3
- package/reference.md +4 -6
- package/src/engine.js +35 -37
- package/src/engineAudio.js +3 -3
- package/src/engineDebug.js +78 -78
- package/src/engineDraw.js +107 -109
- package/src/engineExport.js +12 -11
- package/src/engineInput.js +1 -1
- package/src/engineMedals.js +3 -3
- package/src/engineObject.js +4 -2
- package/src/engineRelease.js +1 -1
- package/src/engineSettings.js +20 -30
- package/src/engineTileLayer.js +5 -4
- package/src/engineUtilities.js +2 -10
- package/src/engineWebGL.js +6 -5
package/src/engineSettings.js
CHANGED
|
@@ -74,15 +74,7 @@ let canvasFixedSize = vec2();
|
|
|
74
74
|
* @type {boolean}
|
|
75
75
|
* @default
|
|
76
76
|
* @memberof Settings */
|
|
77
|
-
let canvasPixelated =
|
|
78
|
-
|
|
79
|
-
/** Use nearest canvas scaling for more pixelated look
|
|
80
|
-
* - If enabled sets css image-rendering:pixelated
|
|
81
|
-
* - This defaults to false because text looks better with smoothing
|
|
82
|
-
* @type {boolean}
|
|
83
|
-
* @default
|
|
84
|
-
* @memberof Settings */
|
|
85
|
-
let overlayCanvasPixelated = false;
|
|
77
|
+
let canvasPixelated = false;
|
|
86
78
|
|
|
87
79
|
/** Disables texture filtering for crisper pixel art
|
|
88
80
|
* @type {boolean}
|
|
@@ -130,13 +122,19 @@ let glCircleSides = 32;
|
|
|
130
122
|
* @type {Vector2}
|
|
131
123
|
* @default Vector2(16,16)
|
|
132
124
|
* @memberof Settings */
|
|
133
|
-
let
|
|
125
|
+
let tileDefaultSize = vec2(16);
|
|
134
126
|
|
|
135
|
-
/**
|
|
127
|
+
/** Default padding pixels around tiles
|
|
136
128
|
* @type {number}
|
|
137
129
|
* @default
|
|
138
130
|
* @memberof Settings */
|
|
139
|
-
let
|
|
131
|
+
let tileDefaultPadding = 0;
|
|
132
|
+
|
|
133
|
+
/** Default amount of pixels smaller to draw tiles to prevent neighbor bleeding
|
|
134
|
+
* @type {number}
|
|
135
|
+
* @default
|
|
136
|
+
* @memberof Settings */
|
|
137
|
+
let tileDefaultBleed = 0;
|
|
140
138
|
|
|
141
139
|
///////////////////////////////////////////////////////////////////////////////
|
|
142
140
|
// Object settings
|
|
@@ -374,7 +372,6 @@ function setCanvasMaxAspect(aspect) { canvasMaxAspect = aspect; }
|
|
|
374
372
|
function setCanvasFixedSize(size) { canvasFixedSize = size.copy(); }
|
|
375
373
|
|
|
376
374
|
/** Use nearest scaling algorithm for canvas for more pixelated look
|
|
377
|
-
* - If enabled sets css image-rendering:pixelated
|
|
378
375
|
* @param {boolean} pixelated
|
|
379
376
|
* @memberof Settings */
|
|
380
377
|
function setCanvasPixelated(pixelated)
|
|
@@ -386,18 +383,6 @@ function setCanvasPixelated(pixelated)
|
|
|
386
383
|
glCanvas.style.imageRendering = pixelated ? 'pixelated' : '';
|
|
387
384
|
}
|
|
388
385
|
|
|
389
|
-
/** Use nearest scaling algorithm for canvas for more pixelated look
|
|
390
|
-
* - If enabled sets css image-rendering:pixelated
|
|
391
|
-
* - This defaults to false because text looks better with smoothing
|
|
392
|
-
* @param {boolean} pixelated
|
|
393
|
-
* @memberof Settings */
|
|
394
|
-
function setOverlayCanvasPixelated(pixelated)
|
|
395
|
-
{
|
|
396
|
-
overlayCanvasPixelated = pixelated;
|
|
397
|
-
if (overlayCanvas)
|
|
398
|
-
overlayCanvas.style.imageRendering = pixelated ? 'pixelated' : '';
|
|
399
|
-
}
|
|
400
|
-
|
|
401
386
|
/** Disables texture filtering for crisper pixel art
|
|
402
387
|
* @param {boolean} pixelated
|
|
403
388
|
* @memberof Settings */
|
|
@@ -441,12 +426,17 @@ function setGLCircleSides(sides) { glCircleSides = sides; }
|
|
|
441
426
|
/** Set default size of tiles in pixels
|
|
442
427
|
* @param {Vector2} size
|
|
443
428
|
* @memberof Settings */
|
|
444
|
-
function
|
|
429
|
+
function setTileDefaultSize(size) { tileDefaultSize = size.copy(); }
|
|
445
430
|
|
|
446
|
-
/**
|
|
447
|
-
* @param {number}
|
|
431
|
+
/** Default padding pixels around tiles
|
|
432
|
+
* @param {number} padding
|
|
433
|
+
* @memberof Settings */
|
|
434
|
+
function setTileDefaultPadding(padding) { tileDefaultPadding = padding; }
|
|
435
|
+
|
|
436
|
+
/** Default amount of pixels smaller to draw tiles to prevent neighbor bleeding
|
|
437
|
+
* @param {number} bleed
|
|
448
438
|
* @memberof Settings */
|
|
449
|
-
function
|
|
439
|
+
function setTileDefaultBleed(bleed) { tileDefaultBleed = bleed; }
|
|
450
440
|
|
|
451
441
|
/** Set if collisions between objects are enabled
|
|
452
442
|
* @param {boolean} enable
|
|
@@ -597,7 +587,7 @@ function setMedalsPreventUnlock(preventUnlock) { medalsPreventUnlock = preventUn
|
|
|
597
587
|
/** Set if watermark with FPS should be shown
|
|
598
588
|
* @param {boolean} show
|
|
599
589
|
* @memberof Debug */
|
|
600
|
-
function
|
|
590
|
+
function setDebugWatermark(show) { debugWatermark = show; }
|
|
601
591
|
|
|
602
592
|
/** Set key code used to toggle debug mode, Esc by default
|
|
603
593
|
* @param {string} key
|
package/src/engineTileLayer.js
CHANGED
|
@@ -443,8 +443,8 @@ class TileLayer extends CanvasLayer
|
|
|
443
443
|
if (!this.context) return;
|
|
444
444
|
|
|
445
445
|
// save current render settings
|
|
446
|
-
/** @type {[HTMLCanvasElement|OffscreenCanvas, CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D, Vector2, Vector2, number]} */
|
|
447
|
-
this.savedRenderSettings = [drawCanvas, drawContext, mainCanvasSize, cameraPos, cameraScale];
|
|
446
|
+
/** @type {[HTMLCanvasElement|OffscreenCanvas, CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D, Vector2, Vector2, number, Color]} */
|
|
447
|
+
this.savedRenderSettings = [drawCanvas, drawContext, mainCanvasSize, cameraPos, cameraScale, canvasClearColor];
|
|
448
448
|
|
|
449
449
|
// set the draw canvas and context to this layer
|
|
450
450
|
// use camera settings to match this layer's canvas
|
|
@@ -453,6 +453,7 @@ class TileLayer extends CanvasLayer
|
|
|
453
453
|
cameraPos = this.size.scale(.5);
|
|
454
454
|
const tileSize = this.tileInfo ? this.tileInfo.size : vec2(1);
|
|
455
455
|
cameraScale = tileSize.x;
|
|
456
|
+
canvasClearColor = CLEAR_BLACK;
|
|
456
457
|
mainCanvasSize = this.size.multiply(tileSize);
|
|
457
458
|
if (clear)
|
|
458
459
|
{
|
|
@@ -462,7 +463,7 @@ class TileLayer extends CanvasLayer
|
|
|
462
463
|
}
|
|
463
464
|
|
|
464
465
|
// disable smoothing for pixel art
|
|
465
|
-
|
|
466
|
+
drawContext.imageSmoothingEnabled = !tilesPixelated;
|
|
466
467
|
|
|
467
468
|
// setup gl rendering if enabled
|
|
468
469
|
glPreRender();
|
|
@@ -478,7 +479,7 @@ class TileLayer extends CanvasLayer
|
|
|
478
479
|
//debugSaveCanvas(this.canvas);
|
|
479
480
|
|
|
480
481
|
// set stuff back to normal
|
|
481
|
-
[drawCanvas, drawContext, mainCanvasSize, cameraPos, cameraScale] = this.savedRenderSettings;
|
|
482
|
+
[drawCanvas, drawContext, mainCanvasSize, cameraPos, cameraScale, canvasClearColor] = this.savedRenderSettings;
|
|
482
483
|
}
|
|
483
484
|
|
|
484
485
|
/** Draw the tile at a given position in the tile grid
|
package/src/engineUtilities.js
CHANGED
|
@@ -126,11 +126,7 @@ function percent(value, valueA, valueB)
|
|
|
126
126
|
* @return {number}
|
|
127
127
|
* @memberof Utilities */
|
|
128
128
|
function lerp(valueA, valueB, percent)
|
|
129
|
-
{
|
|
130
|
-
if (valueA >= 0 && valueA <= 1 && ((valueB < 0 || valueB > 1) && (percent < 0 || percent > 1)))
|
|
131
|
-
console.warn('lerp() parameter order changed! use lerp(start, end, p)');
|
|
132
|
-
return valueA + clamp(percent) * (valueB-valueA);
|
|
133
|
-
}
|
|
129
|
+
{ return valueA + clamp(percent) * (valueB-valueA); }
|
|
134
130
|
|
|
135
131
|
/** Gets percent between percentA and percentB and linearly interpolates between lerpA and lerpB
|
|
136
132
|
* A shortcut for lerp(lerpA, lerpB, percent(value, percentA, percentB))
|
|
@@ -161,11 +157,7 @@ function distanceWrap(valueA, valueB, wrapSize=1)
|
|
|
161
157
|
* @return {number}
|
|
162
158
|
* @memberof Utilities */
|
|
163
159
|
function lerpWrap(valueA, valueB, percent, wrapSize=1)
|
|
164
|
-
{
|
|
165
|
-
if (valueA >= 0 && valueA <= 1 && ((valueB < 0 || valueB > 1) && (percent < 0 || percent > 1)))
|
|
166
|
-
console.warn('lerpWrap() parameter order changed! use lerpWrap(start, end, p)');
|
|
167
|
-
return valueA + clamp(percent) * distanceWrap(valueB, valueA, wrapSize);
|
|
168
|
-
}
|
|
160
|
+
{ return valueA + clamp(percent) * distanceWrap(valueB, valueA, wrapSize); }
|
|
169
161
|
|
|
170
162
|
/** Returns signed wrapped distance between the two angles passed in
|
|
171
163
|
* @param {number} angleA
|
package/src/engineWebGL.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
'use strict';
|
|
15
15
|
|
|
16
|
-
/** The WebGL canvas which appears
|
|
16
|
+
/** The WebGL canvas which appears below the main canvas
|
|
17
17
|
* @type {HTMLCanvasElement}
|
|
18
18
|
* @memberof WebGL */
|
|
19
19
|
let glCanvas;
|
|
@@ -43,7 +43,7 @@ const gl_MAX_POLY_VERTEXES = gl_ARRAY_BUFFER_SIZE / gl_POLY_VERTEX_BYTE_STRIDE |
|
|
|
43
43
|
///////////////////////////////////////////////////////////////////////////////
|
|
44
44
|
|
|
45
45
|
// Initialize WebGL, called automatically by the engine
|
|
46
|
-
function glInit()
|
|
46
|
+
function glInit(rootElement)
|
|
47
47
|
{
|
|
48
48
|
// keep set of texture infos so they can be restored if context is lost
|
|
49
49
|
glTextureInfos = new Set;
|
|
@@ -67,8 +67,7 @@ function glInit()
|
|
|
67
67
|
return;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
// attach the WebGL canvas
|
|
71
|
-
const rootElement = mainCanvas.parentElement;
|
|
70
|
+
// attach the WebGL canvas;
|
|
72
71
|
rootElement.appendChild(glCanvas);
|
|
73
72
|
|
|
74
73
|
// startup webgl
|
|
@@ -286,6 +285,9 @@ function glClearCanvas()
|
|
|
286
285
|
glCanvas.width = drawCanvas.width;
|
|
287
286
|
glCanvas.height = drawCanvas.height;
|
|
288
287
|
glContext.viewport(0, 0, glCanvas.width, glCanvas.height);
|
|
288
|
+
const color = canvasClearColor;
|
|
289
|
+
if (color.a > 0)
|
|
290
|
+
glContext.clearColor(color.r, color.g, color.b, color.a);
|
|
289
291
|
glContext.clear(glContext.COLOR_BUFFER_BIT);
|
|
290
292
|
}
|
|
291
293
|
|
|
@@ -515,7 +517,6 @@ function glDraw(x, y, sizeX, sizeY, angle=0, uv0X=0, uv0Y=0, uv1X=1, uv1Y=1, rgb
|
|
|
515
517
|
glFlush();
|
|
516
518
|
glSetInstancedMode();
|
|
517
519
|
|
|
518
|
-
glPolyMode = false;
|
|
519
520
|
let offset = glBatchCount++ * gl_INDICES_PER_INSTANCE;
|
|
520
521
|
glPositionData[offset++] = x;
|
|
521
522
|
glPositionData[offset++] = y;
|