littlejsengine 1.18.4 → 1.18.7

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 (177) hide show
  1. package/COPYRIGHT.txt +38 -0
  2. package/FAQ.md +633 -0
  3. package/README.md +19 -1
  4. package/dist/littlejs.d.ts +349 -54
  5. package/dist/littlejs.esm.js +1469 -448
  6. package/dist/littlejs.esm.min.js +1 -1
  7. package/dist/littlejs.js +1438 -436
  8. package/dist/littlejs.min.js +1 -1
  9. package/dist/littlejs.release.js +1438 -436
  10. package/package.json +8 -1
  11. package/plugins/box2d.js +32 -7
  12. package/{src/engineMedals.js → plugins/medalSystem.js} +248 -196
  13. package/plugins/pathFinder.js +758 -0
  14. package/plugins/pluginExport.js +19 -0
  15. package/plugins/tween.js +1 -1
  16. package/plugins/tweenSystem.js +509 -0
  17. package/plugins/uiSystem.js +150 -11
  18. package/src/engine.js +2 -141
  19. package/src/engineAudio.js +8 -5
  20. package/src/engineBuild.mjs +4 -2
  21. package/src/engineDebug.js +1 -1
  22. package/src/engineDraw.js +21 -3
  23. package/src/engineExport.js +12 -12
  24. package/src/engineInput.js +1 -1
  25. package/src/engineLogo.js +146 -0
  26. package/src/engineMath.js +10 -3
  27. package/src/engineObject.js +11 -5
  28. package/src/engineParticles.js +6 -3
  29. package/src/engineRelease.js +1 -1
  30. package/src/engineSettings.js +0 -47
  31. package/src/engineUtilities.js +7 -2
  32. package/src/engineWebGL.js +34 -7
  33. package/src/jsconfig.json +3 -1
  34. package/.github/workflows/test.yml +0 -17
  35. package/AI.md +0 -173
  36. package/CLAUDE.md +0 -1
  37. package/examples/box2d/game.js +0 -192
  38. package/examples/box2d/gameObjects.js +0 -564
  39. package/examples/box2d/index.html +0 -9
  40. package/examples/box2d/scenes.js +0 -194
  41. package/examples/box2d/tiles.png +0 -0
  42. package/examples/breakout/game.js +0 -175
  43. package/examples/breakout/gameObjects.js +0 -147
  44. package/examples/breakout/index.html +0 -8
  45. package/examples/breakout/tiles.png +0 -0
  46. package/examples/breakoutTutorial/README.md +0 -521
  47. package/examples/breakoutTutorial/game.js +0 -191
  48. package/examples/breakoutTutorial/images/1.png +0 -0
  49. package/examples/breakoutTutorial/images/10.png +0 -0
  50. package/examples/breakoutTutorial/images/11.png +0 -0
  51. package/examples/breakoutTutorial/images/2.png +0 -0
  52. package/examples/breakoutTutorial/images/3.png +0 -0
  53. package/examples/breakoutTutorial/images/4.png +0 -0
  54. package/examples/breakoutTutorial/images/5.png +0 -0
  55. package/examples/breakoutTutorial/images/6.png +0 -0
  56. package/examples/breakoutTutorial/images/7.png +0 -0
  57. package/examples/breakoutTutorial/images/8.png +0 -0
  58. package/examples/breakoutTutorial/images/9.png +0 -0
  59. package/examples/breakoutTutorial/index.html +0 -8
  60. package/examples/electron/build.mjs +0 -127
  61. package/examples/electron/electron.js +0 -35
  62. package/examples/electron/game.js +0 -54
  63. package/examples/electron/index.html +0 -13
  64. package/examples/electron/package.json +0 -5
  65. package/examples/electron/tiles.png +0 -0
  66. package/examples/empty/game.js +0 -51
  67. package/examples/empty/index.html +0 -5
  68. package/examples/empty/tiles.png +0 -0
  69. package/examples/favicon.png +0 -0
  70. package/examples/games.jpg +0 -0
  71. package/examples/htmlMenu/game.js +0 -82
  72. package/examples/htmlMenu/index.html +0 -45
  73. package/examples/htmlMenu/tiles.png +0 -0
  74. package/examples/index.html +0 -62
  75. package/examples/logo.png +0 -0
  76. package/examples/logo2.png +0 -0
  77. package/examples/module/build.mjs +0 -124
  78. package/examples/module/game.js +0 -132
  79. package/examples/module/index.html +0 -10
  80. package/examples/module/tiles.png +0 -0
  81. package/examples/particles/index.html +0 -426
  82. package/examples/particles/tiles.png +0 -0
  83. package/examples/platformer/data/gameLevelData.tmx +0 -143
  84. package/examples/platformer/data/gameLevelData.tsx +0 -4
  85. package/examples/platformer/game.js +0 -147
  86. package/examples/platformer/gameCharacter.js +0 -309
  87. package/examples/platformer/gameEffects.js +0 -278
  88. package/examples/platformer/gameLevel.js +0 -205
  89. package/examples/platformer/gameLevelData.json +0 -171
  90. package/examples/platformer/gameObjects.js +0 -378
  91. package/examples/platformer/gamePlayer.js +0 -35
  92. package/examples/platformer/index.html +0 -9
  93. package/examples/platformer/tiles.png +0 -0
  94. package/examples/platformer/tilesLevel.png +0 -0
  95. package/examples/puzzle/game.js +0 -331
  96. package/examples/puzzle/index.html +0 -8
  97. package/examples/puzzle/tiles.png +0 -0
  98. package/examples/screenshot.jpg +0 -0
  99. package/examples/shorts/animation.js +0 -18
  100. package/examples/shorts/base.html +0 -54
  101. package/examples/shorts/blending.js +0 -14
  102. package/examples/shorts/box2d.js +0 -51
  103. package/examples/shorts/box2dCar.js +0 -59
  104. package/examples/shorts/box2dPool.js +0 -107
  105. package/examples/shorts/box2dTileLayer.js +0 -48
  106. package/examples/shorts/cameraDrag.js +0 -22
  107. package/examples/shorts/clock.js +0 -21
  108. package/examples/shorts/colors.js +0 -25
  109. package/examples/shorts/debugDraw.js +0 -37
  110. package/examples/shorts/empty.js +0 -30
  111. package/examples/shorts/flappyGame.js +0 -55
  112. package/examples/shorts/fontImage.js +0 -17
  113. package/examples/shorts/fps.js +0 -90
  114. package/examples/shorts/helloWorld.js +0 -11
  115. package/examples/shorts/hillGlideGame.js +0 -63
  116. package/examples/shorts/input.js +0 -64
  117. package/examples/shorts/landerGame.js +0 -57
  118. package/examples/shorts/maze.js +0 -48
  119. package/examples/shorts/medals.js +0 -51
  120. package/examples/shorts/music.js +0 -78
  121. package/examples/shorts/musicPlayer.js +0 -137
  122. package/examples/shorts/nineSlice.js +0 -40
  123. package/examples/shorts/parallax.js +0 -72
  124. package/examples/shorts/particles.js +0 -28
  125. package/examples/shorts/piano.js +0 -44
  126. package/examples/shorts/platformer.js +0 -45
  127. package/examples/shorts/pongGame.js +0 -41
  128. package/examples/shorts/postProcess.js +0 -62
  129. package/examples/shorts/sequencer.js +0 -124
  130. package/examples/shorts/shader.js +0 -29
  131. package/examples/shorts/shapes.js +0 -21
  132. package/examples/shorts/slidingPuzzle.js +0 -52
  133. package/examples/shorts/song.mp3 +0 -0
  134. package/examples/shorts/sound.js +0 -36
  135. package/examples/shorts/spaceGame.js +0 -58
  136. package/examples/shorts/spriteAtlas.js +0 -31
  137. package/examples/shorts/starfield.js +0 -15
  138. package/examples/shorts/texture.js +0 -16
  139. package/examples/shorts/textureWrapped.js +0 -12
  140. package/examples/shorts/tileLayer.js +0 -48
  141. package/examples/shorts/tileRaycast.js +0 -39
  142. package/examples/shorts/tiles.png +0 -0
  143. package/examples/shorts/tiltedView.js +0 -63
  144. package/examples/shorts/timers.js +0 -53
  145. package/examples/shorts/topDown.js +0 -38
  146. package/examples/shorts/tween.js +0 -24
  147. package/examples/shorts/uiSystem.js +0 -61
  148. package/examples/shorts/video.webm +0 -0
  149. package/examples/shorts/videoPlayer.js +0 -34
  150. package/examples/shorts.js +0 -743
  151. package/examples/starter/build.bat +0 -7
  152. package/examples/starter/build.mjs +0 -126
  153. package/examples/starter/game.js +0 -137
  154. package/examples/starter/index.html +0 -35
  155. package/examples/starter/tiles.png +0 -0
  156. package/examples/stress/index.html +0 -173
  157. package/examples/style.css +0 -150
  158. package/examples/tweenSystem/game.js +0 -171
  159. package/examples/tweenSystem/index.html +0 -10
  160. package/examples/tweenSystem/tiles.png +0 -0
  161. package/examples/typescript/build.mjs +0 -60
  162. package/examples/typescript/game.js +0 -100
  163. package/examples/typescript/game.ts +0 -132
  164. package/examples/typescript/index.html +0 -10
  165. package/examples/typescript/tiles.png +0 -0
  166. package/examples/typescript/tsconfig.json +0 -17
  167. package/examples/uiSystem/game.js +0 -139
  168. package/examples/uiSystem/index.html +0 -10
  169. package/examples/uiSystem/tiles.png +0 -0
  170. package/jsconfig.json +0 -12
  171. package/plugins/desktop.ini +0 -2
  172. package/reference.md +0 -448
  173. package/test/math.test.mjs +0 -774
  174. package/test/setup.mjs +0 -22
  175. package/test/smoke.test.mjs +0 -274
  176. package/test/tween.test.mjs +0 -576
  177. package/test/util.test.mjs +0 -80
@@ -1,192 +0,0 @@
1
- /*
2
- Little JS Box2d Demo
3
- - Demonstrates how to use Box2D with LittleJS
4
- - Several scenes to demonstrate Box2D features
5
- - Every type of shape and joint
6
- - Contact begin and end callbacks
7
- - Raycasting and querying
8
- - Collision filtering
9
- - User Interaction
10
- */
11
-
12
- 'use strict';
13
-
14
- // import LittleJS module
15
- import * as LJS from '../../dist/littlejs.esm.js';
16
- import * as GameObjects from './gameObjects.js';
17
- import * as Scenes from './scenes.js';
18
- const {vec2, hsl} = LJS;
19
-
20
- // use HD textures
21
- LJS.setCanvasPixelated(false);
22
- LJS.setTilesPixelated(false);
23
-
24
- ///////////////////////////////////////////////////////////////////////////////
25
- // game variables
26
-
27
- const sceneCount = 12;
28
- const startScene = 0;
29
- export let spriteAtlas, groundObject, mouseJoint, repeatSpawnTimer = new LJS.Timer;
30
- const sound_click = new LJS.Sound([.2,.1,,,,.01,,,,,,,,,,,,,,,-500]);
31
-
32
- ///////////////////////////////////////////////////////////////////////////////
33
- function setScene(scene)
34
- {
35
- // setup
36
- LJS.setCameraPos(vec2(20,10));
37
- LJS.setGravity(vec2(0,-20));
38
-
39
- // destroy old scene
40
- LJS.engineObjectsDestroy();
41
- mouseJoint = 0;
42
-
43
- // create walls
44
- groundObject = GameObjects.spawnBox(vec2(0,-4), vec2(1e3,8), hsl(0,0,.2), LJS.box2d.bodyTypeStatic);
45
- GameObjects.spawnBox(vec2(-4, 0), vec2(8,1e3), LJS.BLACK, LJS.box2d.bodyTypeStatic);
46
- GameObjects.spawnBox(vec2(44, 0), vec2(8,1e3), LJS.BLACK, LJS.box2d.bodyTypeStatic);
47
- GameObjects.spawnBox(vec2(0,100), vec2(1e3,8), LJS.BLACK, LJS.box2d.bodyTypeStatic);
48
-
49
- // load the scene
50
- Scenes.loadScene(scene);
51
- }
52
-
53
- ///////////////////////////////////////////////////////////////////////////////
54
- async function gameInit()
55
- {
56
- // start up LittleJS Box2D plugin
57
- await LJS.box2dInit();
58
- //LJS.box2dSetDebug(true); // enable box2d debug draw
59
-
60
- // create a table of all sprites
61
- const gameTile = (i)=> LJS.tile(i, 124, 0, 2);
62
- spriteAtlas =
63
- {
64
- circle: gameTile(0),
65
- dot: gameTile(1),
66
- circleOutline: gameTile(2),
67
- squareOutline: gameTile(3),
68
- wheel: gameTile(4),
69
- gear: gameTile(5),
70
- squareOutline2: gameTile(6),
71
- };
72
-
73
- // startup the demo
74
- LJS.setCanvasClearColor(hsl(0,0,.8));
75
- setScene(startScene);
76
- }
77
-
78
- ///////////////////////////////////////////////////////////////////////////////
79
- function gameUpdate()
80
- {
81
- // scale canvas to fit based on 1080p
82
- LJS.setCameraScale(LJS.mainCanvasSize.y * 48 / 1080);
83
-
84
- // mouse controls
85
- if (mouseJoint)
86
- {
87
- // update mouse joint
88
- mouseJoint.setTarget(LJS.mousePos);
89
- if (LJS.mouseWasReleased(0))
90
- {
91
- // release object
92
- sound_click.play(LJS.mousePos, 1, .5);
93
- mouseJoint.destroy();
94
- mouseJoint = 0;
95
- }
96
- }
97
- else if (LJS.mouseWasPressed(0))
98
- {
99
- // grab object
100
- sound_click.play(LJS.mousePos);
101
- const object = LJS.box2d.pointCast(LJS.mousePos);
102
- if (object)
103
- mouseJoint = new LJS.Box2dTargetJoint(object, groundObject, LJS.mousePos);
104
- }
105
-
106
- // controls
107
- if (LJS.mouseIsDown(1) || LJS.keyIsDown('KeyZ'))
108
- {
109
- const isSet = repeatSpawnTimer.isSet();
110
- if (!isSet || repeatSpawnTimer.elapsed())
111
- {
112
- // spawn continuously after a delay
113
- isSet || repeatSpawnTimer.set(.5);
114
- GameObjects.spawnRandomObject(LJS.mousePos);
115
- }
116
- }
117
- else
118
- repeatSpawnTimer.unset();
119
- if (LJS.mouseWasPressed(2) || LJS.keyWasPressed('KeyX'))
120
- GameObjects.explosion(LJS.mousePos);
121
-
122
- if (LJS.keyWasPressed('KeyR'))
123
- setScene(Scenes.scene); // reset scene
124
- if (LJS.keyWasPressed('ArrowUp') || LJS.keyWasPressed('ArrowDown'))
125
- {
126
- // change scene
127
- const upPressed = LJS.keyWasPressed('ArrowUp');
128
- setScene(LJS.mod(Scenes.scene + (upPressed?1:-1), sceneCount));
129
- }
130
- }
131
-
132
- ///////////////////////////////////////////////////////////////////////////////
133
- function gameUpdatePost()
134
- {
135
-
136
- }
137
-
138
- ///////////////////////////////////////////////////////////////////////////////
139
- function gameRender()
140
- {
141
- if (Scenes.scene == 5)
142
- {
143
- // raycast test
144
- const count = 100;
145
- const distance = 10;
146
- for (let i=count;i--;)
147
- {
148
- const start = LJS.mousePos;
149
- const end = start.add(vec2(distance,0).rotate(i/count*LJS.PI*2));
150
- const result = LJS.box2d.raycast(start, end);
151
- const color = result ? hsl(0,1,.5,.5) : hsl(.5,1,.5,.5);
152
- LJS.drawLine(start, result ? result.point : end, .1, color);
153
- }
154
- }
155
- }
156
-
157
- ///////////////////////////////////////////////////////////////////////////////
158
- function gameRenderPost()
159
- {
160
- if (mouseJoint)
161
- {
162
- // draw mouse joint
163
- const ab = mouseJoint.getAnchorB();
164
- LJS.drawTile(ab, vec2(.3), spriteAtlas.circle, LJS.BLACK);
165
- LJS.drawLine(LJS.mousePos, ab, .1, LJS.BLACK);
166
- }
167
-
168
- // draw demo info
169
- const pos = vec2(LJS.mainCanvasSize.x/2, 50);
170
- drawText('LittleJS Box2D Demo', 65, 70);
171
- drawText(Scenes.sceneName, 50, 100);
172
- if (Scenes.scene == 0)
173
- {
174
- drawText('Mouse Left = Grab');
175
- drawText('Mouse Middle or Z = Spawn');
176
- drawText('Mouse Right or X = Explode');
177
- drawText('Arrows Up/Down = Change Scene');
178
- }
179
- if (Scenes.scene == 3)
180
- {
181
- drawText('Right = Accelerate');
182
- drawText('Left = Reverse');
183
- }
184
-
185
- function drawText(text, size=40, gap=50)
186
- { LJS.drawTextScreen(text, pos, size, LJS.WHITE, size*.1); pos.y += gap; }
187
- }
188
-
189
- ///////////////////////////////////////////////////////////////////////////////
190
- // Startup LittleJS Engine with Box2D
191
-
192
- LJS.engineInit(gameInit, gameUpdate, gameUpdatePost, gameRender, gameRenderPost, ['tiles.png']);