matrix-engine-wgpu 1.0.5 → 1.1.0

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 (88) hide show
  1. package/.codesandbox/tasks.json +46 -0
  2. package/.devcontainer/devcontainer.json +22 -0
  3. package/.github/dependabot.yml +12 -0
  4. package/REFERENCE.md +5 -2
  5. package/dev.md +460 -0
  6. package/empty.js +7 -6
  7. package/examples/games/jamb/jamb.js +1127 -0
  8. package/examples/load-obj-file.js +67 -37
  9. package/examples/unlit-textures.js +26 -23
  10. package/examples.js +35 -3
  11. package/main.js +441 -43
  12. package/non-project-files/dev.txt +21 -0
  13. package/non-project-files/image1.png +0 -0
  14. package/non-project-files/image6.png +0 -0
  15. package/package.json +50 -41
  16. package/public/app.js +11409 -8893
  17. package/public/css/style.css +376 -112
  18. package/public/empty.html +1 -1
  19. package/public/empty.js +9890 -8885
  20. package/public/examples.html +10 -8
  21. package/public/examples.js +945 -203
  22. package/public/index.html +5 -7
  23. package/public/manifest copy.web +35 -0
  24. package/public/res/audios/block.mp3 +0 -0
  25. package/public/res/audios/dice1.mp3 +0 -0
  26. package/public/res/audios/dice2.mp3 +0 -0
  27. package/public/res/audios/start.mp3 +0 -0
  28. package/public/res/fonts/Accuratist.ttf +0 -0
  29. package/public/res/fonts/Closeness.ttf +0 -0
  30. package/public/res/fonts/WARGAMES.TTF +0 -0
  31. package/public/res/fonts/readme.txt +5 -0
  32. package/public/res/fonts/stormfaze.ttf +0 -0
  33. package/public/res/meshes/blender/cube.blend +0 -0
  34. package/public/res/meshes/blender/cube.blend1 +0 -0
  35. package/public/res/meshes/blender/cube.mtl +12 -0
  36. package/public/res/meshes/blender/cube.obj +46 -0
  37. package/public/res/meshes/blender/cube.png +0 -0
  38. package/public/res/meshes/blender/cubeSmartUV.blend +0 -0
  39. package/public/res/meshes/blender/cubeSmartUV.mtl +12 -0
  40. package/public/res/meshes/blender/cubeSmartUV.obj +46 -0
  41. package/public/res/meshes/blender/sphepe.blend +0 -0
  42. package/public/res/meshes/blender/sphepe.blend1 +0 -0
  43. package/public/res/meshes/blender/sphere.mtl +10 -0
  44. package/public/res/meshes/blender/sphere.obj +3402 -0
  45. package/public/res/meshes/jamb/bg.blend +0 -0
  46. package/public/res/meshes/jamb/bg.blend1 +0 -0
  47. package/public/res/meshes/jamb/bg.mtl +12 -0
  48. package/public/res/meshes/jamb/bg.obj +17 -0
  49. package/public/res/meshes/jamb/bg.png +0 -0
  50. package/public/res/meshes/jamb/dice-default.png +0 -0
  51. package/public/res/meshes/jamb/dice-mark.png +0 -0
  52. package/public/res/meshes/jamb/dice.mtl +12 -0
  53. package/public/res/meshes/jamb/dice.obj +40 -0
  54. package/public/res/meshes/jamb/dice.png +0 -0
  55. package/public/res/meshes/jamb/jamb-title.mtl +12 -0
  56. package/public/res/meshes/jamb/jamb-title.obj +26008 -0
  57. package/public/res/meshes/jamb/jamb.blend +0 -0
  58. package/public/res/meshes/jamb/jamb.blend1 +0 -0
  59. package/public/res/meshes/jamb/logo.png +0 -0
  60. package/public/res/meshes/jamb/nidzaDice.blend +0 -0
  61. package/public/res/meshes/jamb/nidzaDice.blend1 +0 -0
  62. package/public/res/meshes/jamb/pile.blend +0 -0
  63. package/public/res/meshes/jamb/simpleCube.blend +0 -0
  64. package/public/res/meshes/jamb/simpleCube.blend1 +0 -0
  65. package/public/res/meshes/jamb/sounds/roll1.wav +0 -0
  66. package/public/res/meshes/jamb/text.png +0 -0
  67. package/public/res/multilang/en.json +27 -0
  68. package/public/res/multilang/sr.json +27 -0
  69. package/public/test.html +636 -0
  70. package/public/three-test.js +165 -0
  71. package/public/worker.html +1 -1
  72. package/readme.md +232 -116
  73. package/src/engine/cube.js +10 -5
  74. package/src/engine/engine.js +3 -9
  75. package/src/engine/loader-obj.js +9 -6
  76. package/src/engine/matrix-class.js +240 -202
  77. package/src/engine/mesh-obj.js +605 -525
  78. package/src/engine/mesh.js +476 -0
  79. package/src/engine/raycast-test.js +93 -0
  80. package/src/engine/utils.js +129 -15
  81. package/src/multilang/lang.js +35 -0
  82. package/src/physics/matrix-ammo.js +204 -30
  83. package/src/shaders/fragment.wgsl.js +4 -2
  84. package/src/shaders/shaders.js +1 -1
  85. package/src/shaders/vertexShadow.wgsl.js +1 -1
  86. package/src/sounds/sounds.js +47 -0
  87. package/src/world.js +312 -236
  88. package/src/engine/matrix-mesh.js +0 -49
@@ -1,124 +1,136 @@
1
-
2
1
  @font-face {
3
2
  font-family: stormfaze;
4
- src: url(../res/fonts/stormfaze.ttf);
3
+ src: url(../../public/res/fonts/stormfaze.ttf);
5
4
  }
6
5
 
7
6
  @font-face {
8
7
  font-family: wargames;
9
- src: url(../res/fonts/wargames.ttf);
8
+ src: url(../../public/res/fonts/wargames.ttf);
10
9
  }
11
10
 
12
11
  body {
13
- color: lime;
14
- background-color:#95003d;
15
- font-family: "Courier New";
12
+ color: white;
13
+ background-color: #95003d;
14
+ font-family: "stormfaze";
16
15
  font-size: 14px;
17
16
  margin: 0;
18
17
  padding: 0;
19
18
  overflow: hidden;
20
19
  text-align: center;
20
+
21
+ -webkit-user-select: none;
22
+ /* Safari */
23
+ -ms-user-select: none;
24
+ /* IE 10 and IE 11 */
25
+ user-select: none;
26
+ /* Standard syntax */
27
+
28
+ -webkit-text-stroke-width: 1px;
29
+ -webkit-text-stroke-color: rgba(0, 0, 0, 0.575);
21
30
  }
22
31
 
32
+ .meBody {
33
+ font-family: stormfaze;
34
+ }
23
35
 
24
36
  .noselection {
25
- -webkit-touch-callout: none; /* Safari */
26
- user-select: none; /* standard syntax */
27
- -webkit-user-select: none; /* webkit (safari, chrome) browsers */
28
- -moz-user-select: none; /* mozilla browsers */
29
- -khtml-user-select: none; /* webkit (konqueror) browsers */
30
- -ms-user-select: none; /* IE10+ */
37
+ -webkit-touch-callout: none;
38
+ /* Safari */
39
+ user-select: none;
40
+ /* standard syntax */
41
+ -webkit-user-select: none;
42
+ /* webkit (safari, chrome) browsers */
43
+ -moz-user-select: none;
44
+ /* mozilla browsers */
45
+ -khtml-user-select: none;
46
+ /* webkit (konqueror) browsers */
47
+ -ms-user-select: none;
48
+ /* IE10+ */
31
49
  }
32
50
 
33
51
  *::-webkit-media-controls-panel {
34
- display: none !important;
35
- -webkit-appearance: none;
52
+ display: none !important;
53
+ -webkit-appearance: none;
36
54
  }
37
55
 
38
56
  /* Old shadow dom for play button */
39
57
  *::-webkit-media-controls-play-button {
40
- display: none !important;
41
- -webkit-appearance: none;
58
+ display: none !important;
59
+ -webkit-appearance: none;
42
60
  }
43
61
 
44
62
  /* This one works! */
45
63
  *::-webkit-media-controls-start-playback-button {
46
- display: none !important;
47
- -webkit-appearance: none;
64
+ display: none !important;
65
+ -webkit-appearance: none;
48
66
  }
49
67
 
50
68
  ::-webkit-scrollbar {
51
- width: 5px;
69
+ width: 5px;
52
70
  }
53
71
 
54
72
  ::-webkit-scrollbar-track {
55
- box-shadow: inset 0 0 5px rgb(102, 102, 102);
56
- border-radius: 8px;
73
+ box-shadow: inset 0 0 5px rgb(102, 102, 102);
74
+ border-radius: 8px;
57
75
  }
58
76
 
59
77
  body::-webkit-scrollbar-thumb {
60
- background: rgba(0, 0, 0, 0.1);
61
- border-radius: 9px;
78
+ background: rgba(0, 0, 0, 0.1);
79
+ border-radius: 9px;
62
80
  }
63
81
 
64
82
  body::-webkit-scrollbar-thumb:hover {
65
- background: rgba(0, 0, 0, 0.6);
83
+ background: rgba(0, 0, 0, 0.6);
66
84
  }
67
85
 
68
86
 
69
- textarea:focus, input:focus {
87
+ textarea:focus,
88
+ input:focus {
70
89
  outline: none;
71
90
  }
72
91
 
73
92
  a {
74
- font-family: "Courier New";
93
+ font-family: stormfaze;
75
94
  color: #0080ff;
76
95
  }
77
96
 
97
+ button {
98
+ font-family: stormfaze;
99
+ }
100
+
78
101
  iframe {
79
102
  border: none;
80
103
  }
81
104
 
82
105
  .noselect {
83
- -webkit-touch-callout: none; /* iOS Safari */
84
- -webkit-user-select: none; /* Safari */
85
- -khtml-user-select: none; /* Konqueror HTML */
86
- -moz-user-select: none; /* Old versions of Firefox */
87
- -ms-user-select: none; /* Internet Explorer/Edge */
88
- user-select: none; /* Non-prefixed version, currently
106
+ -webkit-touch-callout: none;
107
+ /* iOS Safari */
108
+ -webkit-user-select: none;
109
+ /* Safari */
110
+ -khtml-user-select: none;
111
+ /* Konqueror HTML */
112
+ -moz-user-select: none;
113
+ /* Old versions of Firefox */
114
+ -ms-user-select: none;
115
+ /* Internet Explorer/Edge */
116
+ user-select: none;
117
+ /* Non-prefixed version, currently
89
118
  supported by Chrome, Edge, Opera and Firefox */
90
119
  }
91
120
 
92
121
  #matrix-editor {
93
122
  position: absolute;
94
123
  left: 0;
95
- top:0;
124
+ top: 0;
96
125
  width: 400px;
97
126
  }
98
127
 
99
- .btnShadow {
100
- /* -webkit-box-shadow: inset 0px 1px 0px 0px rgb(52, 253, 189);
101
- -moz-box-shadow: inset 0px 1px 0px 0px rgb(52, 253, 189);
102
- box-shadow: inset 0px 1px 0px 0px rgb(52, 253, 189); */
103
- cursor: pointer;
104
- /* color: rgb(0, 255, 10);
105
- text-shadow: 0px 0px 7px #80ffe0; */
106
- font-family: stormfaze;
107
- }
108
-
109
- div.btnShadow:hover {
110
- opacity: 1;
111
- background-color: rgb(78, 255, 190);
112
- color:rgb(0, 0, 0);
113
- text-shadow: 0px 0px 20px #0dfdc1;
114
- }
115
-
116
128
  .debugBox {
117
- position:absolute;
118
- left:5px;
119
- bottom:0;
129
+ position: absolute;
130
+ left: 5px;
131
+ bottom: 0;
120
132
  font-size: 12px;
121
- width:200px;
133
+ width: 200px;
122
134
  height: 15px;
123
135
  background-color: black;
124
136
  color: lime;
@@ -126,80 +138,53 @@ div.btnShadow:hover {
126
138
 
127
139
  .textEditor {
128
140
  font-size: 10px;
129
- width : 100%;
141
+ width: 100%;
130
142
  max-width: 850px !important;
131
143
  min-width: 550px !important;
132
144
  }
133
145
 
134
- textarea {
135
- -webkit-box-shadow: inset 0px 0px 22px 2px rgba(0,255,30,1);
136
- -moz-box-shadow: inset 0px 0px 22px 2px rgba(0,255,30,1);
137
- box-shadow: inset 0px 0px 22px 1px rgba(0,255,30,1);
138
- background-color: black;
139
- color: lime;
140
- }
141
-
142
- .textureCanvas2d {
143
- display:none;
144
- position:absolute;
145
- left:-3000px;
146
- top:0px;
147
- width:512px;
148
- height:512px;
149
- }
150
-
151
- .add-button {
152
- text-align: center;
153
- text-decoration: none;
154
- display: inline-block;
155
- font-size: 16px;
156
- margin: 2px 2px;
157
- transition-duration: 0.4s;
158
- cursor: pointer;
159
- width:100%;
160
- width: -webkit-fill-available;
161
- height:30%;
162
- background-color: rgb(27, 27, 27);
163
- font-family: "stormfaze";
164
- border-radius: 15px;
165
- }
166
-
167
- .button1 {
168
- background-color: rgb(27, 27, 27);;
169
- color: rgb(255, 255, 255);
170
- border: 2px solid #80004b;
146
+ div {
147
+ cursor: default;
171
148
  }
172
149
 
173
- .button1:hover {
174
- background-color: #710243;
175
- color: white;
150
+ .header {
151
+ text-shadow: 0px 0px 14px #ffd52e;
152
+ background-color: black;
153
+ color: rgb(255, 255, 255);
176
154
  }
177
155
 
178
- .button2 {
179
- background-color: rgb(27, 27, 27);;
180
- color: white;
181
- border: 2px solid #4CAF50;
156
+ textarea {
157
+ -webkit-box-shadow: inset 0px 0px 22px 2px rgba(0, 255, 30, 1);
158
+ -moz-box-shadow: inset 0px 0px 22px 2px rgba(0, 255, 30, 1);
159
+ box-shadow: inset 0px 0px 22px 1px rgba(0, 255, 30, 1);
160
+ background-color: black;
161
+ color: lime;
182
162
  }
183
163
 
184
- .button2:hover {
185
- background-color: #95af4c;
186
- color: white;
164
+ .textureCanvas2d {
165
+ display: none;
166
+ position: absolute;
167
+ left: -3000px;
168
+ top: 0px;
169
+ width: 512px;
170
+ height: 512px;
187
171
  }
188
172
 
189
173
  /** Style for UI system hud controls */
190
174
 
191
175
  .matrixTagHolder {
192
- display:flex;
176
+ display: flex;
193
177
  flex-direction: column;
194
178
  position: absolute;
195
- left:0;top:0;
179
+ left: 0;
180
+ top: 0;
196
181
  background-color: black;
197
182
  color: #0080ff;
198
183
  font-family: stormfaze;
199
184
  }
200
185
 
201
186
  span {
202
- cursor: default;
187
+ cursor: inherit;
203
188
  width: 100px;
204
189
  }
205
190
 
@@ -230,19 +215,21 @@ span {
230
215
  display: flex;
231
216
  position: absolute;
232
217
  left: 5%;
233
- top:85%;
234
- width:90%;
218
+ top: 85%;
219
+ width: 90%;
235
220
  flex-direction: column;
236
221
  }
237
222
 
238
223
 
239
224
  .timeLineSlider {
240
- display:flex;
225
+ display: flex;
241
226
  flex-direction: row;
242
227
  }
243
- .timeLineSlider, p {
228
+
229
+ .timeLineSlider,
230
+ p {
244
231
  background: rgba(12, 122, 22, 0.5);
245
- width:100%;
232
+ width: 100%;
246
233
  margin: 5px 5px 5px 5px;
247
234
  }
248
235
 
@@ -251,7 +238,7 @@ span {
251
238
  -webkit-appearance: none;
252
239
  width: 100%;
253
240
  height: 15px;
254
- border-radius: 5px;
241
+ border-radius: 5px;
255
242
  background: #d3d3d3;
256
243
  outline: none;
257
244
  opacity: 0.7;
@@ -264,7 +251,7 @@ span {
264
251
  appearance: none;
265
252
  width: 25px;
266
253
  height: 25px;
267
- border-radius: 50%;
254
+ border-radius: 50%;
268
255
  background: #04AA6D;
269
256
  cursor: pointer;
270
257
  }
@@ -275,4 +262,281 @@ span {
275
262
  border-radius: 50%;
276
263
  background: #04AA6D;
277
264
  cursor: pointer;
265
+ }
266
+
267
+ .btn {
268
+ cursor: pointer;
269
+ background: #6e34d9;
270
+ background-image: -webkit-linear-gradient(top, #6e34d9, #0a027a);
271
+ background-image: -moz-linear-gradient(top, #6e34d9, #0a027a);
272
+ background-image: -ms-linear-gradient(top, #6e34d9, #0a027a);
273
+ background-image: -o-linear-gradient(top, #6e34d9, #0a027a);
274
+ background-image: linear-gradient(to bottom, #6e34d9, #0a027a);
275
+ -webkit-border-radius: 28;
276
+ -moz-border-radius: 28;
277
+ border-radius: 28px;
278
+ text-shadow: 0px 0px 14px #ffd52e;
279
+ -webkit-box-shadow: 0px 1px 26px #666666;
280
+ -moz-box-shadow: 0px 1px 26px #666666;
281
+ box-shadow: 0px 1px 26px #666666;
282
+ color: #ffffff;
283
+ font-size: 13px;
284
+ padding: 4px 8px 4px 8px;
285
+ text-decoration: none;
286
+ }
287
+
288
+ .btn:hover {
289
+ background: #0a027a;
290
+ background-image: -webkit-linear-gradient(top, #0a027a, #6e34d9);
291
+ background-image: -moz-linear-gradient(top, #0a027a, #6e34d9);
292
+ background-image: -ms-linear-gradient(top, #0a027a, #6e34d9);
293
+ background-image: -o-linear-gradient(top, #0a027a, #6e34d9);
294
+ background-image: linear-gradient(to bottom, #0a027a, #6e34d9);
295
+ text-decoration: none;
296
+ }
297
+
298
+ .btn2 {
299
+ cursor: pointer;
300
+ background: #d93434;
301
+ background-image: -webkit-linear-gradient(top, orangered, #0a027a);
302
+ background-image: -moz-linear-gradient(top, orangered, #0a027a);
303
+ background-image: -ms-linear-gradient(top, orangered, #0a027a);
304
+ background-image: -o-linear-gradient(top, orangered, #0a027a);
305
+ background-image: linear-gradient(to bottom, orangered, #0a027a);
306
+ -webkit-border-radius: 28;
307
+ -moz-border-radius: 28;
308
+ border-radius: 28px;
309
+ text-shadow: 0px 0px 14px #ffd52e;
310
+ -webkit-box-shadow: 0px 1px 26px #666666;
311
+ -moz-box-shadow: 0px 1px 26px #666666;
312
+ box-shadow: 0px 1px 26px #666666;
313
+ color: #ffffff;
314
+ font-size: 13px;
315
+ padding: 4px 8px 4px 8px;
316
+ text-decoration: none;
317
+ }
318
+
319
+ .btn2:hover {
320
+ background: #0a027a;
321
+ background-image: -webkit-linear-gradient(top, #0a027a, #6e34d9);
322
+ background-image: -moz-linear-gradient(top, #0a027a, #6e34d9);
323
+ background-image: -ms-linear-gradient(top, #0a027a, #6e34d9);
324
+ background-image: -o-linear-gradient(top, #0a027a, #6e34d9);
325
+ background-image: linear-gradient(to bottom, #0a027a, #6e34d9);
326
+ text-decoration: none;
327
+ }
328
+
329
+ #blocker {
330
+ z-index: 2;
331
+ flex-direction: column;
332
+ position: absolute;
333
+ left: 0;
334
+ top: 0;
335
+ width: 100%;
336
+ height: 100%;
337
+ display: flex;
338
+
339
+ background: linear-gradient(291deg, #2960bb, #b22710, #b22710);
340
+ background-size: 600% 600%;
341
+
342
+ -webkit-animation: bganim 10s ease infinite;
343
+ -moz-animation: bganim 10s ease infinite;
344
+ -o-animation: bganim 10s ease infinite;
345
+ animation: bganim 10s ease infinite;
346
+ }
347
+
348
+ #messageBox {
349
+ font-size: xx-large;
350
+ padding: 10%;
351
+ align-items: center;
352
+ text-align: center;
353
+ vertical-align: middle;
354
+ }
355
+
356
+ #msgBox {
357
+ text-shadow: 0px 4px 4px #282828;
358
+ -webkit-user-select: none;
359
+ /* Safari */
360
+ -ms-user-select: none;
361
+ /* IE 10 and IE 11 */
362
+ user-select: none;
363
+ /* Standard syntax */
364
+ background: rgb(2, 0, 36);
365
+ background: radial-gradient(circle, rgba(2, 0, 36, 1) 0%, rgba(9, 81, 121, 0.8463760504201681) 34%, rgba(0, 212, 255, 1) 100%);
366
+ }
367
+
368
+ .msg-box {
369
+ display: none;
370
+ position: absolute;
371
+ top: 30px;
372
+ left: 50%;
373
+ translate: -50%;
374
+ border-radius: 6px !important;
375
+ font-size: 15px !important;
376
+ width: 300px;
377
+ padding: 10px;
378
+ font-family: Arial, Helvetica, sans-serif;
379
+
380
+ &.error {
381
+ /* background-color: rgb(93, 4, 5); */
382
+ color: rgb(255, 0, 30);
383
+ }
384
+
385
+ &.success {
386
+ /* background-color: rgb(220, 14, 14); */
387
+ color: rgb(32, 255, 84);
388
+ text-align: center;
389
+ margin-left: -150px;
390
+ z-index: 20;
391
+ }
392
+ }
393
+
394
+ .canPlay {
395
+ border: solid limegreen 1px;
396
+ }
397
+
398
+ .canNotPlay {
399
+ border: unset;
400
+ }
401
+
402
+
403
+ .myTheme1 {
404
+ background: rgb(235, 1, 110);
405
+ background: radial-gradient(circle, rgb(255, 73, 179) 7%, rgba(0, 144, 224, 0.9332107843137255) 57%, rgba(0, 212, 255, 1) 85%);
406
+ }
407
+
408
+ .stroke {
409
+
410
+ text-shadow: 0px 4px 4px #282828;
411
+
412
+ -webkit-text-stroke-width: 1px;
413
+ -webkit-text-stroke-color: black;
414
+ }
415
+
416
+ .animate1 {
417
+ text-shadow: 0px 4px 4px #282828;
418
+ -webkit-text-stroke-width: 1px;
419
+ -webkit-text-stroke-color: black;
420
+
421
+ background: linear-gradient(270deg, #ff0270, #02c5ff);
422
+ background-size: 50% 50%;
423
+
424
+ -webkit-animation: AnimationName 2s ease infinite;
425
+ -moz-animation: AnimationName 2s ease infinite;
426
+ animation: AnimationName 2s ease infinite;
427
+ }
428
+
429
+ @-webkit-keyframes AnimationName {
430
+ 0%{background-position:0% 50%}
431
+ 50%{background-position:100% 50%}
432
+ 100%{background-position:0% 50%}
433
+ }
434
+ @-moz-keyframes AnimationName {
435
+ 0%{background-position:0% 50%}
436
+ 50%{background-position:100% 50%}
437
+ 100%{background-position:0% 50%}
438
+ }
439
+ @keyframes AnimationName {
440
+ 0%{background-position:0% 50%}
441
+ 50%{background-position:100% 50%}
442
+ 100%{background-position:0% 50%}
443
+ }
444
+
445
+
446
+ .bganim1 {
447
+ background: linear-gradient(291deg, #2960bb, #b22710, #b22710);
448
+ background-size: 600% 600%;
449
+
450
+ -webkit-animation: bganim 10s ease infinite;
451
+ -moz-animation: bganim 10s ease infinite;
452
+ -o-animation: bganim 10s ease infinite;
453
+ animation: bganim 10s ease infinite;
454
+ }
455
+
456
+ @-webkit-keyframes bganim {
457
+ 0%{background-position:0% 45%}
458
+ 50%{background-position:100% 56%}
459
+ 100%{background-position:0% 45%}
460
+ }
461
+ @-moz-keyframes bganim {
462
+ 0%{background-position:0% 45%}
463
+ 50%{background-position:100% 56%}
464
+ 100%{background-position:0% 45%}
465
+ }
466
+ @-o-keyframes bganim {
467
+ 0%{background-position:0% 45%}
468
+ 50%{background-position:100% 56%}
469
+ 100%{background-position:0% 45%}
470
+ }
471
+ @keyframes bganim {
472
+ 0%{background-position:0% 45%}
473
+ 50%{background-position:100% 56%}
474
+ 100%{background-position:0% 45%}
475
+ }
476
+
477
+
478
+ /* The switch - the box around the slider */
479
+ .switch {
480
+ position: relative;
481
+ display: inline-block;
482
+ width: 60px;
483
+ height: 34px;
484
+ }
485
+
486
+ /* Hide default HTML checkbox */
487
+ .switch input {
488
+ opacity: 0;
489
+ width: 0;
490
+ height: 0;
491
+ }
492
+
493
+ /* The slider */
494
+ .sliderSwitch {
495
+ position: absolute;
496
+ cursor: pointer;
497
+ top: 0;
498
+ left: 0;
499
+ right: 0;
500
+ bottom: 0;
501
+ background-color: #ccc;
502
+ -webkit-transition: .4s;
503
+ transition: .4s;
504
+ }
505
+
506
+ .sliderSwitch:before {
507
+ position: absolute;
508
+ content: "";
509
+ height: 26px;
510
+ width: 26px;
511
+ left: 4px;
512
+ bottom: 4px;
513
+ background-color: white;
514
+ -webkit-transition: .4s;
515
+ transition: .4s;
516
+ }
517
+
518
+ input:checked + .sliderSwitch {
519
+ background-color: #2196F3;
520
+ }
521
+
522
+ input:focus + .sliderSwitch {
523
+ box-shadow: 0 0 1px #2196F3;
524
+ }
525
+
526
+ input:checked + .sliderSwitch:before {
527
+ -webkit-transform: translateX(26px);
528
+ -ms-transform: translateX(26px);
529
+ transform: translateX(26px);
530
+ }
531
+
532
+ .sliderSwitch span {
533
+ width: unset;
534
+ }
535
+ /* Rounded sliders */
536
+ .sliderSwitch.round {
537
+ border-radius: 34px;
538
+ }
539
+
540
+ .sliderSwitch.round:before {
541
+ border-radius: 50%;
278
542
  }
package/public/empty.html CHANGED
@@ -7,7 +7,7 @@
7
7
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
8
8
  <link defer rel="stylesheet" href="css/style.css" />
9
9
  <link rel="apple-touch-icon" href="res/icons/512.png" />
10
- <meta name="apple-mobile-web-app-capable" content="yes" />
10
+ <meta name="mobile-web-app-capable" content="yes" />
11
11
  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
12
12
  <meta name="theme-color" content="#000000" />
13
13
  <!-- <script defer src="./lib/gl-matrix-min.js"></script> -->