littlejsengine 1.12.6 → 1.13.4
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 +15 -12
- package/dist/littlejs.d.ts +466 -236
- package/dist/littlejs.esm.js +6126 -5370
- package/dist/littlejs.esm.min.js +4 -1
- package/dist/littlejs.js +6093 -5359
- package/dist/littlejs.min.js +4 -1
- package/dist/littlejs.release.js +5614 -4907
- package/examples/box2d/game.js +2 -2
- package/examples/box2d/gameObjects.js +8 -7
- package/examples/box2d/index.html +1 -1
- package/examples/box2d/scenes.js +8 -8
- package/examples/breakout/game.js +1 -1
- package/examples/breakout/gameObjects.js +2 -2
- package/examples/breakout/index.html +1 -1
- package/examples/breakoutTutorial/README.md +46 -43
- package/examples/breakoutTutorial/game.js +3 -3
- package/examples/breakoutTutorial/index.html +1 -1
- package/examples/electron/build.bat +7 -0
- package/examples/electron/build.js +124 -0
- package/examples/electron/electron.js +35 -0
- package/examples/electron/game.js +140 -0
- package/examples/electron/index.html +13 -0
- package/examples/electron/package.json +12 -0
- package/examples/electron/tiles.png +0 -0
- package/examples/empty/game.js +1 -0
- package/examples/empty/index.html +1 -1
- package/examples/htmlMenu/game.js +1 -1
- package/examples/htmlMenu/index.html +1 -1
- package/examples/index.html +486 -182
- package/examples/module/game.js +6 -3
- package/examples/module/index.html +1 -1
- package/examples/particles/index.html +12 -3
- package/examples/platformer/game.js +4 -4
- package/examples/platformer/gameCharacter.js +6 -6
- package/examples/platformer/gameEffects.js +74 -57
- package/examples/platformer/gameLevel.js +61 -70
- package/examples/platformer/gameObjects.js +4 -4
- package/examples/platformer/index.html +1 -1
- package/examples/puzzle/index.html +1 -1
- package/examples/shorts/base.html +23 -3
- package/examples/shorts/blending.js +9 -5
- package/examples/shorts/box2d.js +1 -1
- package/examples/shorts/box2dCar.js +9 -13
- package/examples/shorts/clock.js +1 -1
- package/examples/shorts/colors.js +2 -2
- package/examples/shorts/flappyGame.js +52 -0
- package/examples/shorts/helloWorld.js +6 -3
- package/examples/shorts/hillGlideGame.js +56 -0
- package/examples/shorts/landerGame.js +32 -0
- package/examples/shorts/maze.js +47 -0
- package/examples/shorts/medals.js +42 -0
- package/examples/shorts/nineSlice.js +21 -0
- package/examples/shorts/piano.js +52 -0
- package/examples/shorts/platformer.js +24 -20
- package/examples/shorts/{pong.js → pongGame.js} +1 -1
- package/examples/shorts/raycasting.js +71 -0
- package/examples/shorts/shapes.js +9 -9
- package/examples/shorts/slidingPuzzle.js +42 -0
- package/examples/shorts/spaceGame.js +56 -0
- package/examples/shorts/starfield.js +15 -0
- package/examples/shorts/systemFont.js +1 -1
- package/examples/shorts/tileLayer.js +3 -5
- package/examples/shorts/tiles.png +0 -0
- package/examples/shorts/tiltedView.js +8 -7
- package/examples/shorts/topDown.js +18 -26
- package/examples/shorts/uiSystem.js +5 -7
- package/examples/starter/build.bat +6 -1
- package/examples/starter/build.js +9 -8
- package/examples/starter/game.js +7 -4
- package/examples/starter/index.html +23 -13
- package/examples/stress/index.html +7 -8
- package/examples/style.css +139 -0
- package/examples/typescript/build.js +2 -3
- package/examples/typescript/game.js +4 -4
- package/examples/typescript/game.ts +6 -3
- package/examples/typescript/index.html +1 -1
- package/examples/uiSystem/game.js +10 -25
- package/examples/uiSystem/index.html +1 -1
- package/package.json +2 -2
- package/plugins/box2d.js +22 -97
- package/plugins/drawUtilities.js +132 -0
- package/plugins/newgrounds.js +1 -1
- package/plugins/pluginExport.js +7 -1
- package/plugins/postProcess.js +9 -2
- package/plugins/uiSystem.js +155 -67
- package/plugins/zzfxm.js +1 -1
- package/reference.md +10 -10
- package/src/engine.js +56 -30
- package/src/engineAudio.js +15 -6
- package/src/engineBuild.bat +6 -1
- package/src/engineBuild.js +20 -5
- package/src/engineDebug.js +55 -28
- package/src/engineDraw.js +321 -177
- package/src/engineExport.js +27 -9
- package/src/engineInput.js +110 -38
- package/src/engineMedals.js +4 -4
- package/src/engineObject.js +71 -70
- package/src/engineParticles.js +33 -9
- package/src/engineSettings.js +69 -23
- package/src/engineTileLayer.js +312 -153
- package/src/engineUtilities.js +187 -135
- package/src/engineWebGL.js +70 -39
package/dist/littlejs.d.ts
CHANGED
|
@@ -59,18 +59,32 @@ declare module "littlejsengine" {
|
|
|
59
59
|
* @default false
|
|
60
60
|
* @memberof Engine */
|
|
61
61
|
export let paused: boolean;
|
|
62
|
+
/** Get if game is paused
|
|
63
|
+
* @return {boolean}
|
|
64
|
+
* @memberof Engine */
|
|
65
|
+
export function getPaused(): boolean;
|
|
62
66
|
/** Set if game is paused
|
|
63
|
-
* @param {boolean} isPaused
|
|
67
|
+
* @param {boolean} [isPaused]
|
|
64
68
|
* @memberof Engine */
|
|
65
|
-
export function setPaused(isPaused
|
|
69
|
+
export function setPaused(isPaused?: boolean): void;
|
|
66
70
|
/** Startup LittleJS engine with your callback functions
|
|
67
|
-
* @param {Function|function():Promise} gameInit - Called once after the engine starts up
|
|
68
|
-
* @param {Function} gameUpdate - Called every frame before objects are updated
|
|
69
|
-
* @param {Function} gameUpdatePost - Called after physics and objects are updated, even when paused
|
|
70
|
-
* @param {Function} gameRender - Called before objects are rendered, for drawing
|
|
71
|
-
* @param {Function} gameRenderPost - Called after objects are rendered,
|
|
72
|
-
* @param {Array<string>} [imageSources=[]] - List of
|
|
73
|
-
* @param {HTMLElement} [rootElement] - Root element to attach to,
|
|
71
|
+
* @param {Function|function():Promise} gameInit - Called once after the engine starts up, can be async for loading
|
|
72
|
+
* @param {Function} gameUpdate - Called every frame before objects are updated (60fps), use for game logic
|
|
73
|
+
* @param {Function} gameUpdatePost - Called after physics and objects are updated, even when paused, use for UI updates
|
|
74
|
+
* @param {Function} gameRender - Called before objects are rendered, use for drawing backgrounds/world elements
|
|
75
|
+
* @param {Function} gameRenderPost - Called after objects are rendered, use for drawing UI/overlays
|
|
76
|
+
* @param {Array<string>} [imageSources=[]] - List of image file paths to preload (e.g., ['player.png', 'tiles.png'])
|
|
77
|
+
* @param {HTMLElement} [rootElement] - Root DOM element to attach canvas to, defaults to document.body
|
|
78
|
+
* @example
|
|
79
|
+
* // Basic engine startup
|
|
80
|
+
* engineInit(
|
|
81
|
+
* () => { console.log('Game initialized!'); }, // gameInit
|
|
82
|
+
* () => { updatePlayer(); }, // gameUpdate
|
|
83
|
+
* () => { updateUI(); }, // gameUpdatePost
|
|
84
|
+
* () => { drawBackground(); }, // gameRender
|
|
85
|
+
* () => { drawHUD(); }, // gameRenderPost
|
|
86
|
+
* ['tiles.png', 'tilesLevel.png'] // images to load
|
|
87
|
+
* );
|
|
74
88
|
* @memberof Engine */
|
|
75
89
|
export function engineInit(gameInit: Function | (() => Promise<any>), gameUpdate: Function, gameUpdatePost: Function, gameRender: Function, gameRenderPost: Function, imageSources?: Array<string>, rootElement?: HTMLElement): Promise<void>;
|
|
76
90
|
/** Update each engine object, remove destroyed objects, and update time
|
|
@@ -131,9 +145,9 @@ declare module "littlejsengine" {
|
|
|
131
145
|
export let showWatermark: boolean;
|
|
132
146
|
/** Asserts if the expression is false, does not do anything in release builds
|
|
133
147
|
* @param {boolean} assert
|
|
134
|
-
* @param {Object} [output]
|
|
148
|
+
* @param {...Object} [output] - error message output
|
|
135
149
|
* @memberof Debug */
|
|
136
|
-
export function ASSERT(assert: boolean, output?: any): void;
|
|
150
|
+
export function ASSERT(assert: boolean, ...output?: any[]): void;
|
|
137
151
|
/** Draw a debug rectangle in world space
|
|
138
152
|
* @param {Vector2} pos
|
|
139
153
|
* @param {Vector2} [size=Vector2()]
|
|
@@ -176,13 +190,13 @@ declare module "littlejsengine" {
|
|
|
176
190
|
* @memberof Debug */
|
|
177
191
|
export function debugLine(posA: Vector2, posB: Vector2, color?: string, thickness?: number, time?: number): void;
|
|
178
192
|
/** Draw a debug combined axis aligned bounding box in world space
|
|
179
|
-
* @param {Vector2}
|
|
180
|
-
* @param {Vector2}
|
|
181
|
-
* @param {Vector2}
|
|
182
|
-
* @param {Vector2}
|
|
193
|
+
* @param {Vector2} posA
|
|
194
|
+
* @param {Vector2} sizeA
|
|
195
|
+
* @param {Vector2} posB
|
|
196
|
+
* @param {Vector2} sizeB
|
|
183
197
|
* @param {string} [color]
|
|
184
198
|
* @memberof Debug */
|
|
185
|
-
export function debugOverlap(
|
|
199
|
+
export function debugOverlap(posA: Vector2, sizeA: Vector2, posB: Vector2, sizeB: Vector2, color?: string): void;
|
|
186
200
|
/** Draw a debug axis aligned bounding box in world space
|
|
187
201
|
* @param {string} text
|
|
188
202
|
* @param {Vector2} pos
|
|
@@ -200,11 +214,11 @@ declare module "littlejsengine" {
|
|
|
200
214
|
* @memberof Debug */
|
|
201
215
|
export function debugScreenshot(): void;
|
|
202
216
|
/** Save a canvas to disk
|
|
203
|
-
* @param {HTMLCanvasElement} canvas
|
|
204
|
-
* @param {string}
|
|
205
|
-
* @param {string}
|
|
217
|
+
* @param {HTMLCanvasElement|OffscreenCanvas} canvas
|
|
218
|
+
* @param {string} [filename]
|
|
219
|
+
* @param {string} [type]
|
|
206
220
|
* @memberof Debug */
|
|
207
|
-
export function debugSaveCanvas(canvas: HTMLCanvasElement, filename?: string, type?: string): void;
|
|
221
|
+
export function debugSaveCanvas(canvas: HTMLCanvasElement | OffscreenCanvas, filename?: string, type?: string): void;
|
|
208
222
|
/** Save a text file to disk
|
|
209
223
|
* @param {string} text
|
|
210
224
|
* @param {string} [filename]
|
|
@@ -238,11 +252,22 @@ declare module "littlejsengine" {
|
|
|
238
252
|
* @default Vector2()
|
|
239
253
|
* @memberof Settings */
|
|
240
254
|
export let cameraPos: Vector2;
|
|
255
|
+
/** Rotation angle of camera in world space
|
|
256
|
+
* @type {number}
|
|
257
|
+
* @default
|
|
258
|
+
* @memberof Settings */
|
|
259
|
+
export let cameraAngle: number;
|
|
241
260
|
/** Scale of camera in world space
|
|
242
261
|
* @type {number}
|
|
243
262
|
* @default
|
|
244
263
|
* @memberof Settings */
|
|
245
264
|
export let cameraScale: number;
|
|
265
|
+
/** Enable applying color to tiles when using canvas2d
|
|
266
|
+
* - This is slower but should be the same as webgl rendering
|
|
267
|
+
* @type {boolean}
|
|
268
|
+
* @default
|
|
269
|
+
* @memberof Settings */
|
|
270
|
+
export let canvasColorTiles: boolean;
|
|
246
271
|
/** The max size of the canvas, centered if window is larger
|
|
247
272
|
* @type {Vector2}
|
|
248
273
|
* @default Vector2(1920,1080)
|
|
@@ -254,13 +279,19 @@ declare module "littlejsengine" {
|
|
|
254
279
|
* @default Vector2()
|
|
255
280
|
* @memberof Settings */
|
|
256
281
|
export let canvasFixedSize: Vector2;
|
|
257
|
-
/** Use nearest
|
|
258
|
-
* - Must be set before startup to take effect
|
|
282
|
+
/** Use nearest canvas scaling for more pixelated look
|
|
259
283
|
* - If enabled sets css image-rendering:pixelated
|
|
260
284
|
* @type {boolean}
|
|
261
285
|
* @default
|
|
262
286
|
* @memberof Settings */
|
|
263
287
|
export let canvasPixelated: boolean;
|
|
288
|
+
/** Use nearest canvas scaling for more pixelated look
|
|
289
|
+
* - If enabled sets css image-rendering:pixelated
|
|
290
|
+
* - This defaults to false because text looks better with smoothing
|
|
291
|
+
* @type {boolean}
|
|
292
|
+
* @default
|
|
293
|
+
* @memberof Settings */
|
|
294
|
+
export let overlayCanvasPixelated: boolean;
|
|
264
295
|
/** Disables texture filtering for crisper pixel art
|
|
265
296
|
* @type {boolean}
|
|
266
297
|
* @default
|
|
@@ -316,7 +347,7 @@ declare module "littlejsengine" {
|
|
|
316
347
|
* @type {number}
|
|
317
348
|
* @default
|
|
318
349
|
* @memberof Settings */
|
|
319
|
-
export let
|
|
350
|
+
export let objectDefaultRestitution: number;
|
|
320
351
|
/** How much to slow when touching (0-1)
|
|
321
352
|
* @type {number}
|
|
322
353
|
* @default
|
|
@@ -343,12 +374,6 @@ declare module "littlejsengine" {
|
|
|
343
374
|
* @default
|
|
344
375
|
* @memberof Settings */
|
|
345
376
|
export let glEnable: boolean;
|
|
346
|
-
/** Fixes slow rendering in some browsers by not compositing the WebGL canvas
|
|
347
|
-
* - Must be set before startup to take effect
|
|
348
|
-
* @type {boolean}
|
|
349
|
-
* @default
|
|
350
|
-
* @memberof Settings */
|
|
351
|
-
export let glOverlay: boolean;
|
|
352
377
|
/** Should gamepads be allowed
|
|
353
378
|
* @type {boolean}
|
|
354
379
|
* @default
|
|
@@ -430,10 +455,21 @@ declare module "littlejsengine" {
|
|
|
430
455
|
* @param {Vector2} pos
|
|
431
456
|
* @memberof Settings */
|
|
432
457
|
export function setCameraPos(pos: Vector2): void;
|
|
458
|
+
/** Set angle of camera in world space
|
|
459
|
+
* @param {number} angle
|
|
460
|
+
* @memberof Settings */
|
|
461
|
+
export function setCameraAngle(angle: number): void;
|
|
433
462
|
/** Set scale of camera in world space
|
|
434
463
|
* @param {number} scale
|
|
435
464
|
* @memberof Settings */
|
|
436
465
|
export function setCameraScale(scale: number): void;
|
|
466
|
+
/** Set if tiles should be colorized when using canvas2d
|
|
467
|
+
* This can be slower but results should look nearly identical to webgl rendering
|
|
468
|
+
* It can be enabled/disabled at any time
|
|
469
|
+
* Optimized for performance, and will use faster method if color is white or untextured
|
|
470
|
+
* @param {boolean} colorTiles
|
|
471
|
+
* @memberof Settings */
|
|
472
|
+
export function setCanvasColorTiles(colorTiles: boolean): void;
|
|
437
473
|
/** Set max size of the canvas
|
|
438
474
|
* @param {Vector2} size
|
|
439
475
|
* @memberof Settings */
|
|
@@ -442,10 +478,17 @@ declare module "littlejsengine" {
|
|
|
442
478
|
* @param {Vector2} size
|
|
443
479
|
* @memberof Settings */
|
|
444
480
|
export function setCanvasFixedSize(size: Vector2): void;
|
|
445
|
-
/** Use nearest
|
|
481
|
+
/** Use nearest scaling algorithm for canvas for more pixelated look
|
|
482
|
+
* - If enabled sets css image-rendering:pixelated
|
|
446
483
|
* @param {boolean} pixelated
|
|
447
484
|
* @memberof Settings */
|
|
448
485
|
export function setCanvasPixelated(pixelated: boolean): void;
|
|
486
|
+
/** Use nearest scaling algorithm for canvas for more pixelated look
|
|
487
|
+
* - If enabled sets css image-rendering:pixelated
|
|
488
|
+
* - This defaults to false because text looks better with smoothing
|
|
489
|
+
* @param {boolean} pixelated
|
|
490
|
+
* @memberof Settings */
|
|
491
|
+
export function setOverlayCanvasPixelated(pixelated: boolean): void;
|
|
449
492
|
/** Disables texture filtering for crisper pixel art
|
|
450
493
|
* @param {boolean} pixelated
|
|
451
494
|
* @memberof Settings */
|
|
@@ -465,11 +508,7 @@ declare module "littlejsengine" {
|
|
|
465
508
|
/** Set if webgl rendering is enabled
|
|
466
509
|
* @param {boolean} enable
|
|
467
510
|
* @memberof Settings */
|
|
468
|
-
export function
|
|
469
|
-
/** Set to not composite the WebGL canvas
|
|
470
|
-
* @param {boolean} overlay
|
|
471
|
-
* @memberof Settings */
|
|
472
|
-
export function setGlOverlay(overlay: boolean): void;
|
|
511
|
+
export function setGLEnable(enable: boolean): void;
|
|
473
512
|
/** Set default size of tiles in pixels
|
|
474
513
|
* @param {Vector2} size
|
|
475
514
|
* @memberof Settings */
|
|
@@ -495,9 +534,9 @@ declare module "littlejsengine" {
|
|
|
495
534
|
* @memberof Settings */
|
|
496
535
|
export function setObjectDefaultAngleDamping(damp: number): void;
|
|
497
536
|
/** Set how much to bounce when a collision occur
|
|
498
|
-
* @param {number}
|
|
537
|
+
* @param {number} restitution
|
|
499
538
|
* @memberof Settings */
|
|
500
|
-
export function
|
|
539
|
+
export function setObjectDefaultRestitution(restitution: number): void;
|
|
501
540
|
/** Set how much to slow when touching
|
|
502
541
|
* @param {number} friction
|
|
503
542
|
* @memberof Settings */
|
|
@@ -609,18 +648,16 @@ declare module "littlejsengine" {
|
|
|
609
648
|
* @return {number}
|
|
610
649
|
* @memberof Utilities */
|
|
611
650
|
export function abs(value: number): number;
|
|
612
|
-
/** Returns lowest
|
|
613
|
-
* @param {number}
|
|
614
|
-
* @param {number} valueB
|
|
651
|
+
/** Returns lowest value passed in
|
|
652
|
+
* @param {...number} values
|
|
615
653
|
* @return {number}
|
|
616
654
|
* @memberof Utilities */
|
|
617
|
-
export function min(
|
|
618
|
-
/** Returns highest
|
|
619
|
-
* @param {number}
|
|
620
|
-
* @param {number} valueB
|
|
655
|
+
export function min(...values: number[]): number;
|
|
656
|
+
/** Returns highest value passed in
|
|
657
|
+
* @param {...number} values
|
|
621
658
|
* @return {number}
|
|
622
659
|
* @memberof Utilities */
|
|
623
|
-
export function max(
|
|
660
|
+
export function max(...values: number[]): number;
|
|
624
661
|
/** Returns the sign of value passed in
|
|
625
662
|
* @param {number} value
|
|
626
663
|
* @return {number}
|
|
@@ -654,13 +691,13 @@ declare module "littlejsengine" {
|
|
|
654
691
|
* @memberof Utilities */
|
|
655
692
|
export function distanceWrap(valueA: number, valueB: number, wrapSize?: number): number;
|
|
656
693
|
/** Linearly interpolates between values passed in with wrapping
|
|
657
|
-
* @param {number} percent
|
|
658
694
|
* @param {number} valueA
|
|
659
695
|
* @param {number} valueB
|
|
696
|
+
* @param {number} percent
|
|
660
697
|
* @param {number} [wrapSize]
|
|
661
698
|
* @returns {number}
|
|
662
699
|
* @memberof Utilities */
|
|
663
|
-
export function lerpWrap(
|
|
700
|
+
export function lerpWrap(valueA: number, valueB: number, percent: number, wrapSize?: number): number;
|
|
664
701
|
/** Returns signed wrapped distance between the two angles passed in
|
|
665
702
|
* @param {number} angleA
|
|
666
703
|
* @param {number} angleB
|
|
@@ -668,19 +705,19 @@ declare module "littlejsengine" {
|
|
|
668
705
|
* @memberof Utilities */
|
|
669
706
|
export function distanceAngle(angleA: number, angleB: number): number;
|
|
670
707
|
/** Linearly interpolates between the angles passed in with wrapping
|
|
671
|
-
* @param {number} percent
|
|
672
708
|
* @param {number} angleA
|
|
673
709
|
* @param {number} angleB
|
|
710
|
+
* @param {number} percent
|
|
674
711
|
* @returns {number}
|
|
675
712
|
* @memberof Utilities */
|
|
676
|
-
export function lerpAngle(
|
|
713
|
+
export function lerpAngle(angleA: number, angleB: number, percent: number): number;
|
|
677
714
|
/** Linearly interpolates between values passed in using percent
|
|
678
|
-
* @param {number} percent
|
|
679
715
|
* @param {number} valueA
|
|
680
716
|
* @param {number} valueB
|
|
717
|
+
* @param {number} percent
|
|
681
718
|
* @return {number}
|
|
682
719
|
* @memberof Utilities */
|
|
683
|
-
export function lerp(
|
|
720
|
+
export function lerp(valueA: number, valueB: number, percent: number): number;
|
|
684
721
|
/** Applies smoothstep function to the percentage value
|
|
685
722
|
* @param {number} percent
|
|
686
723
|
* @return {number}
|
|
@@ -692,10 +729,11 @@ declare module "littlejsengine" {
|
|
|
692
729
|
* @memberof Utilities */
|
|
693
730
|
export function nearestPowerOfTwo(value: number): number;
|
|
694
731
|
/** Returns true if two axis aligned bounding boxes are overlapping
|
|
732
|
+
* this can be used for simple collision detection between objects
|
|
695
733
|
* @param {Vector2} posA - Center of box A
|
|
696
734
|
* @param {Vector2} sizeA - Size of box A
|
|
697
735
|
* @param {Vector2} posB - Center of box B
|
|
698
|
-
* @param {Vector2} [sizeB=(0,0)] - Size of box B, a point if undefined
|
|
736
|
+
* @param {Vector2} [sizeB=(0,0)] - Size of box B, uses a point if undefined
|
|
699
737
|
* @return {boolean} - True if overlapping
|
|
700
738
|
* @memberof Utilities */
|
|
701
739
|
export function isOverlapping(posA: Vector2, sizeA: Vector2, posB: Vector2, sizeB?: Vector2): boolean;
|
|
@@ -711,9 +749,10 @@ declare module "littlejsengine" {
|
|
|
711
749
|
* @param {number} [frequency] - Frequency of the wave in Hz
|
|
712
750
|
* @param {number} [amplitude] - Amplitude (max height) of the wave
|
|
713
751
|
* @param {number} [t=time] - Value to use for time of the wave
|
|
752
|
+
* @param {number} [offset] - Value to use for time offset of the wave
|
|
714
753
|
* @return {number} - Value waving between 0 and amplitude
|
|
715
754
|
* @memberof Utilities */
|
|
716
|
-
export function wave(frequency?: number, amplitude?: number, t?: number): number;
|
|
755
|
+
export function wave(frequency?: number, amplitude?: number, t?: number, offset?: number): number;
|
|
717
756
|
/** Formats seconds to mm:ss style for display purposes
|
|
718
757
|
* @param {number} t - time in seconds
|
|
719
758
|
* @return {string}
|
|
@@ -753,7 +792,7 @@ declare module "littlejsengine" {
|
|
|
753
792
|
* @param {number} [length]
|
|
754
793
|
* @return {Vector2}
|
|
755
794
|
* @memberof Random */
|
|
756
|
-
export function
|
|
795
|
+
export function randVec2(length?: number): Vector2;
|
|
757
796
|
/** Returns a random color between the two passed in colors, combine components if linear
|
|
758
797
|
* @param {Color} [colorA=(1,1,1,1)]
|
|
759
798
|
* @param {Color} [colorB=(0,0,0,1)]
|
|
@@ -773,8 +812,8 @@ declare module "littlejsengine" {
|
|
|
773
812
|
*/
|
|
774
813
|
export class RandomGenerator {
|
|
775
814
|
/** Create a random number generator with the seed passed in
|
|
776
|
-
* @param {number} seed - Starting seed */
|
|
777
|
-
constructor(seed
|
|
815
|
+
* @param {number} [seed] - Starting seed or engine default seed */
|
|
816
|
+
constructor(seed?: number);
|
|
778
817
|
/** @property {number} - random seed */
|
|
779
818
|
seed: number;
|
|
780
819
|
/** Returns a seeded random value between the two values passed in
|
|
@@ -787,6 +826,10 @@ declare module "littlejsengine" {
|
|
|
787
826
|
* @param {number} [valueB]
|
|
788
827
|
* @return {number} */
|
|
789
828
|
int(valueA: number, valueB?: number): number;
|
|
829
|
+
/** Randomly returns true or false given the chance of true passed in
|
|
830
|
+
* @param {number} [chance]
|
|
831
|
+
* @return {boolean} */
|
|
832
|
+
bool(chance?: number): boolean;
|
|
790
833
|
/** Randomly returns either -1 or 1 deterministically
|
|
791
834
|
* @return {number} */
|
|
792
835
|
sign(): number;
|
|
@@ -795,6 +838,14 @@ declare module "littlejsengine" {
|
|
|
795
838
|
* @param {number} [valueB]
|
|
796
839
|
* @return {number} */
|
|
797
840
|
floatSign(valueA?: number, valueB?: number): number;
|
|
841
|
+
/** Returns a random angle between -PI and PI
|
|
842
|
+
* @return {number} */
|
|
843
|
+
angle(): number;
|
|
844
|
+
/** Returns a seeded vec2 with size between the two values passed in
|
|
845
|
+
* @param {number} valueA
|
|
846
|
+
* @param {number} [valueB]
|
|
847
|
+
* @return {Vector2} */
|
|
848
|
+
vec2(valueA?: number, valueB?: number): Vector2;
|
|
798
849
|
}
|
|
799
850
|
/**
|
|
800
851
|
* 2D Vector object with vector math library
|
|
@@ -872,6 +923,11 @@ declare module "littlejsengine" {
|
|
|
872
923
|
* @param {Vector2} v - other vector
|
|
873
924
|
* @return {number} */
|
|
874
925
|
cross(v: Vector2): number;
|
|
926
|
+
/** Returns a copy this vector reflected by the surface normal
|
|
927
|
+
* @param {Vector2} normal - surface normal (should be normalized)
|
|
928
|
+
* @param {number} restitution - how much to bounce, 1 is perfect bounce, 0 is no bounce
|
|
929
|
+
* @return {Vector2} */
|
|
930
|
+
reflect(normal: Vector2, restitution?: number): Vector2;
|
|
875
931
|
/** Returns the clockwise angle of this vector, up is angle 0
|
|
876
932
|
* @return {number} */
|
|
877
933
|
angle(): number;
|
|
@@ -894,9 +950,16 @@ declare module "littlejsengine" {
|
|
|
894
950
|
/** Returns a copy of this vector that has been inverted
|
|
895
951
|
* @return {Vector2} */
|
|
896
952
|
invert(): Vector2;
|
|
953
|
+
/** Returns a copy of this vector absolute values
|
|
954
|
+
* @return {Vector2} */
|
|
955
|
+
abs(): Vector2;
|
|
897
956
|
/** Returns a copy of this vector with each axis floored
|
|
898
957
|
* @return {Vector2} */
|
|
899
958
|
floor(): Vector2;
|
|
959
|
+
/** Returns new vec2 with modded values
|
|
960
|
+
* @param {number} [divisor]
|
|
961
|
+
* @return {Vector2} */
|
|
962
|
+
mod(divisor?: number): Vector2;
|
|
900
963
|
/** Returns the area this vector covers as a rectangle
|
|
901
964
|
* @return {number} */
|
|
902
965
|
area(): number;
|
|
@@ -923,7 +986,7 @@ declare module "littlejsengine" {
|
|
|
923
986
|
* let a = new Color; // white
|
|
924
987
|
* let b = new Color(1, 0, 0); // red
|
|
925
988
|
* let c = new Color(0, 0, 0, 0); // transparent black
|
|
926
|
-
* let d = rgb(0, 0, 1);
|
|
989
|
+
* let d = rgb(0, 0, 1); // blue using rgb color
|
|
927
990
|
* let e = hsl(.3, 1, .5); // green using hsl color
|
|
928
991
|
*/
|
|
929
992
|
export class Color {
|
|
@@ -1091,14 +1154,36 @@ declare module "littlejsengine" {
|
|
|
1091
1154
|
* @memberof Utilities
|
|
1092
1155
|
*/
|
|
1093
1156
|
export function isColor(c: any): boolean;
|
|
1157
|
+
/**
|
|
1158
|
+
* Check if object is a valid Vector2
|
|
1159
|
+
* @param {any} v
|
|
1160
|
+
* @return {boolean}
|
|
1161
|
+
* @memberof Utilities
|
|
1162
|
+
*/
|
|
1163
|
+
export function isVector2(v: any): boolean;
|
|
1164
|
+
/**
|
|
1165
|
+
* Check if object is a valid number, not NaN or undefined, but it may be infinite
|
|
1166
|
+
* @param {any} n
|
|
1167
|
+
* @return {boolean}
|
|
1168
|
+
* @memberof Utilities
|
|
1169
|
+
*/
|
|
1170
|
+
export function isNumber(n: any): boolean;
|
|
1094
1171
|
/** Color - White #ffffff
|
|
1095
1172
|
* @type {Color}
|
|
1096
1173
|
* @memberof Utilities */
|
|
1097
1174
|
export const WHITE: Color;
|
|
1175
|
+
/** Color - Clear White #ffffff with 0 alpha
|
|
1176
|
+
* @type {Color}
|
|
1177
|
+
* @memberof Utilities */
|
|
1178
|
+
export const CLEAR_WHITE: Color;
|
|
1098
1179
|
/** Color - Black #000000
|
|
1099
1180
|
* @type {Color}
|
|
1100
1181
|
* @memberof Utilities */
|
|
1101
1182
|
export const BLACK: Color;
|
|
1183
|
+
/** Color - Clear Black #000000 with 0 alpha
|
|
1184
|
+
* @type {Color}
|
|
1185
|
+
* @memberof Utilities */
|
|
1186
|
+
export const CLEAR_BLACK: Color;
|
|
1102
1187
|
/** Color - Gray #808080
|
|
1103
1188
|
* @type {Color}
|
|
1104
1189
|
* @memberof Utilities */
|
|
@@ -1143,10 +1228,10 @@ declare module "littlejsengine" {
|
|
|
1143
1228
|
* Create a tile info object using a grid based system
|
|
1144
1229
|
* - This can take vecs or floats for easier use and conversion
|
|
1145
1230
|
* - If an index is passed in, the tile size and index will determine the position
|
|
1146
|
-
* @param {Vector2|number} [pos=0]
|
|
1231
|
+
* @param {Vector2|number} [pos=0] - Index of tile in sheet
|
|
1147
1232
|
* @param {Vector2|number} [size=tileSizeDefault] - Size of tile in pixels
|
|
1148
|
-
* @param {number} [textureIndex]
|
|
1149
|
-
* @param {number} [padding]
|
|
1233
|
+
* @param {number} [textureIndex] - Texture index to use
|
|
1234
|
+
* @param {number} [padding] - How many pixels padding around tiles
|
|
1150
1235
|
* @return {TileInfo}
|
|
1151
1236
|
* @example
|
|
1152
1237
|
* tile(2) // a tile at index 2 using the default tile size of 16
|
|
@@ -1175,6 +1260,8 @@ declare module "littlejsengine" {
|
|
|
1175
1260
|
textureIndex: number;
|
|
1176
1261
|
/** @property {number} - How many pixels padding around tiles */
|
|
1177
1262
|
padding: number;
|
|
1263
|
+
/** @property {TextureInfo} - The texture info for this tile */
|
|
1264
|
+
textureInfo: TextureInfo;
|
|
1178
1265
|
/** Returns a copy of this tile offset by a vector
|
|
1179
1266
|
* @param {Vector2} offset - Offset to apply in pixels
|
|
1180
1267
|
* @return {TileInfo}
|
|
@@ -1185,26 +1272,31 @@ declare module "littlejsengine" {
|
|
|
1185
1272
|
* @return {TileInfo}
|
|
1186
1273
|
*/
|
|
1187
1274
|
frame(frame: number): TileInfo;
|
|
1188
|
-
/**
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1275
|
+
/**
|
|
1276
|
+
* Set this tile to use a full image
|
|
1277
|
+
* @param {HTMLImageElement|OffscreenCanvas} image
|
|
1278
|
+
* @param {WebGLTexture} [glTexture] - webgl texture
|
|
1279
|
+
* @return {TileInfo}
|
|
1280
|
+
*/
|
|
1281
|
+
setFullImage(image: HTMLImageElement | OffscreenCanvas, glTexture?: WebGLTexture): TileInfo;
|
|
1192
1282
|
}
|
|
1193
1283
|
/** Texture Info - Stores info about each texture */
|
|
1194
1284
|
export class TextureInfo {
|
|
1195
1285
|
/**
|
|
1196
1286
|
* Create a TextureInfo, called automatically by the engine
|
|
1197
|
-
* @param {HTMLImageElement} image
|
|
1287
|
+
* @param {HTMLImageElement|OffscreenCanvas} image
|
|
1288
|
+
* @param {WebGLTexture} [glTexture] - webgl texture
|
|
1198
1289
|
*/
|
|
1199
|
-
constructor(image: HTMLImageElement);
|
|
1290
|
+
constructor(image: HTMLImageElement | OffscreenCanvas, glTexture?: WebGLTexture);
|
|
1200
1291
|
/** @property {HTMLImageElement} - image source */
|
|
1201
|
-
image: HTMLImageElement;
|
|
1292
|
+
image: OffscreenCanvas | HTMLImageElement;
|
|
1202
1293
|
/** @property {Vector2} - size of the image */
|
|
1203
1294
|
size: Vector2;
|
|
1204
1295
|
/** @property {Vector2} - inverse of the size, cached for rendering */
|
|
1205
1296
|
sizeInverse: Vector2;
|
|
1206
1297
|
/** @property {WebGLTexture} - webgl texture */
|
|
1207
1298
|
glTexture: WebGLTexture;
|
|
1299
|
+
createWebGLTexture(): void;
|
|
1208
1300
|
}
|
|
1209
1301
|
/**
|
|
1210
1302
|
* LittleJS Drawing System
|
|
@@ -1276,7 +1368,7 @@ declare module "littlejsengine" {
|
|
|
1276
1368
|
* @param {Color} [color=(1,1,1,1)]
|
|
1277
1369
|
* @param {number} [angle]
|
|
1278
1370
|
* @param {boolean} [useWebGL=glEnable]
|
|
1279
|
-
* @param {boolean} [screenSpace
|
|
1371
|
+
* @param {boolean} [screenSpace]
|
|
1280
1372
|
* @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context]
|
|
1281
1373
|
* @memberof Draw */
|
|
1282
1374
|
export function drawRect(pos: Vector2, size?: Vector2, color?: Color, angle?: number, useWebGL?: boolean, screenSpace?: boolean, context?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
|
|
@@ -1285,52 +1377,58 @@ declare module "littlejsengine" {
|
|
|
1285
1377
|
* @param {Vector2} posB
|
|
1286
1378
|
* @param {number} [thickness]
|
|
1287
1379
|
* @param {Color} [color=(1,1,1,1)]
|
|
1380
|
+
* @param {Vector2} [pos=(0,0)] - Offset to apply
|
|
1381
|
+
* @param {number} [angle] - Angle to rotate by
|
|
1288
1382
|
* @param {boolean} [useWebGL=glEnable]
|
|
1289
|
-
* @param {boolean} [screenSpace
|
|
1383
|
+
* @param {boolean} [screenSpace]
|
|
1290
1384
|
* @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context]
|
|
1291
1385
|
* @memberof Draw */
|
|
1292
|
-
export function drawLine(posA: Vector2, posB: Vector2, thickness?: number, color?: Color, useWebGL?: boolean, screenSpace?: boolean, context?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
|
|
1386
|
+
export function drawLine(posA: Vector2, posB: Vector2, thickness?: number, color?: Color, pos?: Vector2, angle?: number, useWebGL?: boolean, screenSpace?: boolean, context?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
|
|
1293
1387
|
/** Draw colored polygon using passed in points
|
|
1294
|
-
* @param {Array<Vector2>}
|
|
1388
|
+
* @param {Array<Vector2>} points - Array of Vector2 points
|
|
1295
1389
|
* @param {Color} [color=(1,1,1,1)]
|
|
1296
|
-
* @param {number} [lineWidth
|
|
1390
|
+
* @param {number} [lineWidth]
|
|
1297
1391
|
* @param {Color} [lineColor=(0,0,0,1)]
|
|
1298
|
-
* @param {
|
|
1299
|
-
* @param {
|
|
1392
|
+
* @param {Vector2} [pos=(0,0)] - Offset to apply
|
|
1393
|
+
* @param {number} [angle] - Angle to rotate by
|
|
1394
|
+
* @param {boolean} [useWebGL] - Webgl not supported
|
|
1395
|
+
* @param {boolean} [screenSpace]
|
|
1396
|
+
* @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context=drawContext]
|
|
1300
1397
|
* @memberof Draw */
|
|
1301
|
-
export function drawPoly(points: Array<Vector2>, color?: Color, lineWidth?: number, lineColor?: Color, screenSpace?: boolean, context?: CanvasRenderingContext2D): void;
|
|
1398
|
+
export function drawPoly(points: Array<Vector2>, color?: Color, lineWidth?: number, lineColor?: Color, pos?: Vector2, angle?: number, useWebGL?: boolean, screenSpace?: boolean, context?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
|
|
1302
1399
|
/** Draw colored ellipse using passed in point
|
|
1303
1400
|
* @param {Vector2} pos
|
|
1304
|
-
* @param {
|
|
1305
|
-
* @param {number} [height=1]
|
|
1306
|
-
* @param {number} [angle=0]
|
|
1401
|
+
* @param {Vector2} [size=(1,1)]
|
|
1307
1402
|
* @param {Color} [color=(1,1,1,1)]
|
|
1308
|
-
* @param {number} [
|
|
1403
|
+
* @param {number} [angle]
|
|
1404
|
+
* @param {number} [lineWidth]
|
|
1309
1405
|
* @param {Color} [lineColor=(0,0,0,1)]
|
|
1310
|
-
* @param {boolean} [
|
|
1311
|
-
* @param {
|
|
1406
|
+
* @param {boolean} [useWebGL] - Webgl not supported
|
|
1407
|
+
* @param {boolean} [screenSpace]
|
|
1408
|
+
* @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context=drawContext]
|
|
1312
1409
|
* @memberof Draw */
|
|
1313
|
-
export function drawEllipse(pos: Vector2,
|
|
1410
|
+
export function drawEllipse(pos: Vector2, size?: Vector2, color?: Color, angle?: number, lineWidth?: number, lineColor?: Color, useWebGL?: boolean, screenSpace?: boolean, context?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
|
|
1314
1411
|
/** Draw colored circle using passed in point
|
|
1315
1412
|
* @param {Vector2} pos
|
|
1316
1413
|
* @param {number} [radius=1]
|
|
1317
1414
|
* @param {Color} [color=(1,1,1,1)]
|
|
1318
1415
|
* @param {number} [lineWidth=0]
|
|
1319
1416
|
* @param {Color} [lineColor=(0,0,0,1)]
|
|
1417
|
+
* @param {boolean} [useWebGL] - Webgl not supported
|
|
1320
1418
|
* @param {boolean} [screenSpace=false]
|
|
1321
|
-
* @param {CanvasRenderingContext2D} [context=
|
|
1419
|
+
* @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context=drawContext]
|
|
1322
1420
|
* @memberof Draw */
|
|
1323
|
-
export function drawCircle(pos: Vector2, radius?: number, color?: Color, lineWidth?: number, lineColor?: Color, screenSpace?: boolean, context?: CanvasRenderingContext2D): void;
|
|
1421
|
+
export function drawCircle(pos: Vector2, radius?: number, color?: Color, lineWidth?: number, lineColor?: Color, useWebGL?: boolean, screenSpace?: boolean, context?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
|
|
1324
1422
|
/** Draw directly to a 2d canvas context in world space
|
|
1325
1423
|
* @param {Vector2} pos
|
|
1326
1424
|
* @param {Vector2} size
|
|
1327
1425
|
* @param {number} angle
|
|
1328
|
-
* @param {boolean} mirror
|
|
1329
|
-
* @param {Function} drawFunction
|
|
1426
|
+
* @param {boolean} [mirror]
|
|
1427
|
+
* @param {Function} [drawFunction]
|
|
1330
1428
|
* @param {boolean} [screenSpace=false]
|
|
1331
|
-
* @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context=
|
|
1429
|
+
* @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context=drawContext]
|
|
1332
1430
|
* @memberof Draw */
|
|
1333
|
-
export function drawCanvas2D(pos: Vector2, size: Vector2, angle
|
|
1431
|
+
export function drawCanvas2D(pos: Vector2, size: Vector2, angle?: number, mirror?: boolean, drawFunction?: Function, screenSpace?: boolean, context?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
|
|
1334
1432
|
/** Draw text on main canvas in world space
|
|
1335
1433
|
* Automatically splits new lines into rows
|
|
1336
1434
|
* @param {string} text
|
|
@@ -1342,7 +1440,7 @@ declare module "littlejsengine" {
|
|
|
1342
1440
|
* @param {CanvasTextAlign} [textAlign='center']
|
|
1343
1441
|
* @param {string} [font=fontDefault]
|
|
1344
1442
|
* @param {number} [maxWidth]
|
|
1345
|
-
* @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context=
|
|
1443
|
+
* @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context=drawContext]
|
|
1346
1444
|
* @memberof Draw */
|
|
1347
1445
|
export function drawText(text: string, pos: Vector2, size?: number, color?: Color, lineWidth?: number, lineColor?: Color, textAlign?: CanvasTextAlign, font?: string, maxWidth?: number, context?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
|
|
1348
1446
|
/** Draw text on overlay canvas in world space
|
|
@@ -1374,10 +1472,9 @@ declare module "littlejsengine" {
|
|
|
1374
1472
|
export function drawTextScreen(text: string, pos: Vector2, size?: number, color?: Color, lineWidth?: number, lineColor?: Color, textAlign?: CanvasTextAlign, font?: string, maxWidth?: number, context?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
|
|
1375
1473
|
/** Enable normal or additive blend mode
|
|
1376
1474
|
* @param {boolean} [additive]
|
|
1377
|
-
* @param {
|
|
1378
|
-
* @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context=mainContext]
|
|
1475
|
+
* @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context]
|
|
1379
1476
|
* @memberof Draw */
|
|
1380
|
-
export function setBlendMode(additive?: boolean,
|
|
1477
|
+
export function setBlendMode(additive?: boolean, context?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
|
|
1381
1478
|
/** Combines all LittleJS canvases onto the main canvas and clears them
|
|
1382
1479
|
* This is necessary for things like saving a screenshot
|
|
1383
1480
|
* @memberof Draw */
|
|
@@ -1440,12 +1537,13 @@ declare module "littlejsengine" {
|
|
|
1440
1537
|
/**
|
|
1441
1538
|
* LittleJS WebGL Interface
|
|
1442
1539
|
* - All webgl used by the engine is wrapped up here
|
|
1540
|
+
* - Will fall back to 2D canvas rendering if webgl is not supported
|
|
1443
1541
|
* - For normal stuff you won't need to see or call anything in this file
|
|
1444
1542
|
* - For advanced stuff there are helper functions to create shaders, textures, etc
|
|
1445
1543
|
* - Can be disabled with glEnable to revert to 2D canvas rendering
|
|
1446
1544
|
* - Batches sprite rendering on GPU for incredibly fast performance
|
|
1447
1545
|
* - Sprite transform math is done in the shader where possible
|
|
1448
|
-
* - Supports shadertoy style post processing shaders
|
|
1546
|
+
* - Supports shadertoy style post processing shaders via plugin
|
|
1449
1547
|
* @namespace WebGL
|
|
1450
1548
|
*/
|
|
1451
1549
|
/** The WebGL canvas which appears above the main canvas and below the overlay canvas
|
|
@@ -1462,11 +1560,10 @@ declare module "littlejsengine" {
|
|
|
1462
1560
|
* @return {WebGLShader}
|
|
1463
1561
|
* @memberof WebGL */
|
|
1464
1562
|
export function glCompileShader(source: string, type: number): WebGLShader;
|
|
1465
|
-
/**
|
|
1563
|
+
/** Flush any sprites still in the buffer and copy to main canvas
|
|
1466
1564
|
* @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} context
|
|
1467
|
-
* @param {boolean} [forceDraw]
|
|
1468
1565
|
* @memberof WebGL */
|
|
1469
|
-
export function glCopyToContext(context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D
|
|
1566
|
+
export function glCopyToContext(context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
|
|
1470
1567
|
/** Create WebGL program with given shaders
|
|
1471
1568
|
* @param {String} vsSource
|
|
1472
1569
|
* @param {String} fsSource
|
|
@@ -1474,37 +1571,42 @@ declare module "littlejsengine" {
|
|
|
1474
1571
|
* @memberof WebGL */
|
|
1475
1572
|
export function glCreateProgram(vsSource: string, fsSource: string): WebGLProgram;
|
|
1476
1573
|
/** Create WebGL texture from an image and init the texture settings
|
|
1477
|
-
* @param {HTMLImageElement} image
|
|
1574
|
+
* @param {HTMLImageElement|HTMLCanvasElement|OffscreenCanvas} [image]
|
|
1478
1575
|
* @return {WebGLTexture}
|
|
1479
1576
|
* @memberof WebGL */
|
|
1480
|
-
export function glCreateTexture(image
|
|
1577
|
+
export function glCreateTexture(image?: HTMLImageElement | HTMLCanvasElement | OffscreenCanvas): WebGLTexture;
|
|
1578
|
+
/** Deletes a WebGL texture
|
|
1579
|
+
* @param {WebGLTexture} [texture]
|
|
1580
|
+
* @memberof WebGL */
|
|
1581
|
+
export function glDeleteTexture(texture?: WebGLTexture): void;
|
|
1481
1582
|
/** Set WebGL texture data from an image
|
|
1482
1583
|
* @param {WebGLTexture} texture
|
|
1483
|
-
* @param {HTMLImageElement} image
|
|
1584
|
+
* @param {HTMLImageElement|HTMLCanvasElement|OffscreenCanvas} image
|
|
1484
1585
|
* @memberof WebGL */
|
|
1485
|
-
export function glSetTextureData(texture: WebGLTexture, image: HTMLImageElement): void;
|
|
1586
|
+
export function glSetTextureData(texture: WebGLTexture, image: HTMLImageElement | HTMLCanvasElement | OffscreenCanvas): void;
|
|
1486
1587
|
/** Add a sprite to the gl draw list, used by all gl draw functions
|
|
1487
1588
|
* @param {Number} x
|
|
1488
1589
|
* @param {Number} y
|
|
1489
1590
|
* @param {Number} sizeX
|
|
1490
1591
|
* @param {Number} sizeY
|
|
1491
|
-
* @param {Number} angle
|
|
1492
|
-
* @param {Number} uv0X
|
|
1493
|
-
* @param {Number} uv0Y
|
|
1494
|
-
* @param {Number} uv1X
|
|
1495
|
-
* @param {Number} uv1Y
|
|
1592
|
+
* @param {Number} [angle]
|
|
1593
|
+
* @param {Number} [uv0X]
|
|
1594
|
+
* @param {Number} [uv0Y]
|
|
1595
|
+
* @param {Number} [uv1X]
|
|
1596
|
+
* @param {Number} [uv1Y]
|
|
1496
1597
|
* @param {Number} [rgba=-1] - white is -1
|
|
1497
1598
|
* @param {Number} [rgbaAdditive=0] - black is 0
|
|
1498
1599
|
* @memberof WebGL */
|
|
1499
|
-
export function glDraw(x: number, y: number, sizeX: number, sizeY: number, angle
|
|
1600
|
+
export function glDraw(x: number, y: number, sizeX: number, sizeY: number, angle?: number, uv0X?: number, uv0Y?: number, uv1X?: number, uv1Y?: number, rgba?: number, rgbaAdditive?: number): void;
|
|
1500
1601
|
/** Draw all sprites and clear out the buffer, called automatically by the system whenever necessary
|
|
1501
1602
|
* @memberof WebGL */
|
|
1502
1603
|
export function glFlush(): void;
|
|
1503
1604
|
/** Set the WebGl texture, called automatically if using multiple textures
|
|
1504
1605
|
* - This may also flush the gl buffer resulting in more draw calls and worse performance
|
|
1505
1606
|
* @param {WebGLTexture} texture
|
|
1607
|
+
* @param {boolean} wrap - Should the texture wrap or clamp
|
|
1506
1608
|
* @memberof WebGL */
|
|
1507
|
-
export function glSetTexture(texture: WebGLTexture): void;
|
|
1609
|
+
export function glSetTexture(texture: WebGLTexture, wrap?: boolean): void;
|
|
1508
1610
|
/** Set anti-aliasing for webgl canvas
|
|
1509
1611
|
* @param {boolean} [antialias]
|
|
1510
1612
|
* @memberof WebGL */
|
|
@@ -1558,7 +1660,15 @@ declare module "littlejsengine" {
|
|
|
1558
1660
|
export function keyDirection(up?: string, down?: string, left?: string, right?: string): Vector2;
|
|
1559
1661
|
/** Clears all input
|
|
1560
1662
|
* @memberof Input */
|
|
1561
|
-
export function
|
|
1663
|
+
export function inputClear(): void;
|
|
1664
|
+
/** Clears an input key state
|
|
1665
|
+
* @param {string|number} key
|
|
1666
|
+
* @param {number} [device]
|
|
1667
|
+
* @param {boolean} [clearDown=true]
|
|
1668
|
+
* @param {boolean} [clearPressed=true]
|
|
1669
|
+
* @param {boolean} [clearReleased=true]
|
|
1670
|
+
* @memberof Input */
|
|
1671
|
+
export function inputClearKey(key: string | number, device?: number, clearDown?: boolean, clearPressed?: boolean, clearReleased?: boolean): void;
|
|
1562
1672
|
/** Returns true if mouse button is down
|
|
1563
1673
|
* @function
|
|
1564
1674
|
* @param {number} button
|
|
@@ -1585,6 +1695,14 @@ declare module "littlejsengine" {
|
|
|
1585
1695
|
* @type {Vector2}
|
|
1586
1696
|
* @memberof Input */
|
|
1587
1697
|
export let mousePosScreen: Vector2;
|
|
1698
|
+
/** Mouse movement delta in world space
|
|
1699
|
+
* @type {Vector2}
|
|
1700
|
+
* @memberof Input */
|
|
1701
|
+
export let mouseDelta: Vector2;
|
|
1702
|
+
/** Mouse movement delta in screen space
|
|
1703
|
+
* @type {Vector2}
|
|
1704
|
+
* @memberof Input */
|
|
1705
|
+
export let mouseDeltaScreen: Vector2;
|
|
1588
1706
|
/** Mouse wheel delta this frame
|
|
1589
1707
|
* @type {number}
|
|
1590
1708
|
* @memberof Input */
|
|
@@ -1637,6 +1755,16 @@ declare module "littlejsengine" {
|
|
|
1637
1755
|
/** True if a touch device has been detected
|
|
1638
1756
|
* @memberof Input */
|
|
1639
1757
|
export const isTouchDevice: boolean;
|
|
1758
|
+
/** Request to lock the pointer, does not work on touch devices
|
|
1759
|
+
* @memberof Input */
|
|
1760
|
+
export function pointerLockRequest(): void;
|
|
1761
|
+
/** Request to unlock the pointer
|
|
1762
|
+
* @memberof Input */
|
|
1763
|
+
export function pointerLockExit(): void;
|
|
1764
|
+
/** Check if pointer is locked (true if locked)
|
|
1765
|
+
* @return {boolean}
|
|
1766
|
+
* @memberof Input */
|
|
1767
|
+
export function pointerLockIsActive(): boolean;
|
|
1640
1768
|
/**
|
|
1641
1769
|
* Sound Object - Stores a sound for later use and can be played positionally
|
|
1642
1770
|
*
|
|
@@ -1678,8 +1806,10 @@ declare module "littlejsengine" {
|
|
|
1678
1806
|
* @param {number} [volume] - How much to scale volume by
|
|
1679
1807
|
*/
|
|
1680
1808
|
setVolume(volume?: number): void;
|
|
1681
|
-
/** Stop the last instance of this sound that was played
|
|
1682
|
-
|
|
1809
|
+
/** Stop the last instance of this sound that was played
|
|
1810
|
+
* @param {number} [fadeTime] - How long to fade out (seconds)
|
|
1811
|
+
*/
|
|
1812
|
+
stop(fadeTime?: number): void;
|
|
1683
1813
|
/** Get source of most recent instance of this sound that was played
|
|
1684
1814
|
* @return {AudioBufferSourceNode}
|
|
1685
1815
|
*/
|
|
@@ -1859,45 +1989,45 @@ declare module "littlejsengine" {
|
|
|
1859
1989
|
drawSize: any;
|
|
1860
1990
|
/** @property {TileInfo} - Tile info to render object (undefined is untextured) */
|
|
1861
1991
|
tileInfo: TileInfo;
|
|
1862
|
-
/** @property {number}
|
|
1992
|
+
/** @property {number} - Angle to rotate the object */
|
|
1863
1993
|
angle: number;
|
|
1864
|
-
/** @property {Color}
|
|
1994
|
+
/** @property {Color} - Color to apply when rendered */
|
|
1865
1995
|
color: Color;
|
|
1866
|
-
/** @property {Color}
|
|
1996
|
+
/** @property {Color} - Additive color to apply when rendered */
|
|
1867
1997
|
additiveColor: any;
|
|
1868
1998
|
/** @property {boolean} - Should it flip along y axis when rendered */
|
|
1869
1999
|
mirror: boolean;
|
|
1870
|
-
/** @property {number} [mass=objectDefaultMass]
|
|
2000
|
+
/** @property {number} [mass=objectDefaultMass] - How heavy the object is, static if 0 */
|
|
1871
2001
|
mass: number;
|
|
1872
|
-
/** @property {number} [damping=objectDefaultDamping]
|
|
2002
|
+
/** @property {number} [damping=objectDefaultDamping] - How much to slow down velocity each frame (0-1) */
|
|
1873
2003
|
damping: number;
|
|
1874
2004
|
/** @property {number} [angleDamping=objectDefaultAngleDamping] - How much to slow down rotation each frame (0-1) */
|
|
1875
2005
|
angleDamping: number;
|
|
1876
|
-
/** @property {number} [
|
|
1877
|
-
|
|
1878
|
-
/** @property {number} [friction=objectDefaultFriction]
|
|
2006
|
+
/** @property {number} [restitution=objectDefaultRestitution] - How bouncy the object is when colliding (0-1) */
|
|
2007
|
+
restitution: number;
|
|
2008
|
+
/** @property {number} [friction=objectDefaultFriction] - How much friction to apply when sliding (0-1) */
|
|
1879
2009
|
friction: number;
|
|
1880
|
-
/** @property {number}
|
|
2010
|
+
/** @property {number} - How much to scale gravity by for this object */
|
|
1881
2011
|
gravityScale: number;
|
|
1882
|
-
/** @property {number}
|
|
2012
|
+
/** @property {number} - Objects are sorted by render order */
|
|
1883
2013
|
renderOrder: number;
|
|
1884
2014
|
/** @property {Vector2} - Velocity of the object */
|
|
1885
2015
|
velocity: Vector2;
|
|
1886
|
-
/** @property {number}
|
|
2016
|
+
/** @property {number} - Angular velocity of the object */
|
|
1887
2017
|
angleVelocity: number;
|
|
1888
|
-
/** @property {number}
|
|
2018
|
+
/** @property {number} - Track when object was created */
|
|
1889
2019
|
spawnTime: number;
|
|
1890
|
-
/** @property {Array<EngineObject>}
|
|
2020
|
+
/** @property {Array<EngineObject>} - List of children of this object */
|
|
1891
2021
|
children: any[];
|
|
1892
|
-
/** @property {boolean}
|
|
1893
|
-
|
|
2022
|
+
/** @property {boolean} - Limit object speed along x and y axis */
|
|
2023
|
+
clampSpeed: boolean;
|
|
1894
2024
|
/** @property {EngineObject} - Object we are standing on, if any */
|
|
1895
2025
|
groundObject: EngineObject | TileCollisionLayer;
|
|
1896
2026
|
/** @property {EngineObject} - Parent of object if in local space */
|
|
1897
2027
|
parent: any;
|
|
1898
|
-
/** @property {Vector2}
|
|
2028
|
+
/** @property {Vector2} - Local position if child */
|
|
1899
2029
|
localPos: Vector2;
|
|
1900
|
-
/** @property {number}
|
|
2030
|
+
/** @property {number} - Local angle if child */
|
|
1901
2031
|
localAngle: number;
|
|
1902
2032
|
/** @property {boolean} - Object collides with the tile collision */
|
|
1903
2033
|
collideTiles: boolean;
|
|
@@ -1913,7 +2043,7 @@ declare module "littlejsengine" {
|
|
|
1913
2043
|
update(): void;
|
|
1914
2044
|
/** Render the object, draws a tile by default, automatically called each frame, sorted by renderOrder */
|
|
1915
2045
|
render(): void;
|
|
1916
|
-
/** Destroy this object, destroy
|
|
2046
|
+
/** Destroy this object, destroy its children, detach it's parent, and mark it for removal */
|
|
1917
2047
|
destroy(): void;
|
|
1918
2048
|
destroyed: number;
|
|
1919
2049
|
/** Convert from local space to world space
|
|
@@ -1944,6 +2074,9 @@ declare module "littlejsengine" {
|
|
|
1944
2074
|
/** Apply acceleration to this object (adjust velocity, not affected by mass)
|
|
1945
2075
|
* @param {Vector2} acceleration */
|
|
1946
2076
|
applyAcceleration(acceleration: Vector2): void;
|
|
2077
|
+
/** Apply angular acceleration to this object
|
|
2078
|
+
* @param {number} acceleration */
|
|
2079
|
+
applyAngularAcceleration(acceleration: number): void;
|
|
1947
2080
|
/** Apply force to this object (adjust velocity, affected by mass)
|
|
1948
2081
|
* @param {Vector2} force */
|
|
1949
2082
|
applyForce(force: Vector2): void;
|
|
@@ -1987,22 +2120,34 @@ declare module "littlejsengine" {
|
|
|
1987
2120
|
* @param {Vector2} pos
|
|
1988
2121
|
* @return {number}
|
|
1989
2122
|
* @memberof TileCollision */
|
|
1990
|
-
export function
|
|
2123
|
+
export function tileCollisionGetData(pos: Vector2): number;
|
|
1991
2124
|
/** Check if a tile layer collides with another object
|
|
1992
2125
|
* @param {Vector2} pos
|
|
1993
2126
|
* @param {Vector2} [size=(0,0)]
|
|
1994
|
-
* @param {EngineObject} [object]
|
|
2127
|
+
* @param {EngineObject} [object] - An object or undefined for generic test
|
|
2128
|
+
* @param {boolean} [solidOnly] - Only check solid layers if true
|
|
1995
2129
|
* @return {TileCollisionLayer}
|
|
1996
2130
|
* @memberof TileCollision */
|
|
1997
|
-
export function tileCollisionTest(pos: Vector2, size?: Vector2, object?: EngineObject): TileCollisionLayer;
|
|
2131
|
+
export function tileCollisionTest(pos: Vector2, size?: Vector2, object?: EngineObject, solidOnly?: boolean): TileCollisionLayer;
|
|
1998
2132
|
/** Return the center of first tile hit, undefined if nothing was hit.
|
|
1999
2133
|
* This does not return the exact intersection, but the center of the tile hit.
|
|
2000
2134
|
* @param {Vector2} posStart
|
|
2001
2135
|
* @param {Vector2} posEnd
|
|
2002
|
-
* @param {EngineObject} [object]
|
|
2136
|
+
* @param {EngineObject} [object] - An object or undefined for generic test
|
|
2137
|
+
* @param {boolean} [solidOnly=true] - Only check solid layers if true
|
|
2003
2138
|
* @return {Vector2}
|
|
2004
2139
|
* @memberof TileCollision */
|
|
2005
|
-
export function tileCollisionRaycast(posStart: Vector2, posEnd: Vector2, object?: EngineObject): Vector2;
|
|
2140
|
+
export function tileCollisionRaycast(posStart: Vector2, posEnd: Vector2, object?: EngineObject, solidOnly?: boolean): Vector2;
|
|
2141
|
+
/**
|
|
2142
|
+
* Load tile layers from exported data
|
|
2143
|
+
* @param {Object} tileMapData - Level data from exported data
|
|
2144
|
+
* @param {TileInfo} [tileInfo] - Default tile info (used for size and texture)
|
|
2145
|
+
* @param {number} [renderOrder] - Render order of the top layer
|
|
2146
|
+
* @param {number} [collisionLayer] - Layer to use for collision if any
|
|
2147
|
+
* @param {boolean} [draw] - Should the layer be drawn automatically
|
|
2148
|
+
* @return {Array<TileCollisionLayer>}
|
|
2149
|
+
* @memberof TileCollision */
|
|
2150
|
+
export function tileCollisionLoad(tileMapData: any, tileInfo?: TileInfo, renderOrder?: number, collisionLayer?: number, draw?: boolean): Array<TileCollisionLayer>;
|
|
2006
2151
|
/**
|
|
2007
2152
|
* Tile layer data object stores info about how to draw a tile
|
|
2008
2153
|
* @example
|
|
@@ -2031,33 +2176,85 @@ declare module "littlejsengine" {
|
|
|
2031
2176
|
/** Set this tile to clear, it will not be rendered */
|
|
2032
2177
|
clear(): void;
|
|
2033
2178
|
}
|
|
2179
|
+
/**
|
|
2180
|
+
* Canvas Layer - cached off screen rendering system
|
|
2181
|
+
* - Contains an offscreen canvas that can be rendered to
|
|
2182
|
+
* - Webgl rendering is optional, call useWebGL to enable
|
|
2183
|
+
* @extends EngineObject
|
|
2184
|
+
* @example
|
|
2185
|
+
* const canvasLayer = new CanvasLayer(vec2(), vec2(200,100));
|
|
2186
|
+
*/
|
|
2187
|
+
export class CanvasLayer extends EngineObject {
|
|
2188
|
+
/** Create a canvas layer object
|
|
2189
|
+
* @param {Vector2} [position] - World space position of the layer
|
|
2190
|
+
* @param {Vector2} [size] - World space size of the layer
|
|
2191
|
+
* @param {number} [angle] - Angle the layer is rotated by
|
|
2192
|
+
* @param {number} [renderOrder] - Objects sorted by renderOrder
|
|
2193
|
+
* @param {Vector2} [canvasSize] - Default size of canvas, can be changed later
|
|
2194
|
+
*/
|
|
2195
|
+
constructor(position?: Vector2, size?: Vector2, angle?: number, renderOrder?: number, canvasSize?: Vector2);
|
|
2196
|
+
/** @property {HTMLCanvasElement} - The canvas used by this layer */
|
|
2197
|
+
canvas: OffscreenCanvas;
|
|
2198
|
+
/** @property {OffscreenCanvasRenderingContext2D} - The 2D canvas context used by this layer */
|
|
2199
|
+
context: OffscreenCanvasRenderingContext2D;
|
|
2200
|
+
/** @property {WebGLTexture} - Texture if using webgl for this layer, call useWebGL to enable */
|
|
2201
|
+
glTexture: WebGLTexture;
|
|
2202
|
+
/** Draw this canvas layer centered in world space, with color applied if using WebGL
|
|
2203
|
+
* @param {Vector2} pos - Center in world space
|
|
2204
|
+
* @param {Vector2} [size] - Size in world space
|
|
2205
|
+
* @param {Color} [color] - Color to modulate with
|
|
2206
|
+
* @param {number} [angle] - Angle to rotate by
|
|
2207
|
+
* @param {boolean} [mirror] - If true image is flipped along the Y axis
|
|
2208
|
+
* @param {Color} [additiveColor] - Additive color to be applied if any
|
|
2209
|
+
* @param {boolean} [screenSpace] - If true the pos and size are in screen space
|
|
2210
|
+
* @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context] - Canvas 2D context to draw to
|
|
2211
|
+
* @memberof Draw */
|
|
2212
|
+
draw(pos: Vector2, size?: Vector2, angle?: number, color?: Color, mirror?: boolean, additiveColor?: Color, screenSpace?: boolean, context?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
|
|
2213
|
+
/** Draw onto the layer canvas in world space (bypass webgl)
|
|
2214
|
+
* @param {Vector2} pos
|
|
2215
|
+
* @param {Vector2} size
|
|
2216
|
+
* @param {number} angle
|
|
2217
|
+
* @param {boolean} mirror
|
|
2218
|
+
* @param {Function} drawFunction */
|
|
2219
|
+
drawCanvas2D(pos: Vector2, size: Vector2, angle: number, mirror: boolean, drawFunction: Function): void;
|
|
2220
|
+
/** Draw a tile onto the layer canvas in world space
|
|
2221
|
+
* @param {Vector2} pos
|
|
2222
|
+
* @param {Vector2} [size=(1,1)]
|
|
2223
|
+
* @param {TileInfo} [tileInfo]
|
|
2224
|
+
* @param {Color} [color=(1,1,1,1)]
|
|
2225
|
+
* @param {number} [angle=0]
|
|
2226
|
+
* @param {boolean} [mirror=0] */
|
|
2227
|
+
drawTile(pos: Vector2, size?: Vector2, tileInfo?: TileInfo, color?: Color, angle?: number, mirror?: boolean): void;
|
|
2228
|
+
/** Draw a rectangle onto the layer canvas in world space
|
|
2229
|
+
* @param {Vector2} pos
|
|
2230
|
+
* @param {Vector2} [size=(1,1)]
|
|
2231
|
+
* @param {Color} [color=(1,1,1,1)]
|
|
2232
|
+
* @param {number} [angle=0] */
|
|
2233
|
+
drawRect(pos: Vector2, size?: Vector2, color?: Color, angle?: number): void;
|
|
2234
|
+
/** Create or update the webgl texture for this layer
|
|
2235
|
+
* @param {boolean} [enable] - enable webgl rendering and update the texture */
|
|
2236
|
+
useWebGL(enable?: boolean): void;
|
|
2237
|
+
}
|
|
2034
2238
|
/**
|
|
2035
2239
|
* Tile Layer - cached rendering system for tile layers
|
|
2036
2240
|
* - Each Tile layer is rendered to an off screen canvas
|
|
2037
2241
|
* - To allow dynamic modifications, layers are rendered using canvas 2d
|
|
2038
2242
|
* - Some devices like mobile phones are limited to 4k texture resolution
|
|
2039
2243
|
* - For with 16x16 tiles this limits layers to 256x256 on mobile devices
|
|
2040
|
-
* @extends
|
|
2244
|
+
* @extends CanvasLayer
|
|
2041
2245
|
* @example
|
|
2042
2246
|
* const tileLayer = new TileLayer(vec2(), vec2(200,100));
|
|
2043
2247
|
*/
|
|
2044
|
-
export class TileLayer extends
|
|
2248
|
+
export class TileLayer extends CanvasLayer {
|
|
2045
2249
|
/** Create a tile layer object
|
|
2046
|
-
* @param {Vector2}
|
|
2047
|
-
* @param {Vector2}
|
|
2048
|
-
* @param {TileInfo} [tileInfo]
|
|
2049
|
-
* @param {Vector2} [scale=(1,1)]
|
|
2050
|
-
* @param {number} [renderOrder]
|
|
2250
|
+
* @param {Vector2} position - World space position
|
|
2251
|
+
* @param {Vector2} size - World space size
|
|
2252
|
+
* @param {TileInfo} [tileInfo] - Default tile info for layer (used for size and texture)
|
|
2253
|
+
* @param {Vector2} [scale=(1,1)] - How much to scale this layer when rendered
|
|
2254
|
+
* @param {number} [renderOrder] - Objects are sorted by renderOrder
|
|
2255
|
+
* @param {boolean} [useWebGL=glEnable] - Use accelerated WebGL rendering
|
|
2051
2256
|
*/
|
|
2052
|
-
constructor(position
|
|
2053
|
-
/** @property {HTMLCanvasElement} - The canvas used by this tile layer */
|
|
2054
|
-
canvas: HTMLCanvasElement;
|
|
2055
|
-
/** @property {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} - The 2D canvas context used by this tile layer */
|
|
2056
|
-
context: CanvasRenderingContext2D;
|
|
2057
|
-
/** @property {Vector2} - How much to scale this layer when rendered */
|
|
2058
|
-
scale: Vector2;
|
|
2059
|
-
/** @property {boolean} - If true this layer will render to overlay canvas and appear above all objects */
|
|
2060
|
-
isOverlay: boolean;
|
|
2257
|
+
constructor(position: Vector2, size: Vector2, tileInfo?: TileInfo, scale?: Vector2, renderOrder?: number, useWebGL?: boolean);
|
|
2061
2258
|
data: TileLayerData[];
|
|
2062
2259
|
/** Draw all the tile data to an offscreen canvas
|
|
2063
2260
|
* - This may be slow in some browsers but only needs to be done once */
|
|
@@ -2075,13 +2272,6 @@ declare module "littlejsengine" {
|
|
|
2075
2272
|
* @param {boolean} [clear] - should the old tile be cleared out
|
|
2076
2273
|
*/
|
|
2077
2274
|
drawTileData(layerPos: Vector2, clear?: boolean): void;
|
|
2078
|
-
/** Draw directly to the 2D canvas in world space (bypass webgl)
|
|
2079
|
-
* @param {Vector2} pos
|
|
2080
|
-
* @param {Vector2} size
|
|
2081
|
-
* @param {number} angle
|
|
2082
|
-
* @param {boolean} mirror
|
|
2083
|
-
* @param {Function} drawFunction */
|
|
2084
|
-
drawCanvas2D(pos: Vector2, size: Vector2, angle: number, mirror: boolean, drawFunction: Function): void;
|
|
2085
2275
|
/** Set data at a given position in the array
|
|
2086
2276
|
* @param {Vector2} layerPos - Local position in array
|
|
2087
2277
|
* @param {TileLayerData} data - Data to set
|
|
@@ -2091,22 +2281,8 @@ declare module "littlejsengine" {
|
|
|
2091
2281
|
* @param {Vector2} layerPos - Local position in array
|
|
2092
2282
|
* @return {TileLayerData} */
|
|
2093
2283
|
getData(layerPos: Vector2): TileLayerData;
|
|
2094
|
-
/** @type {[HTMLCanvasElement, CanvasRenderingContext2D, Vector2, Vector2, number]} */
|
|
2095
|
-
savedRenderSettings: [HTMLCanvasElement, CanvasRenderingContext2D, Vector2, Vector2, number];
|
|
2096
|
-
/** Draw a tile directly onto the layer canvas in world space
|
|
2097
|
-
* @param {Vector2} pos
|
|
2098
|
-
* @param {Vector2} [size=(1,1)]
|
|
2099
|
-
* @param {TileInfo} [tileInfo]
|
|
2100
|
-
* @param {Color} [color=(1,1,1,1)]
|
|
2101
|
-
* @param {number} [angle=0]
|
|
2102
|
-
* @param {boolean} [mirror=0] */
|
|
2103
|
-
drawTile(pos: Vector2, size?: Vector2, tileInfo?: TileInfo, color?: Color, angle?: number, mirror?: boolean): void;
|
|
2104
|
-
/** Draw a rectangle directly onto the layer canvas in world space
|
|
2105
|
-
* @param {Vector2} pos
|
|
2106
|
-
* @param {Vector2} [size=(1,1)]
|
|
2107
|
-
* @param {Color} [color=(1,1,1,1)]
|
|
2108
|
-
* @param {number} [angle=0] */
|
|
2109
|
-
drawRect(pos: Vector2, size?: Vector2, color?: Color, angle?: number): void;
|
|
2284
|
+
/** @type {[HTMLCanvasElement|OffscreenCanvas, CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D, Vector2, Vector2, number]} */
|
|
2285
|
+
savedRenderSettings: [HTMLCanvasElement | OffscreenCanvas, CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, Vector2, Vector2, number];
|
|
2110
2286
|
}
|
|
2111
2287
|
/**
|
|
2112
2288
|
* Tile Collision Layer - a tile layer with collision
|
|
@@ -2117,25 +2293,26 @@ declare module "littlejsengine" {
|
|
|
2117
2293
|
*/
|
|
2118
2294
|
export class TileCollisionLayer extends TileLayer {
|
|
2119
2295
|
/** Create a tile layer object
|
|
2120
|
-
* @param {Vector2}
|
|
2121
|
-
* @param {Vector2}
|
|
2122
|
-
* @param {TileInfo} [tileInfo]
|
|
2123
|
-
* @param {number} [renderOrder]
|
|
2296
|
+
* @param {Vector2} position - World space position
|
|
2297
|
+
* @param {Vector2} size - World space size
|
|
2298
|
+
* @param {TileInfo} [tileInfo] - Tile info for layer
|
|
2299
|
+
* @param {number} [renderOrder] - Objects are sorted by renderOrder
|
|
2300
|
+
* @param {boolean} [useWebGL=glEnable] - Use accelerated WebGL rendering
|
|
2124
2301
|
*/
|
|
2125
|
-
constructor(position
|
|
2302
|
+
constructor(position: Vector2, size: Vector2, tileInfo?: TileInfo, renderOrder?: number, useWebGL?: boolean);
|
|
2126
2303
|
/** @property {Array<number>} - The tile collision grid */
|
|
2127
2304
|
collisionData: any[];
|
|
2128
2305
|
/** Clear and initialize tile collision to new size
|
|
2129
2306
|
* @param {Vector2} size - width and height of tile collision 2d grid */
|
|
2130
2307
|
initCollision(size: Vector2): void;
|
|
2131
2308
|
/** Set tile collision data for a given cell in the grid
|
|
2132
|
-
* @param {Vector2}
|
|
2309
|
+
* @param {Vector2} gridPos
|
|
2133
2310
|
* @param {number} [data] */
|
|
2134
|
-
setCollisionData(
|
|
2311
|
+
setCollisionData(gridPos: Vector2, data?: number): void;
|
|
2135
2312
|
/** Get tile collision data for a given cell in the grid
|
|
2136
|
-
* @param {Vector2}
|
|
2313
|
+
* @param {Vector2} gridPos
|
|
2137
2314
|
* @return {number} */
|
|
2138
|
-
getCollisionData(
|
|
2315
|
+
getCollisionData(gridPos: Vector2): number;
|
|
2139
2316
|
/** Check if collision with another object should occur
|
|
2140
2317
|
* @param {Vector2} pos
|
|
2141
2318
|
* @param {Vector2} [size=(0,0)]
|
|
@@ -2163,7 +2340,7 @@ declare module "littlejsengine" {
|
|
|
2163
2340
|
* (
|
|
2164
2341
|
* pos, 0, 1, 0, 500, PI, // pos, angle, emitSize, emitTime, emitRate, emitCone
|
|
2165
2342
|
* tile(0, 16), // tileInfo
|
|
2166
|
-
* rgb(1,1,1),
|
|
2343
|
+
* rgb(1,1,1,1), rgb(0,0,0,1), // colorStartA, colorStartB
|
|
2167
2344
|
* rgb(1,1,1,0), rgb(0,0,0,0), // colorEndA, colorEndB
|
|
2168
2345
|
* 2, .2, .2, .1, .05, // particleTime, sizeStart, sizeEnd, particleSpeed, particleAngleSpeed
|
|
2169
2346
|
* .99, 1, 1, PI, .05, // damping, angleDamping, gravityScale, particleCone, fadeRate,
|
|
@@ -2535,10 +2712,20 @@ declare module "littlejsengine" {
|
|
|
2535
2712
|
defaultButtonColor: Color;
|
|
2536
2713
|
/** @property {Color} - Default hover color for UI elements */
|
|
2537
2714
|
defaultHoverColor: Color;
|
|
2715
|
+
/** @property {Color} - Default color for disabled UI elements */
|
|
2716
|
+
defaultDisabledColor: Color;
|
|
2538
2717
|
/** @property {number} - Default line width for UI elements */
|
|
2539
2718
|
defaultLineWidth: number;
|
|
2719
|
+
/** @property {number} - Default rounded rect corner radius for UI elements */
|
|
2720
|
+
defaultCornerRadius: number;
|
|
2540
2721
|
/** @property {string} - Default font for UI elements */
|
|
2541
2722
|
defaultFont: string;
|
|
2723
|
+
/** @property {Sound} - Default sound when interactive UI element is pressed */
|
|
2724
|
+
defaultSoundPress: any;
|
|
2725
|
+
/** @property {Sound} - Default sound when interactive UI element is released */
|
|
2726
|
+
defaultSoundRelease: any;
|
|
2727
|
+
/** @property {Sound} - Default sound when interactive UI element is clicked */
|
|
2728
|
+
defaultSoundClick: any;
|
|
2542
2729
|
/** @property {Array<UIObject>} - List of all UI elements */
|
|
2543
2730
|
uiObjects: any[];
|
|
2544
2731
|
/** @property {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} - Context to render UI elements to */
|
|
@@ -2548,8 +2735,9 @@ declare module "littlejsengine" {
|
|
|
2548
2735
|
* @param {Vector2} size
|
|
2549
2736
|
* @param {Color} [color=uiSystem.defaultColor]
|
|
2550
2737
|
* @param {number} [lineWidth=uiSystem.defaultLineWidth]
|
|
2551
|
-
* @param {Color} [lineColor=uiSystem.defaultLineColor]
|
|
2552
|
-
|
|
2738
|
+
* @param {Color} [lineColor=uiSystem.defaultLineColor]
|
|
2739
|
+
* @param {number} [lineWidth=uiSystem.defaultCornerRadius] */
|
|
2740
|
+
drawRect(pos: Vector2, size: Vector2, color?: Color, lineWidth?: number, lineColor?: Color, cornerRadius?: number): void;
|
|
2553
2741
|
/** Draw a line to the UI context
|
|
2554
2742
|
* @param {Vector2} posA
|
|
2555
2743
|
* @param {Vector2} posB
|
|
@@ -2590,26 +2778,40 @@ declare module "littlejsengine" {
|
|
|
2590
2778
|
pos: Vector2;
|
|
2591
2779
|
/** @property {Vector2} - Screen space size of the object */
|
|
2592
2780
|
size: Vector2;
|
|
2593
|
-
/** @property {Color} */
|
|
2781
|
+
/** @property {Color} - color of the object */
|
|
2594
2782
|
color: Color;
|
|
2595
|
-
/** @property {Color} */
|
|
2596
|
-
lineColor: Color;
|
|
2597
|
-
/** @property {Color} */
|
|
2783
|
+
/** @property {Color} - color for text */
|
|
2598
2784
|
textColor: Color;
|
|
2599
|
-
/** @property {Color} */
|
|
2785
|
+
/** @property {Color} - color used when hovering over the object */
|
|
2600
2786
|
hoverColor: Color;
|
|
2601
|
-
/** @property {
|
|
2787
|
+
/** @property {Color} - color for line drawing */
|
|
2788
|
+
lineColor: Color;
|
|
2789
|
+
/** @property {number} - width for line drawing */
|
|
2602
2790
|
lineWidth: number;
|
|
2603
|
-
/** @property {string} */
|
|
2791
|
+
/** @property {string} - font for this objecct */
|
|
2604
2792
|
font: string;
|
|
2605
2793
|
/** @property {number} - override for text height */
|
|
2606
2794
|
textHeight: any;
|
|
2607
|
-
/** @property {boolean} */
|
|
2795
|
+
/** @property {boolean} - should this object be drawn */
|
|
2608
2796
|
visible: boolean;
|
|
2609
|
-
/** @property {Array<UIObject>} */
|
|
2797
|
+
/** @property {Array<UIObject>} - a list of this object's children */
|
|
2610
2798
|
children: any[];
|
|
2611
|
-
/** @property {UIObject} */
|
|
2799
|
+
/** @property {UIObject} - this object's parent, position is in parent space */
|
|
2612
2800
|
parent: any;
|
|
2801
|
+
/** @property {number} - Extra size added when checking if element is touched */
|
|
2802
|
+
extraTouchSize: number;
|
|
2803
|
+
/** @property {Sound} - Sound when interactive element is pressed */
|
|
2804
|
+
soundPress: any;
|
|
2805
|
+
/** @property {Sound} - Sound when interactive element is released */
|
|
2806
|
+
soundRelease: any;
|
|
2807
|
+
/** @property {Sound} - Sound when interactive element is clicked */
|
|
2808
|
+
soundClick: any;
|
|
2809
|
+
/** @property {boolean} - Is the mouse over this element */
|
|
2810
|
+
mouseIsOver: boolean;
|
|
2811
|
+
/** @property {boolean} - Is this element interactive */
|
|
2812
|
+
interactive: boolean;
|
|
2813
|
+
/** @property {boolean} - Is the mouse held on this element (was pressed while over and hasn't been released) */
|
|
2814
|
+
mouseIsHeld: boolean;
|
|
2613
2815
|
/** Add a child UIObject to this object
|
|
2614
2816
|
* @param {UIObject} child
|
|
2615
2817
|
*/
|
|
@@ -2620,10 +2822,10 @@ declare module "littlejsengine" {
|
|
|
2620
2822
|
removeChild(child: UIObject): void;
|
|
2621
2823
|
/** Update the object, called automatically by plugin once each frame */
|
|
2622
2824
|
update(): void;
|
|
2623
|
-
mouseIsOver: boolean;
|
|
2624
|
-
mouseIsHeld: boolean;
|
|
2625
2825
|
/** Render the object, called automatically by plugin once each frame */
|
|
2626
2826
|
render(): void;
|
|
2827
|
+
/** Special update for when object is invisible */
|
|
2828
|
+
updateInvisible(): void;
|
|
2627
2829
|
/** Called when the mouse enters the object */
|
|
2628
2830
|
onEnter(): void;
|
|
2629
2831
|
/** Called when the mouse leaves the object */
|
|
@@ -2632,6 +2834,8 @@ declare module "littlejsengine" {
|
|
|
2632
2834
|
onPress(): void;
|
|
2633
2835
|
/** Called when the mouse is released while over the object */
|
|
2634
2836
|
onRelease(): void;
|
|
2837
|
+
/** Called when user clicks on this object */
|
|
2838
|
+
onClick(): void;
|
|
2635
2839
|
/** Called when the state of this object changes */
|
|
2636
2840
|
onChange(): void;
|
|
2637
2841
|
}
|
|
@@ -2688,6 +2892,10 @@ declare module "littlejsengine" {
|
|
|
2688
2892
|
constructor(pos?: Vector2, size?: Vector2, text?: string, color?: Color);
|
|
2689
2893
|
/** @property {string} */
|
|
2690
2894
|
text: string;
|
|
2895
|
+
/** @property {Color} */
|
|
2896
|
+
disabledColor: Color;
|
|
2897
|
+
/** @property {boolean} */
|
|
2898
|
+
disabled: boolean;
|
|
2691
2899
|
}
|
|
2692
2900
|
/**
|
|
2693
2901
|
* UICheckbox - A UI object that acts as a checkbox
|
|
@@ -2721,6 +2929,7 @@ declare module "littlejsengine" {
|
|
|
2721
2929
|
value: number;
|
|
2722
2930
|
/** @property {string} */
|
|
2723
2931
|
text: string;
|
|
2932
|
+
/** @property {Color} */
|
|
2724
2933
|
handleColor: Color;
|
|
2725
2934
|
}
|
|
2726
2935
|
/**
|
|
@@ -2811,42 +3020,10 @@ declare module "littlejsengine" {
|
|
|
2811
3020
|
* @param {Vector2} pos
|
|
2812
3021
|
* @param {number} angle
|
|
2813
3022
|
* @param {Color} [color]
|
|
2814
|
-
* @param {Color} [
|
|
3023
|
+
* @param {Color} [lineColor]
|
|
2815
3024
|
* @param {number} [lineWidth]
|
|
2816
3025
|
* @param {CanvasRenderingContext2D} [context] */
|
|
2817
|
-
drawFixture(fixture: any, pos: Vector2, angle: number, color?: Color,
|
|
2818
|
-
/** draws a circle
|
|
2819
|
-
* @param {Vector2} pos
|
|
2820
|
-
* @param {number} radius
|
|
2821
|
-
* @param {Color} [color]
|
|
2822
|
-
* @param {Color} [outlineColor]
|
|
2823
|
-
* @param {number} [lineWidth]
|
|
2824
|
-
* @param {CanvasRenderingContext2D} [context] */
|
|
2825
|
-
drawCircle(pos: Vector2, radius: number, color?: Color, outlineColor?: Color, lineWidth?: number, context?: CanvasRenderingContext2D): void;
|
|
2826
|
-
/** draws a polygon
|
|
2827
|
-
* @param {Vector2} pos
|
|
2828
|
-
* @param {number} angle
|
|
2829
|
-
* @param {Array<Vector2>} points
|
|
2830
|
-
* @param {Color} [color]
|
|
2831
|
-
* @param {Color} [outlineColor]
|
|
2832
|
-
* @param {number} [lineWidth]
|
|
2833
|
-
* @param {CanvasRenderingContext2D} [context] */
|
|
2834
|
-
drawPoly(pos: Vector2, angle: number, points: Array<Vector2>, color?: Color, outlineColor?: Color, lineWidth?: number, context?: CanvasRenderingContext2D): void;
|
|
2835
|
-
/** draws a line
|
|
2836
|
-
* @param {Vector2} pos
|
|
2837
|
-
* @param {number} angle
|
|
2838
|
-
* @param {Vector2} posA
|
|
2839
|
-
* @param {Vector2} posB
|
|
2840
|
-
* @param {Color} [color]
|
|
2841
|
-
* @param {number} [lineWidth]
|
|
2842
|
-
* @param {CanvasRenderingContext2D} [context] */
|
|
2843
|
-
drawLine(pos: Vector2, angle: number, posA: Vector2, posB: Vector2, color?: Color, lineWidth?: number, context?: CanvasRenderingContext2D): void;
|
|
2844
|
-
/** performs a fill or stroke as a helper to the other draw functions
|
|
2845
|
-
* @param {Color} [color]
|
|
2846
|
-
* @param {Color} [outlineColor]
|
|
2847
|
-
* @param {number} [lineWidth]
|
|
2848
|
-
* @param {CanvasRenderingContext2D} [context] */
|
|
2849
|
-
drawFillStroke(color?: Color, outlineColor?: Color, lineWidth?: number, context?: CanvasRenderingContext2D): void;
|
|
3026
|
+
drawFixture(fixture: any, pos: Vector2, angle: number, color?: Color, lineColor?: Color, lineWidth?: number, context?: CanvasRenderingContext2D): void;
|
|
2850
3027
|
/** converts a box2d vec2 to a Vector2
|
|
2851
3028
|
* @param {Object} v */
|
|
2852
3029
|
vec2From(v: any): Vector2;
|
|
@@ -2881,13 +3058,13 @@ declare module "littlejsengine" {
|
|
|
2881
3058
|
* @param {number} [renderOrder] */
|
|
2882
3059
|
constructor(pos?: Vector2, size?: Vector2, tileInfo?: TileInfo, angle?: number, color?: Color, bodyType?: number, renderOrder?: number);
|
|
2883
3060
|
body: any;
|
|
2884
|
-
|
|
3061
|
+
lineColor: Color;
|
|
2885
3062
|
/** Draws all this object's fixtures
|
|
2886
3063
|
* @param {Color} [color]
|
|
2887
|
-
* @param {Color} [
|
|
3064
|
+
* @param {Color} [lineColor]
|
|
2888
3065
|
* @param {number} [lineWidth]
|
|
2889
3066
|
* @param {CanvasRenderingContext2D} [context] */
|
|
2890
|
-
drawFixtures(color?: Color,
|
|
3067
|
+
drawFixtures(color?: Color, lineColor?: Color, lineWidth?: number, context?: CanvasRenderingContext2D): void;
|
|
2891
3068
|
/** Called when a contact begins
|
|
2892
3069
|
* @param {Box2dObject} otherObject */
|
|
2893
3070
|
beginContact(otherObject: Box2dObject): void;
|
|
@@ -3058,9 +3235,6 @@ declare module "littlejsengine" {
|
|
|
3058
3235
|
/** Apply torque to this object
|
|
3059
3236
|
* @param {number} torque */
|
|
3060
3237
|
applyTorque(torque: number): void;
|
|
3061
|
-
/** Apply angular acceleration to this object
|
|
3062
|
-
* @param {number} acceleration */
|
|
3063
|
-
applyAngularAcceleration(acceleration: number): void;
|
|
3064
3238
|
/** Check if this object has any fixtures
|
|
3065
3239
|
* @return {boolean} */
|
|
3066
3240
|
hasFixtures(): boolean;
|
|
@@ -3633,4 +3807,60 @@ declare module "littlejsengine" {
|
|
|
3633
3807
|
* @return {number} */
|
|
3634
3808
|
getCorrectionFactor(): number;
|
|
3635
3809
|
}
|
|
3810
|
+
/** Draw a scalable nine-slice UI element in world space
|
|
3811
|
+
* This function can apply color and additive color if webgl is enabled
|
|
3812
|
+
* @param {Vector2} pos - World space position
|
|
3813
|
+
* @param {Vector2} size - World space size
|
|
3814
|
+
* @param {TileInfo} startTile - Starting tile for the nine-slice pattern
|
|
3815
|
+
* @param {Color} [color] - Color to modulate with
|
|
3816
|
+
* @param {number} [borderSize] - Width of the border sections
|
|
3817
|
+
* @param {Color} [additiveColor] - Additive color
|
|
3818
|
+
* @param {number} [extraSpace] - Extra spacing adjustment
|
|
3819
|
+
* @param {number} [angle] - Angle to rotate by
|
|
3820
|
+
* @param {boolean} [useWebGL=glEnable] - Use WebGL for rendering
|
|
3821
|
+
* @param {boolean} [screenSpace] - Use screen space coordinates
|
|
3822
|
+
* @param {CanvasRenderingContext2D} [context] - Canvas context to use
|
|
3823
|
+
* @memberof DrawUtilities */
|
|
3824
|
+
export function drawNineSlice(pos: Vector2, size: Vector2, startTile: TileInfo, color?: Color, borderSize?: number, additiveColor?: Color, extraSpace?: number, angle?: number, useWebGL?: boolean, screenSpace?: boolean, context?: CanvasRenderingContext2D): void;
|
|
3825
|
+
/**
|
|
3826
|
+
* LittleJS Drawing Utilities Plugin
|
|
3827
|
+
* - Extra drawing functions for LittleJS
|
|
3828
|
+
* - Nine slice and three slice drawing
|
|
3829
|
+
* @namespace DrawUtilities
|
|
3830
|
+
*/
|
|
3831
|
+
/** Draw a scalable nine-slice UI element to the overlay canvas in screen space
|
|
3832
|
+
* This function can not apply color because it draws using the overlay 2d context
|
|
3833
|
+
* @param {Vector2} pos - Screen space position
|
|
3834
|
+
* @param {Vector2} size - Screen space size
|
|
3835
|
+
* @param {TileInfo} startTile - Starting tile for the nine-slice pattern
|
|
3836
|
+
* @param {number} [borderSize] - Width of the border sections
|
|
3837
|
+
* @param {number} [extraSpace] - Extra spacing adjustment
|
|
3838
|
+
* @param {number} [angle] - Angle to rotate by
|
|
3839
|
+
* @memberof DrawUtilities */
|
|
3840
|
+
export function drawNineSliceScreen(pos: Vector2, size: Vector2, startTile: TileInfo, borderSize?: number, extraSpace?: number, angle?: number): void;
|
|
3841
|
+
/** Draw a scalable three-slice UI element in world space
|
|
3842
|
+
* This function can apply color and additive color if webgl is enabled
|
|
3843
|
+
* @param {Vector2} pos - World space position
|
|
3844
|
+
* @param {Vector2} size - World space size
|
|
3845
|
+
* @param {TileInfo} startTile - Starting tile for the three-slice pattern
|
|
3846
|
+
* @param {Color} [color] - Color to modulate with
|
|
3847
|
+
* @param {number} [borderSize] - Width of the border sections
|
|
3848
|
+
* @param {Color} [additiveColor] - Additive color
|
|
3849
|
+
* @param {number} [extraSpace] - Extra spacing adjustment
|
|
3850
|
+
* @param {number} [angle] - Angle to rotate by
|
|
3851
|
+
* @param {boolean} [useWebGL=glEnable] - Use WebGL for rendering
|
|
3852
|
+
* @param {boolean} [screenSpace] - Use screen space coordinates
|
|
3853
|
+
* @param {CanvasRenderingContext2D} [context] - Canvas context to use
|
|
3854
|
+
* @memberof DrawUtilities */
|
|
3855
|
+
export function drawThreeSlice(pos: Vector2, size: Vector2, startTile: TileInfo, color?: Color, borderSize?: number, additiveColor?: Color, extraSpace?: number, angle?: number, useWebGL?: boolean, screenSpace?: boolean, context?: CanvasRenderingContext2D): void;
|
|
3856
|
+
/** Draw a scalable three-slice UI element to the overlay canvas in screen space
|
|
3857
|
+
* This function can not apply color because it draws using the overlay 2d context
|
|
3858
|
+
* @param {Vector2} pos - Screen space position
|
|
3859
|
+
* @param {Vector2} size - Screen space size
|
|
3860
|
+
* @param {TileInfo} startTile - Starting tile for the three-slice pattern
|
|
3861
|
+
* @param {number} [borderSize] - Width of the border sections
|
|
3862
|
+
* @param {number} [extraSpace] - Extra spacing adjustment
|
|
3863
|
+
* @param {number} [angle] - Angle to rotate by
|
|
3864
|
+
* @memberof DrawUtilities */
|
|
3865
|
+
export function drawThreeSliceScreen(pos: Vector2, size: Vector2, startTile: TileInfo, borderSize?: number, extraSpace?: number, angle?: number): void;
|
|
3636
3866
|
}
|