littlejsengine 1.9.9 → 1.10.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.
Files changed (59) hide show
  1. package/README.md +6 -0
  2. package/dist/littlejs.d.ts +107 -14
  3. package/dist/littlejs.esm.js +250 -102
  4. package/dist/littlejs.esm.min.js +1 -1
  5. package/dist/littlejs.js +226 -98
  6. package/dist/littlejs.min.js +1 -1
  7. package/dist/littlejs.release.js +208 -95
  8. package/examples/box2d/game.js +29 -10
  9. package/examples/box2d/gameObjects.js +485 -0
  10. package/examples/box2d/index.html +7 -5
  11. package/examples/box2d/scenes.js +28 -247
  12. package/examples/box2d/tiles.png +0 -0
  13. package/examples/breakout/game.js +1 -1
  14. package/examples/breakout/index.html +5 -4
  15. package/examples/breakoutTutorial/index.html +4 -3
  16. package/examples/electron/game.js +1 -1
  17. package/examples/electron/index.html +4 -3
  18. package/examples/empty/game.js +1 -1
  19. package/examples/empty/index.html +2 -1
  20. package/examples/htmlMenu/game.js +67 -0
  21. package/examples/htmlMenu/index.html +56 -0
  22. package/examples/htmlMenu/tiles.png +0 -0
  23. package/examples/index.html +33 -0
  24. package/examples/js13k/game.js +1 -1
  25. package/examples/js13k/index.html +17 -14
  26. package/examples/module/game.js +1 -1
  27. package/examples/module/index.html +3 -2
  28. package/examples/particles/index.html +4 -3
  29. package/examples/platformer/game.js +1 -1
  30. package/examples/platformer/gameCharacter.js +1 -0
  31. package/examples/platformer/gameEffects.js +0 -2
  32. package/examples/platformer/gameLevel.js +2 -2
  33. package/examples/platformer/gameObjects.js +1 -2
  34. package/examples/platformer/index.html +10 -9
  35. package/examples/puzzle/game.js +1 -1
  36. package/examples/puzzle/index.html +4 -3
  37. package/examples/starter/game.js +5 -5
  38. package/examples/starter/index.html +15 -14
  39. package/examples/stress/index.html +3 -2
  40. package/examples/typescript/game.js +1 -1
  41. package/examples/typescript/index.html +3 -2
  42. package/examples/uiSystem/game.js +134 -0
  43. package/examples/uiSystem/index.html +25 -0
  44. package/examples/uiSystem/tiles.png +0 -0
  45. package/jsconfig.json +11 -0
  46. package/package.json +1 -1
  47. package/plugins/box2d.js +116 -42
  48. package/plugins/postProcess.js +6 -7
  49. package/plugins/uiSystem.js +243 -0
  50. package/src/engine.js +48 -20
  51. package/src/engineAudio.js +22 -25
  52. package/src/engineDebug.js +18 -3
  53. package/src/engineDraw.js +101 -27
  54. package/src/engineExport.js +23 -4
  55. package/src/engineInput.js +9 -5
  56. package/src/engineObject.js +15 -12
  57. package/src/engineSettings.js +1 -1
  58. package/src/engineUtilities.js +1 -1
  59. package/src/engineWebGL.js +11 -4
@@ -735,7 +735,7 @@ class Color
735
735
  * @return {String} */
736
736
  toString(useAlpha = true)
737
737
  {
738
- const toHex = (c)=> ((c=c*255|0)<16 ? '0' : '') + c.toString(16);
738
+ const toHex = (c)=> ((c=clamp(c)*255|0)<16 ? '0' : '') + c.toString(16);
739
739
  return '#' + toHex(this.r) + toHex(this.g) + toHex(this.b) + (useAlpha ? toHex(this.a) : '');
740
740
  }
741
741
 
@@ -34,10 +34,10 @@ function glInit()
34
34
 
35
35
  // create the canvas and textures
36
36
  glCanvas = document.createElement('canvas');
37
- glContext = glCanvas.getContext('webgl2');
37
+ glContext = glCanvas.getContext('webgl2', {antialias:!canvasPixelated});
38
38
 
39
39
  // some browsers are much faster without copying the gl buffer so we just overlay it instead
40
- glOverlay && document.body.appendChild(glCanvas);
40
+ glOverlay && engineRoot.appendChild(glCanvas);
41
41
 
42
42
  // setup vertex and fragment shaders
43
43
  glShader = glCreateProgram(
@@ -92,7 +92,8 @@ function glPreRender()
92
92
  // set up the shader
93
93
  glContext.useProgram(glShader);
94
94
  glContext.activeTexture(gl_TEXTURE0);
95
- glContext.bindTexture(gl_TEXTURE_2D, glActiveTexture = textureInfos[0].glTexture);
95
+ if (textureInfos[0])
96
+ glContext.bindTexture(gl_TEXTURE_2D, glActiveTexture = textureInfos[0].glTexture);
96
97
 
97
98
  // set vertex attributes
98
99
  let offset = glAdditive = glBatchAdditive = 0;
@@ -190,8 +191,14 @@ function glCreateTexture(image)
190
191
  // build the texture
191
192
  const texture = glContext.createTexture();
192
193
  glContext.bindTexture(gl_TEXTURE_2D, texture);
193
- if (image)
194
+ if (image && image.width)
194
195
  glContext.texImage2D(gl_TEXTURE_2D, 0, gl_RGBA, gl_RGBA, gl_UNSIGNED_BYTE, image);
196
+ else
197
+ {
198
+ // create a white texture
199
+ const whitePixel = new Uint8Array([255, 255, 255, 255]);
200
+ glContext.texImage2D(gl_TEXTURE_2D, 0, gl_RGBA, 1, 1, 0, gl_RGBA, gl_UNSIGNED_BYTE, whitePixel);
201
+ }
195
202
 
196
203
  // use point filtering for pixelated rendering
197
204
  const filter = canvasPixelated ? gl_NEAREST : gl_LINEAR;