littlejsengine 1.3.3 → 1.3.5
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 +3 -4
- package/buildSetup.bat +4 -1
- package/engine/engine.all.js +7 -7
- package/engine/engine.all.min.js +1 -1
- package/engine/engine.all.release.js +6 -6
- package/engine/engine.js +1 -1
- package/engine/engineDebug.js +1 -1
- package/engine/engineDraw.js +1 -1
- package/engine/engineObject.js +3 -3
- package/engine/engineUtilities.js +1 -1
- package/engine/index.d.ts +2 -2
- package/examples/breakout/index.html +3 -3
- package/examples/particles/index.html +105 -57
- package/examples/platformer/index.html +5 -5
- package/examples/puzzle/index.html +2 -2
- package/examples/stress/index.html +1 -1
- package/game.js +7 -7
- package/index.html +13 -13
- package/package.json +1 -1
- package/docs/Audio.html +0 -2268
- package/docs/Color.html +0 -3376
- package/docs/Debug.html +0 -2933
- package/docs/Draw.html +0 -4480
- package/docs/EngineObject.html +0 -4734
- package/docs/FontImage.html +0 -1055
- package/docs/Input.html +0 -2806
- package/docs/Medal.html +0 -1007
- package/docs/Medals.html +0 -628
- package/docs/Music.html +0 -584
- package/docs/Newgrounds.html +0 -1399
- package/docs/Particle.html +0 -4825
- package/docs/ParticleEmitter.html +0 -8099
- package/docs/Random.html +0 -1774
- package/docs/Settings.html +0 -3140
- package/docs/Sound.html +0 -1249
- package/docs/TileCollision.html +0 -1409
- package/docs/TileLayer.html +0 -7310
- package/docs/TileLayerData.html +0 -1052
- package/docs/Timer.html +0 -1295
- package/docs/Utilities.html +0 -3278
- package/docs/Vector2.html +0 -4266
- package/docs/WebGL.html +0 -2307
- package/docs/engine.js.html +0 -443
- package/docs/engineAudio.js.html +0 -627
- package/docs/engineDebug.js.html +0 -554
- package/docs/engineDraw.js.html +0 -539
- package/docs/engineInput.js.html +0 -571
- package/docs/engineMedals.js.html +0 -460
- package/docs/engineObject.js.html +0 -533
- package/docs/engineParticles.js.html +0 -443
- package/docs/engineSettings.js.html +0 -381
- package/docs/engineTileLayer.js.html +0 -503
- package/docs/engineUtilities.js.html +0 -700
- package/docs/engineWebGL.js.html +0 -511
- package/docs/fonts/MavenPro-Regular.ttf +0 -0
- package/docs/fonts/Montserrat-Regular.ttf +0 -0
- package/docs/fonts/Muli-Black.ttf +0 -0
- package/docs/fonts/OFL-hind.txt +0 -93
- package/docs/fonts/OFL-montserrat.txt +0 -93
- package/docs/global.html +0 -1771
- package/docs/index.css +0 -6
- package/docs/index.html +0 -267
- package/docs/scripts/fix-code-block.js +0 -53
- package/docs/scripts/fix-navbar.js +0 -25
- package/docs/scripts/linenumber.js +0 -25
- package/docs/scripts/misc.js +0 -217
- package/docs/scripts/resize.js +0 -85
- package/docs/scripts/search.js +0 -83
- package/docs/scripts/third-party/Apache-License-2.0.txt +0 -202
- package/docs/scripts/third-party/fuse.js +0 -9
- package/docs/scripts/third-party/lang-css.js +0 -2
- package/docs/scripts/third-party/prettify.js +0 -28
- package/docs/static/favicon.png +0 -0
- package/docs/static/index.css +0 -4
- package/docs/styles/clean-jsdoc-theme-base.css +0 -393
- package/docs/styles/clean-jsdoc-theme-dark.css +0 -324
- package/docs/styles/clean-jsdoc-theme-light.css +0 -319
- package/docs/styles/reset.css +0 -346
- package/docs/styles/third-party/ionicons.min.css +0 -11
- package/docs/styles/third-party/prettify-jsdoc.css +0 -111
- package/docs/styles/third-party/prettify-tomorrow.css +0 -5
|
@@ -15,18 +15,18 @@ button
|
|
|
15
15
|
</style>
|
|
16
16
|
</head><body>
|
|
17
17
|
|
|
18
|
-
<script src=../../engine/engineDebug.js?
|
|
19
|
-
<script src=../../engine/engineUtilities.js?
|
|
20
|
-
<script src=../../engine/engineSettings.js?
|
|
21
|
-
<script src=../../engine/engineObject.js?
|
|
22
|
-
<script src=../../engine/engineDraw.js?
|
|
23
|
-
<script src=../../engine/engineInput.js?
|
|
24
|
-
<script src=../../engine/engineAudio.js?
|
|
25
|
-
<script src=../../engine/engineTileLayer.js?
|
|
26
|
-
<script src=../../engine/engineParticles.js?
|
|
27
|
-
<script src=../../engine/engineMedals.js?
|
|
28
|
-
<script src=../../engine/engineWebGL.js?
|
|
29
|
-
<script src=../../engine/engine.js?
|
|
18
|
+
<script src=../../engine/engineDebug.js?109></script>
|
|
19
|
+
<script src=../../engine/engineUtilities.js?109></script>
|
|
20
|
+
<script src=../../engine/engineSettings.js?109></script>
|
|
21
|
+
<script src=../../engine/engineObject.js?109></script>
|
|
22
|
+
<script src=../../engine/engineDraw.js?109></script>
|
|
23
|
+
<script src=../../engine/engineInput.js?109></script>
|
|
24
|
+
<script src=../../engine/engineAudio.js?109></script>
|
|
25
|
+
<script src=../../engine/engineTileLayer.js?109></script>
|
|
26
|
+
<script src=../../engine/engineParticles.js?109></script>
|
|
27
|
+
<script src=../../engine/engineMedals.js?109></script>
|
|
28
|
+
<script src=../../engine/engineWebGL.js?109></script>
|
|
29
|
+
<script src=../../engine/engine.js?109></script>
|
|
30
30
|
<script>
|
|
31
31
|
|
|
32
32
|
'use strict';
|
|
@@ -50,13 +50,13 @@ addSetting('tileIndex', '', -1, 1e9, 1, 'Tile to use to render object (-1
|
|
|
50
50
|
addSetting('tileSizeX', '', 0, 1e9, 1, 'X Size of texture tile in source pixelss');
|
|
51
51
|
addSetting('tileSizeY', '', 0, 1e9, 1, 'Y Size of texture tile in source pixelss');
|
|
52
52
|
addSetting('colorStartA', 'color',0,0,0, 'Color at start of life 1');
|
|
53
|
+
addSetting('colorStartA_alpha', 'alpha', 0, 1, .01, 'Alpha at start of life 1');
|
|
53
54
|
addSetting('colorStartB', 'color',0,0,0, 'Color at start of life 2');
|
|
55
|
+
addSetting('colorStartB_alpha', 'alpha', 0, 1, .01, 'Alpha at start of life 2');
|
|
54
56
|
addSetting('colorEndA', 'color',0,0,0, 'Color at end of life 1');
|
|
57
|
+
addSetting('colorEndA_alpha', 'alpha', 0, 1, .01, 'Alpha at end of life 1');
|
|
55
58
|
addSetting('colorEndB', 'color',0,0,0, 'Color at end of life 2');
|
|
56
|
-
addSetting('
|
|
57
|
-
addSetting('colorAlphaStartB', 'alpha', 0, 1, .01, 'Alpha at start of life 2');
|
|
58
|
-
addSetting('colorAlphaEndA', 'alpha', 0, 1, .01, 'Alpha at end of life 1');
|
|
59
|
-
addSetting('colorAlphaEndB', 'alpha', 0, 1, .01, 'Alpha at end of life 2');
|
|
59
|
+
addSetting('colorEndB_alpha', 'alpha', 0, 1, .01, 'Alpha at end of life 2');
|
|
60
60
|
addSetting('particleTime', '', 0, 1e9, .1, 'How long particles live');
|
|
61
61
|
addSetting('sizeStart', '', 0, 1e9, .01,'How big are particles at start');
|
|
62
62
|
addSetting('sizeEnd', '', 0, 1e9, .01,'How big are particles at end');
|
|
@@ -76,7 +76,7 @@ function makeEmitter()
|
|
|
76
76
|
{
|
|
77
77
|
particleSystem = new ParticleEmitter(cameraPos);
|
|
78
78
|
particleSystem.emitConeAngle =
|
|
79
|
-
|
|
79
|
+
particleSystem.particleConeAngle = 3.14;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
///////////////////////////////////////////////////////////////////////////////
|
|
@@ -93,6 +93,41 @@ function gameInit()
|
|
|
93
93
|
|
|
94
94
|
for (const setting of particleSettings)
|
|
95
95
|
{
|
|
96
|
+
// get default value
|
|
97
|
+
// todo: clean this up
|
|
98
|
+
let defaultValue = '';
|
|
99
|
+
{
|
|
100
|
+
const name = setting.name;
|
|
101
|
+
const type = setting.type;
|
|
102
|
+
|
|
103
|
+
if (type == 'color')
|
|
104
|
+
{
|
|
105
|
+
const color = particleSystem[name];
|
|
106
|
+
defaultValue = color.hex();
|
|
107
|
+
}
|
|
108
|
+
else if (type == 'alpha')
|
|
109
|
+
{
|
|
110
|
+
if (name == 'colorStartA_alpha')
|
|
111
|
+
defaultValue = particleSystem.colorStartA.a;
|
|
112
|
+
else if (name == 'colorStartB_alpha')
|
|
113
|
+
defaultValue = particleSystem.colorStartB.a;
|
|
114
|
+
else if (name == 'colorEndA_alpha')
|
|
115
|
+
defaultValue = particleSystem.colorEndA.a;
|
|
116
|
+
else if (name == 'colorEndB_alpha')
|
|
117
|
+
defaultValue = particleSystem.colorEndB.a;
|
|
118
|
+
}
|
|
119
|
+
else if (name == 'tileSizeX')
|
|
120
|
+
defaultValue = particleSystem.tileSize.x;
|
|
121
|
+
else if (name == 'tileSizeY')
|
|
122
|
+
defaultValue = particleSystem.tileSize.y;
|
|
123
|
+
else if (type == 'checkbox')
|
|
124
|
+
defaultValue = particleSystem[name];
|
|
125
|
+
else
|
|
126
|
+
defaultValue = particleSystem[name] || '0';
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
div.appendChild(document.createElement('br'));
|
|
130
|
+
|
|
96
131
|
const input = setting.input = document.createElement('input');
|
|
97
132
|
const name = setting.name;
|
|
98
133
|
input.type = setting.type == 'alpha' ? 'number' : setting.type;
|
|
@@ -107,8 +142,18 @@ function gameInit()
|
|
|
107
142
|
input.step = setting.step;
|
|
108
143
|
if (name == 'emitConeAngle' || name == 'particleConeAngle')
|
|
109
144
|
particleSystem[name] = 3.14; // simplify pi
|
|
145
|
+
|
|
146
|
+
const inputReset = document.createElement('button');
|
|
147
|
+
inputReset.innerText = '♻️';
|
|
148
|
+
inputReset.onclick = (e)=>
|
|
149
|
+
{
|
|
150
|
+
setting.type == 'checkbox'?
|
|
151
|
+
setting.input.checked = defaultValue :
|
|
152
|
+
setting.input.value = defaultValue;
|
|
153
|
+
updateParticles(1);
|
|
154
|
+
}
|
|
155
|
+
div.appendChild(inputReset);
|
|
110
156
|
|
|
111
|
-
div.appendChild(document.createElement('br'));
|
|
112
157
|
div.appendChild(input);
|
|
113
158
|
div.appendChild(document.createTextNode(' ' + name));
|
|
114
159
|
}
|
|
@@ -189,13 +234,13 @@ function updateParticles(shouldUpdateInput)
|
|
|
189
234
|
}
|
|
190
235
|
else if (type == 'alpha')
|
|
191
236
|
{
|
|
192
|
-
if (name == '
|
|
237
|
+
if (name == 'colorStartA_alpha')
|
|
193
238
|
particleSystem.colorStartA.a = clamp(inputFloat);
|
|
194
|
-
else if (name == '
|
|
239
|
+
else if (name == 'colorStartB_alpha')
|
|
195
240
|
particleSystem.colorStartB.a = clamp(inputFloat);
|
|
196
|
-
else if (name == '
|
|
241
|
+
else if (name == 'colorEndA_alpha')
|
|
197
242
|
particleSystem.colorEndA.a = clamp(inputFloat);
|
|
198
|
-
else if (name == '
|
|
243
|
+
else if (name == 'colorEndB_alpha')
|
|
199
244
|
particleSystem.colorEndB.a = clamp(inputFloat);
|
|
200
245
|
}
|
|
201
246
|
else if (name == 'tileSizeX')
|
|
@@ -219,44 +264,47 @@ function updateParticles(shouldUpdateInput)
|
|
|
219
264
|
function updateInputs(save=1)
|
|
220
265
|
{
|
|
221
266
|
for (const setting of particleSettings)
|
|
267
|
+
updateSetting(setting, save);
|
|
268
|
+
particleSystemCode.value = getCode();
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
function updateSetting(setting, save=1)
|
|
272
|
+
{
|
|
273
|
+
const input = setting.input;
|
|
274
|
+
const name = setting.name;
|
|
275
|
+
const type = setting.type;
|
|
276
|
+
|
|
277
|
+
if (type == 'color')
|
|
222
278
|
{
|
|
223
|
-
const
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
else if (
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
else if (name == 'tileSizeY')
|
|
246
|
-
input.value = particleSystem.tileSize.y;
|
|
247
|
-
else if (type == 'checkbox')
|
|
248
|
-
input.checked = particleSystem[name];
|
|
249
|
-
else
|
|
250
|
-
input.value = particleSystem[name] || '0';
|
|
279
|
+
const color = particleSystem[name];
|
|
280
|
+
input.value = color.hex();
|
|
281
|
+
}
|
|
282
|
+
else if (type == 'alpha')
|
|
283
|
+
{
|
|
284
|
+
if (name == 'colorStartA_alpha')
|
|
285
|
+
input.value = particleSystem.colorStartA.a;
|
|
286
|
+
else if (name == 'colorStartB_alpha')
|
|
287
|
+
input.value = particleSystem.colorStartB.a;
|
|
288
|
+
else if (name == 'colorEndA_alpha')
|
|
289
|
+
input.value = particleSystem.colorEndA.a;
|
|
290
|
+
else if (name == 'colorEndB_alpha')
|
|
291
|
+
input.value = particleSystem.colorEndB.a;
|
|
292
|
+
}
|
|
293
|
+
else if (name == 'tileSizeX')
|
|
294
|
+
input.value = particleSystem.tileSize.x;
|
|
295
|
+
else if (name == 'tileSizeY')
|
|
296
|
+
input.value = particleSystem.tileSize.y;
|
|
297
|
+
else if (type == 'checkbox')
|
|
298
|
+
input.checked = particleSystem[name];
|
|
299
|
+
else
|
|
300
|
+
input.value = particleSystem[name] || '0';
|
|
251
301
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
}
|
|
302
|
+
if (save)
|
|
303
|
+
{
|
|
304
|
+
const storageName = storagePrefix + setting.name;
|
|
305
|
+
localStorage[storageName] = type == 'checkbox' ?
|
|
306
|
+
input.checked : input.value;
|
|
258
307
|
}
|
|
259
|
-
particleSystemCode.value = getCode();
|
|
260
308
|
}
|
|
261
309
|
|
|
262
310
|
function getCode()
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
<link rel=icon type=image/png href=../../favicon.png>
|
|
6
6
|
</head><body>
|
|
7
7
|
|
|
8
|
-
<script src=../../engine/engine.all.js?
|
|
9
|
-
<script src=gameObjects.js?
|
|
10
|
-
<script src=gamePlayer.js?
|
|
11
|
-
<script src=gameEffects.js?
|
|
12
|
-
<script src=gameLevel.js?
|
|
8
|
+
<script src=../../engine/engine.all.js?109></script>
|
|
9
|
+
<script src=gameObjects.js?109></script>
|
|
10
|
+
<script src=gamePlayer.js?109></script>
|
|
11
|
+
<script src=gameEffects.js?109></script>
|
|
12
|
+
<script src=gameLevel.js?109></script>
|
|
13
13
|
<script src=game.js?103></script>
|
package/game.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
//onerror = (...parameters)=> alert(parameters);
|
|
9
9
|
|
|
10
10
|
// game variables
|
|
11
|
-
let particleEmiter
|
|
11
|
+
let particleEmiter;
|
|
12
12
|
|
|
13
13
|
// sound effects
|
|
14
14
|
const sound_click = new Sound([.5,.5]);
|
|
@@ -21,13 +21,13 @@ medalsInit('Hello World');
|
|
|
21
21
|
function gameInit()
|
|
22
22
|
{
|
|
23
23
|
// create tile collision and visible tile layer
|
|
24
|
-
initTileCollision(vec2(32,16));
|
|
24
|
+
initTileCollision(vec2(32, 16));
|
|
25
25
|
const tileLayer = new TileLayer(vec2(), tileCollisionSize);
|
|
26
26
|
const pos = vec2();
|
|
27
27
|
|
|
28
28
|
// get level data from the tiles image
|
|
29
29
|
const imageLevelDataRow = 1;
|
|
30
|
-
mainContext.drawImage(tileImage,0,0);
|
|
30
|
+
mainContext.drawImage(tileImage, 0, 0);
|
|
31
31
|
for (pos.x = tileCollisionSize.x; pos.x--;)
|
|
32
32
|
for (pos.y = tileCollisionSize.y; pos.y--;)
|
|
33
33
|
{
|
|
@@ -64,8 +64,8 @@ function gameInit()
|
|
|
64
64
|
.99, 1, 1, PI, .05, // damping, angleDamping, gravityScale, particleCone, fadeRate,
|
|
65
65
|
.5, 1, 1 // randomness, collide, additive, randomColorLinear, renderOrder
|
|
66
66
|
);
|
|
67
|
-
particleEmiter.elasticity = .3;
|
|
68
|
-
particleEmiter.trailScale = 2;
|
|
67
|
+
particleEmiter.elasticity = .3; // bounce when it collides
|
|
68
|
+
particleEmiter.trailScale = 2; // stretch in direction of motion
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
///////////////////////////////////////////////////////////////////////////////
|
|
@@ -76,7 +76,7 @@ function gameUpdate()
|
|
|
76
76
|
// play sound when mouse is pressed
|
|
77
77
|
sound_click.play(mousePos);
|
|
78
78
|
|
|
79
|
-
// change particle color
|
|
79
|
+
// change particle color and set to fade out
|
|
80
80
|
particleEmiter.colorStartA = new Color;
|
|
81
81
|
particleEmiter.colorStartB = randColor();
|
|
82
82
|
particleEmiter.colorEndA = particleEmiter.colorStartA.scale(1,0);
|
|
@@ -87,7 +87,7 @@ function gameUpdate()
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
// move particles to mouse location if on screen
|
|
90
|
-
if (mousePosScreen.x
|
|
90
|
+
if (mousePosScreen.x)
|
|
91
91
|
particleEmiter.pos = mousePos;
|
|
92
92
|
}
|
|
93
93
|
|
package/index.html
CHANGED
|
@@ -6,21 +6,21 @@
|
|
|
6
6
|
</head><body>
|
|
7
7
|
|
|
8
8
|
<!-- LittleJS engine scripts -->
|
|
9
|
-
<script src=engine/engineDebug.js?
|
|
10
|
-
<script src=engine/engineUtilities.js?
|
|
11
|
-
<script src=engine/engineSettings.js?
|
|
12
|
-
<script src=engine/engineObject.js?
|
|
13
|
-
<script src=engine/engineDraw.js?
|
|
14
|
-
<script src=engine/engineInput.js?
|
|
15
|
-
<script src=engine/engineAudio.js?
|
|
16
|
-
<script src=engine/engineTileLayer.js?
|
|
17
|
-
<script src=engine/engineParticles.js?
|
|
18
|
-
<script src=engine/engineMedals.js?
|
|
19
|
-
<script src=engine/engineWebGL.js?
|
|
20
|
-
<script src=engine/engine.js?
|
|
9
|
+
<script src=engine/engineDebug.js?109></script>
|
|
10
|
+
<script src=engine/engineUtilities.js?109></script>
|
|
11
|
+
<script src=engine/engineSettings.js?109></script>
|
|
12
|
+
<script src=engine/engineObject.js?109></script>
|
|
13
|
+
<script src=engine/engineDraw.js?109></script>
|
|
14
|
+
<script src=engine/engineInput.js?109></script>
|
|
15
|
+
<script src=engine/engineAudio.js?109></script>
|
|
16
|
+
<script src=engine/engineTileLayer.js?109></script>
|
|
17
|
+
<script src=engine/engineParticles.js?109></script>
|
|
18
|
+
<script src=engine/engineMedals.js?109></script>
|
|
19
|
+
<script src=engine/engineWebGL.js?109></script>
|
|
20
|
+
<script src=engine/engine.js?109></script>
|
|
21
21
|
|
|
22
22
|
<!-- You can also include all engine scripts like this... -->
|
|
23
23
|
<!-- <script src=engine/engine.all.js></script> -->
|
|
24
24
|
|
|
25
25
|
<!-- Add your game scripts here -->
|
|
26
|
-
<script src=game.js?
|
|
26
|
+
<script src=game.js?109></script>
|