elation-engine 0.9.113 → 0.9.115

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 (91) hide show
  1. package/css/systems/render.css +5 -1
  2. package/package.json +1 -1
  3. package/scripts/assets.js +103 -20
  4. package/scripts/assetworker.js +18 -1
  5. package/scripts/external/holoplay.js +1494 -0
  6. package/scripts/external/octree.js +0 -0
  7. package/scripts/external/three/CSS3DRenderer.js +46 -43
  8. package/scripts/external/three/CubemapToEquirectangular.js +1 -1
  9. package/scripts/external/three/three-extras.js +1553 -392
  10. package/scripts/external/three/three-icosa.js +2575 -0
  11. package/scripts/external/three/three-loaders.js +925 -133
  12. package/scripts/external/three/three-postprocessing.js +3 -3
  13. package/scripts/external/three/three-r116dev.js +50930 -0
  14. package/scripts/external/three/three-spotlighttextures.js +50953 -0
  15. package/scripts/external/three/three-vrm.js +2 -2
  16. package/scripts/external/three/three-working.js +35968 -0
  17. package/scripts/external/three/three.js +38532 -24087
  18. package/scripts/external/three-mesh-bvh.js +5370 -0
  19. package/scripts/external/three-old/BVHLoader.js +406 -0
  20. package/scripts/external/three-old/ColladaLoader.js +5519 -0
  21. package/scripts/external/three-old/ColladaLoader2.js +1694 -0
  22. package/scripts/external/three-old/CubemapToEquirectangular.js +188 -0
  23. package/scripts/external/three-old/DDSLoader.js +269 -0
  24. package/scripts/external/three-old/FBXLoader-mine.js +5063 -0
  25. package/scripts/external/three-old/FBXLoader.js +5112 -0
  26. package/scripts/external/three-old/FlyControls.js +295 -0
  27. package/scripts/external/three-old/GLTF2Loader.js +2950 -0
  28. package/scripts/external/three-old/GLTFLoader.js +2213 -0
  29. package/scripts/external/three-old/JSONLoader.js +435 -0
  30. package/scripts/external/three-old/MTLLoader.js +533 -0
  31. package/scripts/external/three-old/OBJLoader-experimental.js +874 -0
  32. package/scripts/external/three-old/OBJLoader-working.js +727 -0
  33. package/scripts/external/three-old/OBJLoader.js +723 -0
  34. package/scripts/external/three-old/OBJMTLLoader.js +440 -0
  35. package/scripts/external/three-old/OrbitControls.js +592 -0
  36. package/scripts/external/three-old/PLYLoader.js +517 -0
  37. package/scripts/external/three-old/TransformControls.js +1100 -0
  38. package/scripts/external/three-old/VRMLLoader.js +1021 -0
  39. package/scripts/external/three-old/glTFLoader-combined.js +2513 -0
  40. package/scripts/external/three-old/nodethree.js +44018 -0
  41. package/scripts/external/three-old/render/BleachBypassShader.js +64 -0
  42. package/scripts/external/three-old/render/BloomPass.js +116 -0
  43. package/scripts/external/three-old/render/CSS3DRenderer.js +310 -0
  44. package/scripts/external/three-old/render/ClearPass.js +44 -0
  45. package/scripts/external/three-old/render/ConvolutionShader.js +101 -0
  46. package/scripts/external/three-old/render/CopyShader.js +46 -0
  47. package/scripts/external/three-old/render/EffectComposer.js +211 -0
  48. package/scripts/external/three-old/render/FXAAShader.js +88 -0
  49. package/scripts/external/three-old/render/FilmPass.js +60 -0
  50. package/scripts/external/three-old/render/FilmShader.js +104 -0
  51. package/scripts/external/three-old/render/ManualMSAARenderPass.js +168 -0
  52. package/scripts/external/three-old/render/MaskPass.js +97 -0
  53. package/scripts/external/three-old/render/OculusRenderPass.js +84 -0
  54. package/scripts/external/three-old/render/OculusRiftEffect.js +240 -0
  55. package/scripts/external/three-old/render/PortalRenderPass.js +166 -0
  56. package/scripts/external/three-old/render/RecordingPass.js +208 -0
  57. package/scripts/external/three-old/render/RenderPass.js +57 -0
  58. package/scripts/external/three-old/render/SSAOShader.js +259 -0
  59. package/scripts/external/three-old/render/SepiaShader.js +54 -0
  60. package/scripts/external/three-old/render/ShaderPass.js +66 -0
  61. package/scripts/external/three-old/render/VREffect.js +482 -0
  62. package/scripts/external/three-old/shimthree.js +23 -0
  63. package/scripts/external/three-old/stats.js +6 -0
  64. package/scripts/external/three-old/three-88dev.js +45004 -0
  65. package/scripts/external/three-old/three-backgroundoptimization.js +44432 -0
  66. package/scripts/external/three-old/three-updates.js +44735 -0
  67. package/scripts/external/three-old/three-working.js +44719 -0
  68. package/scripts/external/three-old/three.js +44431 -0
  69. package/scripts/external/three-old/threex.rendererstats.js +66 -0
  70. package/scripts/external/three-old/tween.js +13 -0
  71. package/scripts/external/webvr-polyfill-new.js +3497 -0
  72. package/scripts/external/webvr-polyfill-newest.js +3491 -0
  73. package/scripts/external/webvr-polyfill-old.js +6337 -0
  74. package/scripts/geometries.js +2 -2
  75. package/scripts/math.js +6 -6
  76. package/scripts/systems/admin.js +1 -1
  77. package/scripts/systems/controls.js +6 -4
  78. package/scripts/systems/physics.js +10 -10
  79. package/scripts/systems/render.js +58 -20
  80. package/scripts/systems/render2.js +38 -0
  81. package/scripts/things/camera.js +6 -1
  82. package/scripts/things/generic-trackedvectors.js +1875 -0
  83. package/scripts/things/generic.js +3 -4
  84. package/scripts/things/label2d.js +1 -1
  85. package/scripts/things/leapmotion.js +6 -6
  86. package/scripts/things/menu.js +1 -1
  87. package/scripts/things/player-bak.js +638 -0
  88. package/scripts/things/player.js +28 -10
  89. package/scripts/things/skysphere.js +1 -1
  90. package/scripts/things/terrain.js +1 -1
  91. package/scripts/things/text.js +1 -1
@@ -0,0 +1,533 @@
1
+ /**
2
+ * Loads a Wavefront .mtl file specifying materials
3
+ *
4
+ * @author angelxuanchang
5
+ */
6
+
7
+ THREE.MTLLoader = function( manager ) {
8
+
9
+ this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
10
+
11
+ };
12
+
13
+ Object.assign( THREE.MTLLoader.prototype, THREE.EventDispatcher.prototype, {
14
+
15
+ /**
16
+ * Loads and parses a MTL asset from a URL.
17
+ *
18
+ * @param {String} url - URL to the MTL file.
19
+ * @param {Function} [onLoad] - Callback invoked with the loaded object.
20
+ * @param {Function} [onProgress] - Callback for download progress.
21
+ * @param {Function} [onError] - Callback for download errors.
22
+ *
23
+ * @see setPath setTexturePath
24
+ *
25
+ * @note In order for relative texture references to resolve correctly
26
+ * you must call setPath and/or setTexturePath explicitly prior to load.
27
+ */
28
+ load: function ( url, onLoad, onProgress, onError ) {
29
+
30
+ var scope = this;
31
+
32
+ var loader = new THREE.FileLoader( this.manager );
33
+ loader.setPath( this.path );
34
+ loader.load( url, function ( text ) {
35
+
36
+ onLoad( scope.parse( text ) );
37
+
38
+ }, onProgress, onError );
39
+
40
+ },
41
+
42
+ /**
43
+ * Set base path for resolving references.
44
+ * If set this path will be prepended to each loaded and found reference.
45
+ *
46
+ * @see setTexturePath
47
+ * @param {String} path
48
+ *
49
+ * @example
50
+ * mtlLoader.setPath( 'assets/obj/' );
51
+ * mtlLoader.load( 'my.mtl', ... );
52
+ */
53
+ setPath: function ( path ) {
54
+
55
+ this.path = path;
56
+
57
+ },
58
+
59
+ /**
60
+ * Set base path for resolving texture references.
61
+ * If set this path will be prepended found texture reference.
62
+ * If not set and setPath is, it will be used as texture base path.
63
+ *
64
+ * @see setPath
65
+ * @param {String} path
66
+ *
67
+ * @example
68
+ * mtlLoader.setPath( 'assets/obj/' );
69
+ * mtlLoader.setTexturePath( 'assets/textures/' );
70
+ * mtlLoader.load( 'my.mtl', ... );
71
+ */
72
+ setTexturePath: function( path ) {
73
+
74
+ this.texturePath = path;
75
+
76
+ },
77
+
78
+ setBaseUrl: function( path ) {
79
+
80
+ console.warn( 'THREE.MTLLoader: .setBaseUrl() is deprecated. Use .setTexturePath( path ) for texture path or .setPath( path ) for general base path instead.' );
81
+
82
+ this.setTexturePath( path );
83
+
84
+ },
85
+
86
+ setCrossOrigin: function ( value ) {
87
+
88
+ this.crossOrigin = value;
89
+
90
+ },
91
+
92
+ setMaterialOptions: function ( value ) {
93
+
94
+ this.materialOptions = value;
95
+
96
+ },
97
+
98
+ /**
99
+ * Parses a MTL file.
100
+ *
101
+ * @param {String} text - Content of MTL file
102
+ * @return {THREE.MTLLoader.MaterialCreator}
103
+ *
104
+ * @see setPath setTexturePath
105
+ *
106
+ * @note In order for relative texture references to resolve correctly
107
+ * you must call setPath and/or setTexturePath explicitly prior to parse.
108
+ */
109
+ parse: function ( text ) {
110
+
111
+ var lines = text.split( '\n' );
112
+ var info = {};
113
+ var delimiter_pattern = /\s+/;
114
+ var materialsInfo = {};
115
+
116
+ for ( var i = 0; i < lines.length; i ++ ) {
117
+
118
+ var line = lines[ i ];
119
+ line = line.trim();
120
+
121
+ if ( line.length === 0 || line.charAt( 0 ) === '#' ) {
122
+
123
+ // Blank line or comment ignore
124
+ continue;
125
+
126
+ }
127
+
128
+ var pos = line.indexOf( ' ' );
129
+
130
+ var key = ( pos >= 0 ) ? line.substring( 0, pos ) : line;
131
+ key = key.toLowerCase();
132
+
133
+ var value = ( pos >= 0 ) ? line.substring( pos + 1 ) : '';
134
+ value = value.trim();
135
+
136
+ if ( key === 'newmtl' ) {
137
+
138
+ // New material
139
+
140
+ info = { name: value };
141
+ materialsInfo[ value ] = info;
142
+
143
+ } else if ( info ) {
144
+
145
+ if ( key === 'ka' || key === 'kd' || key === 'ks' ) {
146
+
147
+ var ss = value.split( delimiter_pattern, 3 );
148
+ info[ key ] = [ parseFloat( ss[ 0 ] ), parseFloat( ss[ 1 ] ), parseFloat( ss[ 2 ] ) ];
149
+
150
+ } else {
151
+
152
+ info[ key ] = value;
153
+
154
+ }
155
+
156
+ }
157
+
158
+ }
159
+
160
+ var materialCreator = new THREE.MTLLoader.MaterialCreator( this.texturePath || this.path, this.materialOptions );
161
+ materialCreator.setCrossOrigin( this.crossOrigin );
162
+ materialCreator.setManager( this.manager );
163
+ materialCreator.setMaterials( materialsInfo );
164
+ return materialCreator;
165
+
166
+ }
167
+
168
+ } );
169
+
170
+ /**
171
+ * Create a new THREE-MTLLoader.MaterialCreator
172
+ * @param baseUrl - Url relative to which textures are loaded
173
+ * @param options - Set of options on how to construct the materials
174
+ * side: Which side to apply the material
175
+ * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide
176
+ * wrap: What type of wrapping to apply for textures
177
+ * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping
178
+ * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255
179
+ * Default: false, assumed to be already normalized
180
+ * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's
181
+ * Default: false
182
+ * @constructor
183
+ */
184
+
185
+ THREE.MTLLoader.MaterialCreator = function( baseUrl, options ) {
186
+
187
+ this.baseUrl = baseUrl || '';
188
+ this.options = options;
189
+ this.materialsInfo = {};
190
+ this.materials = {};
191
+ this.materialsArray = [];
192
+ this.nameLookup = {};
193
+
194
+ this.side = ( this.options && this.options.side ) ? this.options.side : THREE.FrontSide;
195
+ this.wrap = ( this.options && this.options.wrap ) ? this.options.wrap : THREE.RepeatWrapping;
196
+
197
+ };
198
+
199
+ THREE.MTLLoader.MaterialCreator.prototype = {
200
+
201
+ constructor: THREE.MTLLoader.MaterialCreator,
202
+
203
+ setCrossOrigin: function ( value ) {
204
+
205
+ this.crossOrigin = value;
206
+
207
+ },
208
+
209
+ setManager: function ( value ) {
210
+
211
+ this.manager = value;
212
+
213
+ },
214
+
215
+ setMaterials: function( materialsInfo ) {
216
+
217
+ this.materialsInfo = this.convert( materialsInfo );
218
+ this.materials = {};
219
+ this.materialsArray = [];
220
+ this.nameLookup = {};
221
+
222
+ },
223
+
224
+ convert: function( materialsInfo ) {
225
+
226
+ if ( ! this.options ) return materialsInfo;
227
+
228
+ var converted = {};
229
+
230
+ for ( var mn in materialsInfo ) {
231
+
232
+ // Convert materials info into normalized form based on options
233
+
234
+ var mat = materialsInfo[ mn ];
235
+
236
+ var covmat = {};
237
+
238
+ converted[ mn ] = covmat;
239
+
240
+ for ( var prop in mat ) {
241
+
242
+ var save = true;
243
+ var value = mat[ prop ];
244
+ var lprop = prop.toLowerCase();
245
+
246
+ switch ( lprop ) {
247
+
248
+ case 'kd':
249
+ case 'ka':
250
+ case 'ks':
251
+
252
+ // Diffuse color (color under white light) using RGB values
253
+
254
+ if ( this.options && this.options.normalizeRGB ) {
255
+
256
+ value = [ value[ 0 ] / 255, value[ 1 ] / 255, value[ 2 ] / 255 ];
257
+
258
+ }
259
+
260
+ if ( this.options && this.options.ignoreZeroRGBs ) {
261
+
262
+ if ( value[ 0 ] === 0 && value[ 1 ] === 0 && value[ 2 ] === 0 ) {
263
+
264
+ // ignore
265
+
266
+ save = false;
267
+
268
+ }
269
+
270
+ }
271
+
272
+ break;
273
+
274
+ default:
275
+
276
+ break;
277
+ }
278
+
279
+ if ( save ) {
280
+
281
+ covmat[ lprop ] = value;
282
+
283
+ }
284
+
285
+ }
286
+
287
+ }
288
+
289
+ return converted;
290
+
291
+ },
292
+
293
+ preload: function () {
294
+
295
+ for ( var mn in this.materialsInfo ) {
296
+
297
+ this.create( mn );
298
+
299
+ }
300
+
301
+ },
302
+
303
+ getIndex: function( materialName ) {
304
+
305
+ return this.nameLookup[ materialName ];
306
+
307
+ },
308
+
309
+ getAsArray: function() {
310
+
311
+ var index = 0;
312
+
313
+ for ( var mn in this.materialsInfo ) {
314
+
315
+ this.materialsArray[ index ] = this.create( mn );
316
+ this.nameLookup[ mn ] = index;
317
+ index ++;
318
+
319
+ }
320
+
321
+ return this.materialsArray;
322
+
323
+ },
324
+
325
+ create: function ( materialName ) {
326
+
327
+ if ( this.materials[ materialName ] === undefined ) {
328
+
329
+ this.createMaterial_( materialName );
330
+
331
+ }
332
+
333
+ return this.materials[ materialName ];
334
+
335
+ },
336
+
337
+ createMaterial_: function ( materialName ) {
338
+
339
+ // Create material
340
+
341
+ var scope = this;
342
+ var mat = this.materialsInfo[ materialName ];
343
+ var params = {
344
+
345
+ name: materialName,
346
+ side: this.side
347
+
348
+ };
349
+
350
+ var resolveURL = function ( baseUrl, url ) {
351
+
352
+ if ( typeof url !== 'string' || url === '' )
353
+ return '';
354
+
355
+ // Absolute URL
356
+ if ( /^https?:\/\//i.test( url ) ) {
357
+ return url;
358
+ }
359
+
360
+ return baseUrl + url;
361
+ };
362
+
363
+ function setMapForType ( mapType, value ) {
364
+
365
+ if ( params[ mapType ] ) return; // Keep the first encountered texture
366
+
367
+ var texParams = scope.getTextureParams( value, params );
368
+ var map = scope.loadTexture( resolveURL( scope.baseUrl, texParams.url ) );
369
+
370
+ map.repeat.copy( texParams.scale );
371
+ map.offset.copy( texParams.offset );
372
+
373
+ map.wrapS = scope.wrap;
374
+ map.wrapT = scope.wrap;
375
+
376
+ params[ mapType ] = map;
377
+ }
378
+
379
+ for ( var prop in mat ) {
380
+
381
+ var value = mat[ prop ];
382
+
383
+ if ( value === '' ) continue;
384
+
385
+ switch ( prop.toLowerCase() ) {
386
+
387
+ // Ns is material specular exponent
388
+
389
+ case 'kd':
390
+
391
+ // Diffuse color (color under white light) using RGB values
392
+
393
+ params.color = new THREE.Color().fromArray( value );
394
+
395
+ break;
396
+
397
+ case 'ks':
398
+
399
+ // Specular color (color when light is reflected from shiny surface) using RGB values
400
+ params.specular = new THREE.Color().fromArray( value );
401
+
402
+ break;
403
+
404
+ case 'map_kd':
405
+
406
+ // Diffuse texture map
407
+
408
+ setMapForType( "map", value );
409
+
410
+ break;
411
+
412
+ case 'map_ks':
413
+
414
+ // Specular map
415
+
416
+ setMapForType( "specularMap", value );
417
+
418
+ break;
419
+
420
+ case 'map_bump':
421
+ case 'bump':
422
+
423
+ // Bump texture map
424
+
425
+ setMapForType( "bumpMap", value );
426
+
427
+ break;
428
+
429
+ case 'ns':
430
+
431
+ // The specular exponent (defines the focus of the specular highlight)
432
+ // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000.
433
+
434
+ params.shininess = parseFloat( value );
435
+
436
+ break;
437
+
438
+ case 'd':
439
+
440
+ if ( value < 1 ) {
441
+
442
+ params.opacity = value;
443
+ params.transparent = true;
444
+
445
+ }
446
+
447
+ break;
448
+
449
+ case 'Tr':
450
+
451
+ if ( value > 0 ) {
452
+
453
+ params.opacity = 1 - value;
454
+ params.transparent = true;
455
+
456
+ }
457
+
458
+ break;
459
+
460
+ default:
461
+ break;
462
+
463
+ }
464
+
465
+ }
466
+
467
+ this.materials[ materialName ] = new THREE.MeshPhongMaterial( params );
468
+ return this.materials[ materialName ];
469
+ },
470
+
471
+ getTextureParams: function( value, matParams ) {
472
+
473
+ var texParams = {
474
+
475
+ scale: new THREE.Vector2( 1, 1 ),
476
+ offset: new THREE.Vector2( 0, 0 ),
477
+
478
+ };
479
+
480
+ var items = value.split(/\s+/);
481
+ var pos;
482
+
483
+ pos = items.indexOf('-bm');
484
+ if (pos >= 0) {
485
+
486
+ matParams.bumpScale = parseFloat( items[pos+1] );
487
+ items.splice( pos, 2 );
488
+
489
+ }
490
+
491
+ pos = items.indexOf('-s');
492
+ if (pos >= 0) {
493
+
494
+ texParams.scale.set( parseFloat( items[pos+1] ), parseFloat( items[pos+2] ) );
495
+ items.splice( pos, 4 ); // we expect 3 parameters here!
496
+
497
+ }
498
+
499
+ pos = items.indexOf('-o');
500
+ if (pos >= 0) {
501
+
502
+ texParams.offset.set( parseFloat( items[pos+1] ), parseFloat( items[pos+2] ) );
503
+ items.splice( pos, 4 ); // we expect 3 parameters here!
504
+
505
+ }
506
+
507
+ texParams.url = items.join(' ').trim();
508
+ return texParams;
509
+
510
+ },
511
+
512
+ loadTexture: function ( url, mapping, onLoad, onProgress, onError ) {
513
+
514
+ var texture;
515
+ var loader = THREE.Loader.Handlers.get( url );
516
+ var manager = ( this.manager !== undefined ) ? this.manager : THREE.DefaultLoadingManager;
517
+
518
+ if ( loader === null ) {
519
+
520
+ loader = new THREE.TextureLoader( manager );
521
+
522
+ }
523
+
524
+ if ( loader.setCrossOrigin ) loader.setCrossOrigin( this.crossOrigin );
525
+ texture = loader.load( url, onLoad, onProgress, onError );
526
+
527
+ if ( mapping !== undefined ) texture.mapping = mapping;
528
+
529
+ return texture;
530
+
531
+ }
532
+
533
+ };