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,517 @@
1
+ /**
2
+ * @author Wei Meng / http://about.me/menway
3
+ *
4
+ * Description: A THREE loader for PLY ASCII files (known as the Polygon
5
+ * File Format or the Stanford Triangle Format).
6
+ *
7
+ * Limitations: ASCII decoding assumes file is UTF-8.
8
+ *
9
+ * Usage:
10
+ * var loader = new THREE.PLYLoader();
11
+ * loader.load('./models/ply/ascii/dolphins.ply', function (geometry) {
12
+ *
13
+ * scene.add( new THREE.Mesh( geometry ) );
14
+ *
15
+ * } );
16
+ *
17
+ * If the PLY file uses non standard property names, they can be mapped while
18
+ * loading. For example, the following maps the properties
19
+ * “diffuse_(red|green|blue)” in the file to standard color names.
20
+ *
21
+ * loader.setPropertyNameMapping( {
22
+ * diffuse_red: 'red',
23
+ * diffuse_green: 'green',
24
+ * diffuse_blue: 'blue'
25
+ * } );
26
+ *
27
+ */
28
+
29
+
30
+ THREE.PLYLoader = function ( manager ) {
31
+
32
+ this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
33
+
34
+ this.propertyNameMapping = {};
35
+
36
+ };
37
+
38
+ THREE.PLYLoader.prototype = {
39
+
40
+ constructor: THREE.PLYLoader,
41
+
42
+ load: function ( url, onLoad, onProgress, onError ) {
43
+
44
+ var scope = this;
45
+
46
+ var loader = new THREE.FileLoader( this.manager );
47
+ loader.setResponseType( 'arraybuffer' );
48
+ loader.load( url, function ( text ) {
49
+
50
+ onLoad( scope.parse( text ) );
51
+
52
+ }, onProgress, onError );
53
+
54
+ },
55
+
56
+ setPropertyNameMapping: function ( mapping ) {
57
+
58
+ this.propertyNameMapping = mapping;
59
+
60
+ },
61
+
62
+ parse: function ( data ) {
63
+
64
+ var binstr;
65
+
66
+ function isASCII( data ) {
67
+
68
+ if (!binstr) binstr = bin2str( data );
69
+
70
+ var header = parseHeader( binstr );
71
+ return header.format === 'ascii';
72
+
73
+ }
74
+
75
+ function bin2str( buf ) {
76
+
77
+ var array_buffer = new Uint8Array( buf );
78
+ var str = '';
79
+
80
+ for ( var i = 0; i < buf.byteLength; i ++ ) {
81
+
82
+ str += String.fromCharCode( array_buffer[ i ] ); // implicitly assumes little-endian
83
+
84
+ }
85
+
86
+ return str;
87
+
88
+ }
89
+
90
+ function str2bin( buf ) {
91
+ var arr = new Uint8Array(buf.length);
92
+ for (var i = 0; i < buf.length; i++) {
93
+ arr[i] = buf.charCodeAt(i);
94
+ }
95
+ return arr.buffer;
96
+ }
97
+
98
+ function parseHeader( data ) {
99
+
100
+ var patternHeader = /ply([\s\S]*)end_header\s/;
101
+ var headerText = '';
102
+ var headerLength = 0;
103
+ var result = patternHeader.exec( data );
104
+
105
+ if ( result !== null ) {
106
+
107
+ headerText = result [ 1 ];
108
+ headerLength = result[ 0 ].length;
109
+
110
+ }
111
+
112
+ var header = {
113
+ comments: [],
114
+ elements: [],
115
+ headerLength: headerLength
116
+ };
117
+
118
+ var lines = headerText.split( '\n' );
119
+ var currentElement;
120
+ var lineType, lineValues;
121
+
122
+ function make_ply_element_property( propertValues, propertyNameMapping ) {
123
+
124
+ var property = { type: propertValues[ 0 ] };
125
+
126
+ if ( property.type === 'list' ) {
127
+
128
+ property.name = propertValues[ 3 ];
129
+ property.countType = propertValues[ 1 ];
130
+ property.itemType = propertValues[ 2 ];
131
+
132
+ } else {
133
+
134
+ property.name = propertValues[ 1 ];
135
+
136
+ }
137
+
138
+ if ( property.name in propertyNameMapping ) {
139
+
140
+ property.name = propertyNameMapping[ property.name ];
141
+
142
+ }
143
+
144
+ return property;
145
+
146
+ }
147
+
148
+ for ( var i = 0; i < lines.length; i ++ ) {
149
+
150
+ var line = lines[ i ];
151
+ line = line.trim();
152
+
153
+ if ( line === '' ) continue;
154
+
155
+ lineValues = line.split( /\s+/ );
156
+ lineType = lineValues.shift();
157
+ line = lineValues.join( ' ' );
158
+
159
+ switch ( lineType ) {
160
+
161
+ case 'format':
162
+
163
+ header.format = lineValues[ 0 ];
164
+ header.version = lineValues[ 1 ];
165
+
166
+ break;
167
+
168
+ case 'comment':
169
+
170
+ header.comments.push( line );
171
+
172
+ break;
173
+
174
+ case 'element':
175
+
176
+ if ( currentElement !== undefined ) {
177
+
178
+ header.elements.push( currentElement );
179
+
180
+ }
181
+
182
+ currentElement = {};
183
+ currentElement.name = lineValues[ 0 ];
184
+ currentElement.count = parseInt( lineValues[ 1 ] );
185
+ currentElement.properties = [];
186
+
187
+ break;
188
+
189
+ case 'property':
190
+
191
+ currentElement.properties.push( make_ply_element_property( lineValues, scope.propertyNameMapping ) );
192
+
193
+ break;
194
+
195
+
196
+ default:
197
+
198
+ console.log( 'unhandled', lineType, lineValues );
199
+
200
+ }
201
+
202
+ }
203
+
204
+ if ( currentElement !== undefined ) {
205
+
206
+ header.elements.push( currentElement );
207
+
208
+ }
209
+
210
+ return header;
211
+
212
+ }
213
+
214
+ function parseASCIINumber( n, type ) {
215
+
216
+ switch ( type ) {
217
+
218
+ case 'char': case 'uchar': case 'short': case 'ushort': case 'int': case 'uint':
219
+ case 'int8': case 'uint8': case 'int16': case 'uint16': case 'int32': case 'uint32':
220
+
221
+ return parseInt( n );
222
+
223
+ case 'float': case 'double': case 'float32': case 'float64':
224
+
225
+ return parseFloat( n );
226
+
227
+ }
228
+
229
+ }
230
+
231
+ function parseASCIIElement( properties, line ) {
232
+
233
+ var values = line.split( /\s+/ );
234
+
235
+ var element = {};
236
+
237
+ for ( var i = 0; i < properties.length; i ++ ) {
238
+
239
+ if ( properties[ i ].type === 'list' ) {
240
+
241
+ var list = [];
242
+ var n = parseASCIINumber( values.shift(), properties[ i ].countType );
243
+
244
+ for ( var j = 0; j < n; j ++ ) {
245
+
246
+ list.push( parseASCIINumber( values.shift(), properties[ i ].itemType ) );
247
+
248
+ }
249
+
250
+ element[ properties[ i ].name ] = list;
251
+
252
+ } else {
253
+
254
+ element[ properties[ i ].name ] = parseASCIINumber( values.shift(), properties[ i ].type );
255
+
256
+ }
257
+
258
+ }
259
+
260
+ return element;
261
+
262
+ }
263
+
264
+ function parseASCII( data ) {
265
+
266
+ // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)
267
+
268
+ var buffer = {
269
+ indices : [],
270
+ vertices : [],
271
+ normals : [],
272
+ uvs : [],
273
+ colors : []
274
+ };
275
+
276
+ var result;
277
+
278
+ var header = parseHeader( data );
279
+
280
+ var patternBody = /end_header\s([\s\S]*)$/;
281
+ var body = '';
282
+ if ( ( result = patternBody.exec( data ) ) !== null ) {
283
+
284
+ body = result [ 1 ];
285
+
286
+ }
287
+
288
+ var lines = body.split( '\n' );
289
+ var currentElement = 0;
290
+ var currentElementCount = 0;
291
+
292
+ for ( var i = 0; i < lines.length; i ++ ) {
293
+
294
+ var line = lines[ i ];
295
+ line = line.trim();
296
+ if ( line === '' ) {
297
+
298
+ continue;
299
+
300
+ }
301
+
302
+ if ( currentElementCount >= header.elements[ currentElement ].count ) {
303
+
304
+ currentElement ++;
305
+ currentElementCount = 0;
306
+
307
+ }
308
+
309
+ var element = parseASCIIElement( header.elements[ currentElement ].properties, line );
310
+
311
+ handleElement( buffer, header.elements[ currentElement ].name, element );
312
+
313
+ currentElementCount ++;
314
+
315
+ }
316
+
317
+ return postProcess( buffer );
318
+
319
+ }
320
+
321
+ function postProcess( buffer ) {
322
+
323
+ var geometry = new THREE.BufferGeometry();
324
+
325
+ // mandatory buffer data
326
+
327
+ geometry.setIndex( new ( buffer.indices.length > 65535 ? THREE.Uint32BufferAttribute : THREE.Uint16BufferAttribute )( buffer.indices, 1 ) );
328
+ geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( buffer.vertices, 3 ) );
329
+
330
+ // optional buffer data
331
+
332
+ if ( buffer.normals.length > 0 ) {
333
+
334
+ geometry.addAttribute( 'normal', new THREE.Float32BufferAttribute( buffer.normals, 3 ) );
335
+
336
+ }
337
+
338
+ if ( buffer.uvs.length > 0 ) {
339
+
340
+ geometry.addAttribute( 'uv', new THREE.Float32BufferAttribute( buffer.uvs, 2 ) );
341
+
342
+ }
343
+
344
+ if ( buffer.colors.length > 0 ) {
345
+
346
+ geometry.addAttribute( 'color', new THREE.Float32BufferAttribute( buffer.colors, 3 ) );
347
+
348
+ }
349
+
350
+ geometry.computeBoundingSphere();
351
+
352
+ return geometry;
353
+
354
+ }
355
+
356
+ function handleElement( buffer, elementName, element ) {
357
+
358
+ if ( elementName === 'vertex' ) {
359
+
360
+ buffer.vertices.push( element.x, element.y, element.z );
361
+
362
+ if ( 'nx' in element && 'ny' in element && 'nz' in element ) {
363
+
364
+ buffer.normals.push( element.nx, element.ny, element.nz );
365
+
366
+ }
367
+
368
+ if ( 's' in element && 't' in element ) {
369
+
370
+ buffer.uvs.push( element.s, element.t );
371
+
372
+ }
373
+
374
+ if ( 'red' in element && 'green' in element && 'blue' in element ) {
375
+
376
+ buffer.colors.push( element.red / 255.0, element.green / 255.0, element.blue / 255.0 );
377
+
378
+ }
379
+
380
+ } else if ( elementName === 'face' ) {
381
+
382
+ var vertex_indices = element.vertex_indices || element.vertex_index; // issue #9338
383
+
384
+ if ( vertex_indices.length === 3 ) {
385
+
386
+ buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 2 ] );
387
+
388
+ } else if ( vertex_indices.length === 4 ) {
389
+
390
+ buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 3 ] );
391
+ buffer.indices.push( vertex_indices[ 1 ], vertex_indices[ 2 ], vertex_indices[ 3 ] );
392
+
393
+ }
394
+
395
+ }
396
+
397
+ }
398
+
399
+ function binaryRead( dataview, at, type, little_endian ) {
400
+
401
+ switch ( type ) {
402
+
403
+ // corespondences for non-specific length types here match rply:
404
+ case 'int8': case 'char': return [ dataview.getInt8( at ), 1 ];
405
+ case 'uint8': case 'uchar': return [ dataview.getUint8( at ), 1 ];
406
+ case 'int16': case 'short': return [ dataview.getInt16( at, little_endian ), 2 ];
407
+ case 'uint16': case 'ushort': return [ dataview.getUint16( at, little_endian ), 2 ];
408
+ case 'int32': case 'int': return [ dataview.getInt32( at, little_endian ), 4 ];
409
+ case 'uint32': case 'uint': return [ dataview.getUint32( at, little_endian ), 4 ];
410
+ case 'float32': case 'float': return [ dataview.getFloat32( at, little_endian ), 4 ];
411
+ case 'float64': case 'double': return [ dataview.getFloat64( at, little_endian ), 8 ];
412
+
413
+ }
414
+
415
+ }
416
+
417
+ function binaryReadElement( dataview, at, properties, little_endian ) {
418
+
419
+ var element = {};
420
+ var result, read = 0;
421
+
422
+ for ( var i = 0; i < properties.length; i ++ ) {
423
+
424
+ if ( properties[ i ].type === 'list' ) {
425
+
426
+ var list = [];
427
+
428
+ result = binaryRead( dataview, at + read, properties[ i ].countType, little_endian );
429
+ var n = result[ 0 ];
430
+ read += result[ 1 ];
431
+
432
+ for ( var j = 0; j < n; j ++ ) {
433
+
434
+ result = binaryRead( dataview, at + read, properties[ i ].itemType, little_endian );
435
+ list.push( result[ 0 ] );
436
+ read += result[ 1 ];
437
+
438
+ }
439
+
440
+ element[ properties[ i ].name ] = list;
441
+
442
+ } else {
443
+
444
+ result = binaryRead( dataview, at + read, properties[ i ].type, little_endian );
445
+ element[ properties[ i ].name ] = result[ 0 ];
446
+ read += result[ 1 ];
447
+
448
+ }
449
+
450
+ }
451
+
452
+ return [ element, read ];
453
+
454
+ }
455
+
456
+ function parseBinary( data ) {
457
+
458
+ var buffer = {
459
+ indices : [],
460
+ vertices : [],
461
+ normals : [],
462
+ uvs : [],
463
+ colors : []
464
+ };
465
+
466
+ if (!binstr) binstr = bin2str( data );
467
+
468
+ var header = parseHeader( binstr );
469
+ var little_endian = ( header.format === 'binary_little_endian' );
470
+ var body = new DataView( data, header.headerLength );
471
+ var result, loc = 0;
472
+
473
+ for ( var currentElement = 0; currentElement < header.elements.length; currentElement ++ ) {
474
+
475
+ for ( var currentElementCount = 0; currentElementCount < header.elements[ currentElement ].count; currentElementCount ++ ) {
476
+
477
+ result = binaryReadElement( body, loc, header.elements[ currentElement ].properties, little_endian );
478
+ loc += result[ 1 ];
479
+ var element = result[ 0 ];
480
+
481
+ handleElement( buffer, header.elements[ currentElement ].name, element );
482
+
483
+ }
484
+
485
+ }
486
+
487
+ return postProcess( buffer );
488
+
489
+ }
490
+
491
+ //
492
+
493
+ var geometry;
494
+ var scope = this;
495
+
496
+ if ( data instanceof ArrayBuffer ) {
497
+
498
+ if (!binstr) binstr = bin2str( data );
499
+
500
+ geometry = isASCII( data ) ? parseASCII( binstr ) : parseBinary( data );
501
+
502
+ } else {
503
+
504
+ binstr = data;
505
+ if ( isASCII( data ) ) {
506
+ geometry = parseASCII( binstr );
507
+ } else {
508
+ geometry = parseBinary( str2bin(data) );
509
+ }
510
+
511
+ }
512
+
513
+ return geometry;
514
+
515
+ }
516
+
517
+ };