littlejsengine 1.8.6 → 1.8.9

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 (38) hide show
  1. package/README.md +9 -3
  2. package/build/littlejs.d.ts +18 -9
  3. package/build/littlejs.esm.js +298 -92
  4. package/build/littlejs.esm.min.js +1 -1
  5. package/build/littlejs.js +296 -92
  6. package/build/littlejs.min.js +1 -1
  7. package/build/littlejs.release.js +296 -92
  8. package/examples/breakout/game.js +3 -0
  9. package/examples/breakout/index.html +3 -3
  10. package/examples/breakoutTutorial/index.html +2 -2
  11. package/examples/electron/game.js +3 -0
  12. package/examples/electron/index.html +2 -2
  13. package/examples/js13k/index.html +13 -13
  14. package/examples/logo.png +0 -0
  15. package/examples/module/game.js +3 -0
  16. package/examples/module/index.html +1 -1
  17. package/examples/particles/index.html +1 -1
  18. package/examples/platformer/game.js +3 -0
  19. package/examples/platformer/gameEffects.js +1 -1
  20. package/examples/platformer/index.html +6 -6
  21. package/examples/puzzle/game.js +3 -0
  22. package/examples/puzzle/index.html +2 -2
  23. package/examples/starter/game.js +4 -1
  24. package/examples/starter/index.html +13 -13
  25. package/examples/starter/tiles.png +0 -0
  26. package/examples/stress/index.html +3 -1
  27. package/examples/typescript/game.js +2 -0
  28. package/examples/typescript/game.ts +3 -0
  29. package/examples/typescript/index.html +1 -1
  30. package/package.json +1 -1
  31. package/src/engine.js +189 -9
  32. package/src/engineAudio.js +72 -58
  33. package/src/engineDraw.js +1 -1
  34. package/src/engineExport.js +2 -0
  35. package/src/engineParticles.js +7 -7
  36. package/src/engineSettings.js +11 -0
  37. package/src/engineUtilities.js +4 -5
  38. package/src/engineWebGL.js +12 -12
@@ -596,11 +596,10 @@ class Color
596
596
  * @return {Number} */
597
597
  rgbaInt()
598
598
  {
599
- const toByte = (c)=> clamp(c)*255|0;
600
- const r = toByte(this.r);
601
- const g = toByte(this.g)<<8;
602
- const b = toByte(this.b)<<16;
603
- const a = toByte(this.a)<<24;
599
+ const r = clamp(this.r)*255|0;
600
+ const g = clamp(this.g)*255<<8;
601
+ const b = clamp(this.b)*255<<16;
602
+ const a = clamp(this.a)*255<<24;
604
603
  return r + g + b + a;
605
604
  }
606
605
  }
@@ -23,7 +23,7 @@ let glCanvas;
23
23
  let glContext;
24
24
 
25
25
  // WebGL internal variables not exposed to documentation
26
- let glActiveTexture, glShader, glArrayBuffer, glPositionData, glColorData, glBatchCount, glBatchAdditive, glAdditive;
26
+ let glActiveTexture, glShader, glArrayBuffer, glVertexData, glPositionData, glColorData, glBatchCount, glBatchAdditive, glAdditive;
27
27
 
28
28
  ///////////////////////////////////////////////////////////////////////////////
29
29
 
@@ -60,10 +60,10 @@ function glInit()
60
60
  );
61
61
 
62
62
  // init buffers
63
- const vertexData = new ArrayBuffer(gl_VERTEX_BUFFER_SIZE);
63
+ glVertexData = new ArrayBuffer(gl_VERTEX_BUFFER_SIZE);
64
+ glPositionData = new Float32Array(glVertexData);
65
+ glColorData = new Uint32Array(glVertexData);
64
66
  glArrayBuffer = glContext.createBuffer();
65
- glPositionData = new Float32Array(vertexData);
66
- glColorData = new Uint32Array(vertexData);
67
67
  glBatchCount = 0;
68
68
  }
69
69
 
@@ -91,7 +91,7 @@ function glPreRender()
91
91
  glContext.vertexAttribPointer(location, size, type, normalize, gl_VERTEX_BYTE_STRIDE, offset);
92
92
  offset += size*typeSize;
93
93
  }
94
- initVertexAttribArray('p', gl_FLOAT, 4, 4); // position & texture coords
94
+ initVertexAttribArray('p', gl_FLOAT, 4, 4); // position & texture
95
95
  initVertexAttribArray('c', gl_UNSIGNED_BYTE, 1, 4, 1); // color
96
96
  initVertexAttribArray('a', gl_UNSIGNED_BYTE, 1, 4, 1); // additiveColor
97
97
 
@@ -179,6 +179,7 @@ function glCreateTexture(image)
179
179
  glContext.texParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, filter);
180
180
  glContext.texParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE);
181
181
  glContext.texParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_T, gl_CLAMP_TO_EDGE);
182
+
182
183
  return texture;
183
184
  }
184
185
 
@@ -193,8 +194,7 @@ function glFlush()
193
194
  glContext.enable(gl_BLEND);
194
195
 
195
196
  // draw all the sprites in the batch and reset the buffer
196
- glContext.bufferSubData(gl_ARRAY_BUFFER, 0,
197
- glPositionData.subarray(0, glBatchCount * gl_INDICIES_PER_VERT));
197
+ glContext.bufferSubData(gl_ARRAY_BUFFER, 0, glVertexData);
198
198
  glContext.drawArrays(gl_TRIANGLE_STRIP, 0, glBatchCount);
199
199
  glBatchCount = 0;
200
200
  glBatchAdditive = glAdditive;
@@ -249,11 +249,11 @@ function glDraw(x, y, sizeX, sizeY, angle, uv0X, uv0Y, uv1X, uv1Y, rgba, rgbaAdd
249
249
  // setup 2 triangle strip quad
250
250
  for(let i = vertCount, offset = glBatchCount * gl_INDICIES_PER_VERT; i--;)
251
251
  {
252
- let j = clamp(i-1, 0, 3)*4; // degenerate tri at ends
253
- glPositionData[offset++] = positionData[j++];
254
- glPositionData[offset++] = positionData[j++];
255
- glPositionData[offset++] = positionData[j++];
256
- glPositionData[offset++] = positionData[j++];
252
+ const j = clamp(i-1, 0, 3)*4; // degenerate tri at ends
253
+ glPositionData[offset++] = positionData[j+0];
254
+ glPositionData[offset++] = positionData[j+1];
255
+ glPositionData[offset++] = positionData[j+2];
256
+ glPositionData[offset++] = positionData[j+3];
257
257
  glColorData[offset++] = rgba;
258
258
  glColorData[offset++] = rgbaAdditive;
259
259
  }