littlejsengine 1.16.1 → 1.16.2

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.
@@ -283,37 +283,20 @@ declare module "littlejsengine" {
283
283
  /** Trigger debug system to take a screenshot
284
284
  * @memberof Debug */
285
285
  export function debugScreenshot(): void;
286
- /** Save a canvas to disk
287
- * @param {HTMLCanvasElement|OffscreenCanvas} canvas
288
- * @param {string} [filename]
289
- * @param {string} [type]
290
- * @memberof Debug */
291
- export function debugSaveCanvas(canvas: HTMLCanvasElement | OffscreenCanvas, filename?: string, type?: string): void;
292
- /** Save a text file to disk
293
- * @param {string} text
294
- * @param {string} [filename]
295
- * @param {string} [type]
296
- * @memberof Debug */
297
- export function debugSaveText(text: string, filename?: string, type?: string): void;
298
- /** Save a data url to disk
299
- * @param {string} dataURL
300
- * @param {string} filename
301
- * @memberof Debug */
302
- export function debugSaveDataURL(dataURL: string, filename: string): void;
303
286
  /** Breaks on all asserts/errors, hides the canvas, and shows message in plain text
304
287
  * This is a good function to call at the start of your game to catch all errors
305
288
  * In release builds this function has no effect
306
289
  * @memberof Debug */
307
290
  export function debugShowErrors(): void;
308
- /** Check if video capture is active
309
- * @memberof Debug */
310
- export function debugVideoCaptureIsActive(): boolean;
311
291
  /** Start capturing video
312
292
  * @memberof Debug */
313
293
  export function debugVideoCaptureStart(): void;
314
294
  /** Stop capturing video and save to disk
315
295
  * @memberof Debug */
316
296
  export function debugVideoCaptureStop(): void;
297
+ /** Check if video capture is active
298
+ * @memberof Debug */
299
+ export function debugVideoCaptureIsActive(): boolean;
317
300
  /**
318
301
  * LittleJS Engine Settings
319
302
  * - All settings for the engine are here
@@ -340,7 +323,7 @@ declare module "littlejsengine" {
340
323
  * @default
341
324
  * @memberof Settings */
342
325
  export let canvasColorTiles: boolean;
343
- /** Color to clear the canvas to before render
326
+ /** Color to clear the canvas to before render, does not clear if alpha is 0
344
327
  * @type {Color}
345
328
  * @memberof Draw */
346
329
  export let canvasClearColor: Color;
@@ -560,7 +543,7 @@ declare module "littlejsengine" {
560
543
  * @param {boolean} colorTiles
561
544
  * @memberof Settings */
562
545
  export function setCanvasColorTiles(colorTiles: boolean): void;
563
- /** Set color to clear the canvas to before render
546
+ /** Set color to clear the canvas to before render, does not clear if alpha is 0
564
547
  * @param {Color} color
565
548
  * @memberof Settings */
566
549
  export function setCanvasClearColor(color: Color): void;
@@ -744,105 +727,105 @@ declare module "littlejsengine" {
744
727
  * - Color - holds a rgba color with some math functions
745
728
  * - Timer - tracks time automatically
746
729
  * - RandomGenerator - seeded random number generator
747
- * @namespace Utilities
730
+ * @namespace Math
748
731
  */
749
732
  /** The value of PI
750
733
  * @type {number}
751
734
  * @default Math.PI
752
- * @memberof Utilities */
735
+ * @memberof Math */
753
736
  export const PI: number;
754
737
  /** Returns absolute value of value passed in
755
738
  * @param {number} value
756
739
  * @return {number}
757
- * @memberof Utilities */
740
+ * @memberof Math */
758
741
  export const abs: (x: number) => number;
759
742
  /** Returns floored value of value passed in
760
743
  * @param {number} value
761
744
  * @return {number}
762
- * @memberof Utilities */
745
+ * @memberof Math */
763
746
  export const floor: (x: number) => number;
764
747
  /** Returns ceiled value of value passed in
765
748
  * @param {number} value
766
749
  * @return {number}
767
- * @memberof Utilities */
750
+ * @memberof Math */
768
751
  export const ceil: (x: number) => number;
769
752
  /** Returns rounded value passed in
770
753
  * @param {number} value
771
754
  * @return {number}
772
- * @memberof Utilities */
755
+ * @memberof Math */
773
756
  export const round: (x: number) => number;
774
757
  /** Returns lowest value passed in
775
758
  * @param {...number} values
776
759
  * @return {number}
777
- * @memberof Utilities */
760
+ * @memberof Math */
778
761
  export const min: (...values: number[]) => number;
779
762
  /** Returns highest value passed in
780
763
  * @param {...number} values
781
764
  * @return {number}
782
- * @memberof Utilities */
765
+ * @memberof Math */
783
766
  export const max: (...values: number[]) => number;
784
767
  /** Returns the sign of value passed in
785
768
  * @param {number} value
786
769
  * @return {number}
787
- * @memberof Utilities */
770
+ * @memberof Math */
788
771
  export const sign: (x: number) => number;
789
772
  /** Returns hypotenuse of values passed in
790
773
  * @param {...number} values
791
774
  * @return {number}
792
- * @memberof Utilities */
775
+ * @memberof Math */
793
776
  export const hypot: (...values: number[]) => number;
794
777
  /** Returns log2 of value passed in
795
778
  * @param {number} value
796
779
  * @return {number}
797
- * @memberof Utilities */
780
+ * @memberof Math */
798
781
  export const log2: (x: number) => number;
799
782
  /** Returns sin of value passed in
800
783
  * @param {number} value
801
784
  * @return {number}
802
- * @memberof Utilities */
785
+ * @memberof Math */
803
786
  export const sin: (x: number) => number;
804
787
  /** Returns cos of value passed in
805
788
  * @param {number} value
806
789
  * @return {number}
807
- * @memberof Utilities */
790
+ * @memberof Math */
808
791
  export const cos: (x: number) => number;
809
792
  /** Returns tan of value passed in
810
793
  * @param {number} value
811
794
  * @return {number}
812
- * @memberof Utilities */
795
+ * @memberof Math */
813
796
  export const tan: (x: number) => number;
814
797
  /** Returns atan2 of values passed in
815
798
  * @param {number} y
816
799
  * @param {number} x
817
800
  * @return {number}
818
- * @memberof Utilities */
801
+ * @memberof Math */
819
802
  export const atan2: (y: number, x: number) => number;
820
803
  /** Returns first parm modulo the second param, but adjusted so negative numbers work as expected
821
804
  * @param {number} dividend
822
805
  * @param {number} [divisor]
823
806
  * @return {number}
824
- * @memberof Utilities */
807
+ * @memberof Math */
825
808
  export function mod(dividend: number, divisor?: number): number;
826
809
  /** Clamps the value between max and min
827
810
  * @param {number} value
828
811
  * @param {number} [min]
829
812
  * @param {number} [max]
830
813
  * @return {number}
831
- * @memberof Utilities */
814
+ * @memberof Math */
832
815
  export function clamp(value: number, min?: number, max?: number): number;
833
816
  /** Returns what percentage the value is between valueA and valueB
834
817
  * @param {number} value
835
818
  * @param {number} valueA
836
819
  * @param {number} valueB
837
820
  * @return {number}
838
- * @memberof Utilities */
821
+ * @memberof Math */
839
822
  export function percent(value: number, valueA: number, valueB: number): number;
840
823
  /** Returns signed wrapped distance between the two values passed in
841
824
  * @param {number} valueA
842
825
  * @param {number} valueB
843
826
  * @param {number} [wrapSize]
844
827
  * @return {number}
845
- * @memberof Utilities */
828
+ * @memberof Math */
846
829
  export function distanceWrap(valueA: number, valueB: number, wrapSize?: number): number;
847
830
  /** Linearly interpolates between values passed in with wrapping
848
831
  * @param {number} valueA
@@ -850,37 +833,37 @@ declare module "littlejsengine" {
850
833
  * @param {number} percent
851
834
  * @param {number} [wrapSize]
852
835
  * @return {number}
853
- * @memberof Utilities */
836
+ * @memberof Math */
854
837
  export function lerpWrap(valueA: number, valueB: number, percent: number, wrapSize?: number): number;
855
838
  /** Returns signed wrapped distance between the two angles passed in
856
839
  * @param {number} angleA
857
840
  * @param {number} angleB
858
841
  * @return {number}
859
- * @memberof Utilities */
842
+ * @memberof Math */
860
843
  export function distanceAngle(angleA: number, angleB: number): number;
861
844
  /** Linearly interpolates between the angles passed in with wrapping
862
845
  * @param {number} angleA
863
846
  * @param {number} angleB
864
847
  * @param {number} percent
865
848
  * @return {number}
866
- * @memberof Utilities */
849
+ * @memberof Math */
867
850
  export function lerpAngle(angleA: number, angleB: number, percent: number): number;
868
851
  /** Linearly interpolates between values passed in using percent
869
852
  * @param {number} valueA
870
853
  * @param {number} valueB
871
854
  * @param {number} percent
872
855
  * @return {number}
873
- * @memberof Utilities */
856
+ * @memberof Math */
874
857
  export function lerp(valueA: number, valueB: number, percent: number): number;
875
858
  /** Applies smoothstep function to the percentage value
876
859
  * @param {number} percent
877
860
  * @return {number}
878
- * @memberof Utilities */
861
+ * @memberof Math */
879
862
  export function smoothStep(percent: number): number;
880
863
  /** Returns the nearest power of two not less than the value
881
864
  * @param {number} value
882
865
  * @return {number}
883
- * @memberof Utilities */
866
+ * @memberof Math */
884
867
  export function nearestPowerOfTwo(value: number): number;
885
868
  /** Returns true if two axis aligned bounding boxes are overlapping
886
869
  * this can be used for simple collision detection between objects
@@ -889,7 +872,7 @@ declare module "littlejsengine" {
889
872
  * @param {Vector2} posB - Center of box B
890
873
  * @param {Vector2} [sizeB=(0,0)] - Size of box B, uses a point if undefined
891
874
  * @return {boolean} - True if overlapping
892
- * @memberof Utilities */
875
+ * @memberof Math */
893
876
  export function isOverlapping(posA: Vector2, sizeA: Vector2, posB: Vector2, sizeB?: Vector2): boolean;
894
877
  /** Returns true if a line segment is intersecting an axis aligned box
895
878
  * @param {Vector2} start - Start of raycast
@@ -897,7 +880,7 @@ declare module "littlejsengine" {
897
880
  * @param {Vector2} pos - Center of box
898
881
  * @param {Vector2} size - Size of box
899
882
  * @return {boolean} - True if intersecting
900
- * @memberof Utilities */
883
+ * @memberof Math */
901
884
  export function isIntersecting(start: Vector2, end: Vector2, pos: Vector2, size: Vector2): boolean;
902
885
  /** Returns an oscillating wave between 0 and amplitude with frequency of 1 Hz by default
903
886
  * @param {number} [frequency] - Frequency of the wave in Hz
@@ -905,8 +888,17 @@ declare module "littlejsengine" {
905
888
  * @param {number} [t=time] - Value to use for time of the wave
906
889
  * @param {number} [offset] - Value to use for time offset of the wave
907
890
  * @return {number} - Value waving between 0 and amplitude
908
- * @memberof Utilities */
891
+ * @memberof Math */
909
892
  export function wave(frequency?: number, amplitude?: number, t?: number, offset?: number): number;
893
+ /**
894
+ * LittleJS Utility Classes and Functions
895
+ * - General purpose math library
896
+ * - Vector2 - fast, simple, easy 2D vector class
897
+ * - Color - holds a rgba color with some math functions
898
+ * - Timer - tracks time automatically
899
+ * - RandomGenerator - seeded random number generator
900
+ * @namespace Utilities
901
+ */
910
902
  /** Formats seconds to mm:ss style for display purposes
911
903
  * @param {number} t - time in seconds
912
904
  * @return {string}
@@ -917,6 +909,24 @@ declare module "littlejsengine" {
917
909
  * @return {Promise<object>}
918
910
  * @memberof Utilities */
919
911
  export function fetchJSON(url: string): Promise<object>;
912
+ /** Save a text file to disk
913
+ * @param {string} text
914
+ * @param {string} [filename]
915
+ * @param {string} [type]
916
+ * @memberof Utilities */
917
+ export function saveText(text: string, filename?: string, type?: string): void;
918
+ /** Save a canvas to disk
919
+ * @param {HTMLCanvasElement|OffscreenCanvas} canvas
920
+ * @param {string} [filename]
921
+ * @param {string} [type]
922
+ * @memberof Utilities */
923
+ export function saveCanvas(canvas: HTMLCanvasElement | OffscreenCanvas, filename?: string, type?: string): void;
924
+ /** Save a data url to disk
925
+ * @param {string} url
926
+ * @param {string} [filename]
927
+ * @param {number} [revokeTime] - how long before revoking the url
928
+ * @memberof Utilities */
929
+ export function saveDataURL(url: string, filename?: string, revokeTime?: number): void;
920
930
  /** Random global functions
921
931
  * @namespace Random */
922
932
  /** Returns a random value between the two values passed in
@@ -1319,7 +1329,7 @@ declare module "littlejsengine" {
1319
1329
  * let a = vec2(0, 1); // vector with coordinates (0, 1)
1320
1330
  * a = vec2(5); // set a to (5, 5)
1321
1331
  * b = vec2(); // set b to (0, 0)
1322
- * @memberof Utilities */
1332
+ * @memberof Math */
1323
1333
  export function vec2(x?: number, y?: number): Vector2;
1324
1334
  /**
1325
1335
  * Create a color object with RGBA values, white by default
@@ -1328,7 +1338,7 @@ declare module "littlejsengine" {
1328
1338
  * @param {number} [b=1] - blue
1329
1339
  * @param {number} [a=1] - alpha
1330
1340
  * @return {Color}
1331
- * @memberof Utilities
1341
+ * @memberof Math
1332
1342
  */
1333
1343
  export function rgb(r?: number, g?: number, b?: number, a?: number): Color;
1334
1344
  /**
@@ -1338,89 +1348,89 @@ declare module "littlejsengine" {
1338
1348
  * @param {number} [l=1] - lightness
1339
1349
  * @param {number} [a=1] - alpha
1340
1350
  * @return {Color}
1341
- * @memberof Utilities */
1351
+ * @memberof Math */
1342
1352
  export function hsl(h?: number, s?: number, l?: number, a?: number): Color;
1343
1353
  /**
1344
1354
  * Check if object is a valid Color
1345
1355
  * @param {any} c
1346
1356
  * @return {boolean}
1347
- * @memberof Utilities */
1357
+ * @memberof Math */
1348
1358
  export function isColor(c: any): boolean;
1349
1359
  /**
1350
1360
  * Check if object is a valid Vector2
1351
1361
  * @param {any} v
1352
1362
  * @return {boolean}
1353
- * @memberof Utilities */
1363
+ * @memberof Math */
1354
1364
  export function isVector2(v: any): boolean;
1355
1365
  /**
1356
1366
  * Check if object is a valid number, not NaN or undefined, but it may be infinite
1357
1367
  * @param {any} n
1358
1368
  * @return {boolean}
1359
- * @memberof Utilities */
1369
+ * @memberof Math */
1360
1370
  export function isNumber(n: any): boolean;
1361
1371
  /**
1362
1372
  * Check if object is a valid string or can be converted to one
1363
1373
  * @param {any} s
1364
1374
  * @return {boolean}
1365
- * @memberof Utilities */
1375
+ * @memberof Math */
1366
1376
  export function isString(s: any): boolean;
1367
1377
  /**
1368
1378
  * Check if object is an array
1369
1379
  * @param {any} a
1370
1380
  * @return {boolean}
1371
- * @memberof Utilities */
1381
+ * @memberof Math */
1372
1382
  export function isArray(a: any): boolean;
1373
1383
  /** Color - White #ffffff
1374
1384
  * @type {Color}
1375
- * @memberof Utilities */
1385
+ * @memberof Math */
1376
1386
  export const WHITE: Color;
1377
1387
  /** Color - Clear White #757474ff with 0 alpha
1378
1388
  * @type {Color}
1379
- * @memberof Utilities */
1389
+ * @memberof Math */
1380
1390
  export const CLEAR_WHITE: Color;
1381
1391
  /** Color - Black #000000
1382
1392
  * @type {Color}
1383
- * @memberof Utilities */
1393
+ * @memberof Math */
1384
1394
  export const BLACK: Color;
1385
1395
  /** Color - Clear Black #000000 with 0 alpha
1386
1396
  * @type {Color}
1387
- * @memberof Utilities */
1397
+ * @memberof Math */
1388
1398
  export const CLEAR_BLACK: Color;
1389
1399
  /** Color - Gray #808080
1390
1400
  * @type {Color}
1391
- * @memberof Utilities */
1401
+ * @memberof Math */
1392
1402
  export const GRAY: Color;
1393
1403
  /** Color - Red #ff0000
1394
1404
  * @type {Color}
1395
- * @memberof Utilities */
1405
+ * @memberof Math */
1396
1406
  export const RED: Color;
1397
1407
  /** Color - Orange #ff8000
1398
1408
  * @type {Color}
1399
- * @memberof Utilities */
1409
+ * @memberof Math */
1400
1410
  export const ORANGE: Color;
1401
1411
  /** Color - Yellow #ffff00
1402
1412
  * @type {Color}
1403
- * @memberof Utilities */
1413
+ * @memberof Math */
1404
1414
  export const YELLOW: Color;
1405
1415
  /** Color - Green #00ff00
1406
1416
  * @type {Color}
1407
- * @memberof Utilities */
1417
+ * @memberof Math */
1408
1418
  export const GREEN: Color;
1409
1419
  /** Color - Cyan #00ffff
1410
1420
  * @type {Color}
1411
- * @memberof Utilities */
1421
+ * @memberof Math */
1412
1422
  export const CYAN: Color;
1413
1423
  /** Color - Blue #0000ff
1414
1424
  * @type {Color}
1415
- * @memberof Utilities */
1425
+ * @memberof Math */
1416
1426
  export const BLUE: Color;
1417
1427
  /** Color - Purple #8000ff
1418
1428
  * @type {Color}
1419
- * @memberof Utilities */
1429
+ * @memberof Math */
1420
1430
  export const PURPLE: Color;
1421
1431
  /** Color - Magenta #ff00ff
1422
1432
  * @type {Color}
1423
- * @memberof Utilities */
1433
+ * @memberof Math */
1424
1434
  export const MAGENTA: Color;
1425
1435
  /**
1426
1436
  * Create a tile info object using a grid based system
@@ -1535,10 +1545,6 @@ declare module "littlejsengine" {
1535
1545
  * @type {CanvasRenderingContext2D}
1536
1546
  * @memberof Draw */
1537
1547
  export let mainContext: CanvasRenderingContext2D;
1538
- /** The default canvas to use for drawing, usually mainCanvas
1539
- * @type {HTMLCanvasElement|OffscreenCanvas}
1540
- * @memberof Draw */
1541
- export let drawCanvas: HTMLCanvasElement | OffscreenCanvas;
1542
1548
  /** The default 2d context to use for drawing, usually mainContext
1543
1549
  * @type {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D}
1544
1550
  * @memberof Draw */
@@ -1591,6 +1597,13 @@ declare module "littlejsengine" {
1591
1597
  * @return {Vector2}
1592
1598
  * @memberof Draw */
1593
1599
  export function worldToScreenDelta(worldDelta: Vector2): Vector2;
1600
+ /** Convert screen space transform to world space
1601
+ * @param {Vector2} screenPos
1602
+ * @param {Vector2} screenSize
1603
+ * @param {number} [screenAngle]
1604
+ * @return {[Vector2, Vector2, number]} - [pos, size, angle]
1605
+ * @memberof Draw */
1606
+ export function screenToWorldTransform(screenPos: Vector2, screenSize: Vector2, screenAngle?: number): [Vector2, Vector2, number];
1594
1607
  /** Draw textured tile centered in world space, with color applied if using WebGL
1595
1608
  * @param {Vector2} pos - Center of the tile in world space
1596
1609
  * @param {Vector2} [size=(1,1)] - Size of the tile in world space
@@ -1728,7 +1741,7 @@ declare module "littlejsengine" {
1728
1741
  * @param {string} [fontStyle]
1729
1742
  * @param {number} [maxWidth]
1730
1743
  * @param {number} [angle]
1731
- * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context=mainContext]
1744
+ * @param {CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D} [context=drawContext]
1732
1745
  * @memberof Draw */
1733
1746
  export function drawTextScreen(text: string | number, pos: Vector2, size?: number, color?: Color, lineWidth?: number, lineColor?: Color, textAlign?: CanvasTextAlign, font?: string, fontStyle?: string, maxWidth?: number, angle?: number, context?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D): void;
1734
1747
  /** Enable normal or additive blend mode
@@ -2723,8 +2736,8 @@ declare module "littlejsengine" {
2723
2736
  * @param {Vector2} layerPos - Local position in array
2724
2737
  * @return {TileLayerData} */
2725
2738
  getData(layerPos: Vector2): TileLayerData;
2726
- /** @type {[HTMLCanvasElement|OffscreenCanvas, CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D, Vector2, Vector2, number, Color]} */
2727
- savedRenderSettings: [HTMLCanvasElement | OffscreenCanvas, CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, Vector2, Vector2, number, Color];
2739
+ /** @type {[CanvasRenderingContext2D|OffscreenCanvasRenderingContext2D, Vector2, Vector2, number, Color]} */
2740
+ savedRenderSettings: [CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, Vector2, Vector2, number, Color];
2728
2741
  }
2729
2742
  /**
2730
2743
  * Tile Collision Layer - a tile layer with collision