json-object-editor 0.9.901 → 0.10.110

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 (62) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/app.js +5 -4
  3. package/capp/capp.css +1 -0
  4. package/css/jif/Read Me.txt +5 -5
  5. package/css/jif/demo-files/demo.css +153 -153
  6. package/css/jif/demo-files/demo.js +30 -30
  7. package/css/jif/demo.html +285 -285
  8. package/css/jif/fonts/joeiconfont.svg +24 -24
  9. package/css/jif/ie7/ie7.css +45 -45
  10. package/css/jif/ie7/ie7.js +46 -46
  11. package/css/jif/selection.json +573 -573
  12. package/css/joe.css +6 -6
  13. package/css/jquery-ui-1.10.4.custom.min.css +5 -5
  14. package/css/jquery-ui.min.css +6 -6
  15. package/css/jquery.timepicker.css +72 -72
  16. package/es5-build/capp/capp.js +1083 -1083
  17. package/es5-build/js/JsonObjectEditor_es5.jquery.craydent.js +11047 -11047
  18. package/es5-build/web-components/account-info.js +136 -136
  19. package/es5-build/web-components/capp-components.js +160 -160
  20. package/es5-build/web-components/capp-panel.js +85 -85
  21. package/es5-build/web-components/capp-view.js +73 -73
  22. package/es5-build/web-components/joe-autocomplete.js +149 -149
  23. package/es5-build/web-components/joe-button.js +132 -132
  24. package/es5-build/web-components/joe-card.js +92 -92
  25. package/es5-build/web-components/joe-component.js +74 -74
  26. package/es5-build/web-components/joe-field.js +70 -70
  27. package/es5-build/web-components/joe-list-item.js +176 -176
  28. package/es5-build/web-components/joe-user-cube.js +100 -100
  29. package/es5-build/web-components/report-components.js +133 -133
  30. package/grunt/build +86 -86
  31. package/grunt/package-lock.json +6301 -2489
  32. package/grunt/package.json +47 -47
  33. package/grunt/src +86 -86
  34. package/js/JsonObjectEditor.jquery.craydent.js +3 -2
  35. package/js/joe-full.js +11 -10
  36. package/js/joe.js +12 -11
  37. package/js/joe_es5.js +11056 -11056
  38. package/js/jquery.timepicker.min.js +1 -1
  39. package/js/leaflet.js +8 -8
  40. package/js/libs/adapter-latest.js +4400 -4400
  41. package/js/libs/craydent-1.9.2.js +11741 -11741
  42. package/js/libs/craydent-upload-2.0.0.js +394 -394
  43. package/js/libs/hammer.min.208.js +6 -6
  44. package/js/libs/jquery-3.5.1.min.js +2 -2
  45. package/js/libs/moment.min.js +6 -6
  46. package/js/native-shim.js +46 -46
  47. package/js/plugins/c3/c3.min.js +5 -5
  48. package/js/plugins/c3/d3.v3.min.js +4 -4
  49. package/js/plugins/threejs/Detector.js +78 -78
  50. package/js/plugins/threejs/LICENSE +21 -21
  51. package/js/plugins/threejs/MTLLoader.js +417 -417
  52. package/js/plugins/threejs/OBJLoader.js +564 -564
  53. package/js/plugins/threejs/OrbitControls.js +1037 -1037
  54. package/js/plugins/threejs/README.md +9 -9
  55. package/js/plugins/threejs/assets/female-croupier-2013-03-26.mtl +3 -3
  56. package/js/plugins/threejs/index.html +178 -178
  57. package/js/plugins/threejs/three.js +41507 -41507
  58. package/package copy.json +62 -0
  59. package/package.json +12 -13
  60. package/server/schemas/initiative.js +85 -0
  61. package/server/webconfig.js +1 -1
  62. package/projectFilesBackup/.idea/workspace.xml +0 -424
@@ -1,417 +1,417 @@
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
- THREE.MTLLoader.prototype = {
14
-
15
- constructor: THREE.MTLLoader,
16
-
17
- load: function ( url, onLoad, onProgress, onError ) {
18
-
19
- var scope = this;
20
-
21
- var loader = new THREE.XHRLoader( this.manager );
22
- loader.setPath( this.path );
23
- loader.load( url, function ( text ) {
24
-
25
- onLoad( scope.parse( text ) );
26
-
27
- }, onProgress, onError );
28
-
29
- },
30
-
31
- setPath: function ( value ) {
32
-
33
- this.path = value;
34
-
35
- },
36
-
37
- setBaseUrl: function( value ) {
38
-
39
- // TODO: Merge with setPath()? Or rename to setTexturePath?
40
-
41
- this.baseUrl = value;
42
-
43
- },
44
-
45
- setCrossOrigin: function ( value ) {
46
-
47
- this.crossOrigin = value;
48
-
49
- },
50
-
51
- setMaterialOptions: function ( value ) {
52
-
53
- this.materialOptions = value;
54
-
55
- },
56
-
57
- /**
58
- * Parses loaded MTL file
59
- * @param text - Content of MTL file
60
- * @return {THREE.MTLLoader.MaterialCreator}
61
- */
62
- parse: function ( text ) {
63
-
64
- var lines = text.split( "\n" );
65
- var info = {};
66
- var delimiter_pattern = /\s+/;
67
- var materialsInfo = {};
68
-
69
- for ( var i = 0; i < lines.length; i ++ ) {
70
-
71
- var line = lines[ i ];
72
- line = line.trim();
73
-
74
- if ( line.length === 0 || line.charAt( 0 ) === '#' ) {
75
-
76
- // Blank line or comment ignore
77
- continue;
78
-
79
- }
80
-
81
- var pos = line.indexOf( ' ' );
82
-
83
- var key = ( pos >= 0 ) ? line.substring( 0, pos ) : line;
84
- key = key.toLowerCase();
85
-
86
- var value = ( pos >= 0 ) ? line.substring( pos + 1 ) : "";
87
- value = value.trim();
88
-
89
- if ( key === "newmtl" ) {
90
-
91
- // New material
92
-
93
- info = { name: value };
94
- materialsInfo[ value ] = info;
95
-
96
- } else if ( info ) {
97
-
98
- if ( key === "ka" || key === "kd" || key === "ks" ) {
99
-
100
- var ss = value.split( delimiter_pattern, 3 );
101
- info[ key ] = [ parseFloat( ss[ 0 ] ), parseFloat( ss[ 1 ] ), parseFloat( ss[ 2 ] ) ];
102
-
103
- } else {
104
-
105
- info[ key ] = value;
106
-
107
- }
108
-
109
- }
110
-
111
- }
112
-
113
- var materialCreator = new THREE.MTLLoader.MaterialCreator( this.baseUrl, this.materialOptions );
114
- materialCreator.setCrossOrigin( this.crossOrigin );
115
- materialCreator.setManager( this.manager );
116
- materialCreator.setMaterials( materialsInfo );
117
- return materialCreator;
118
-
119
- }
120
-
121
- };
122
-
123
- /**
124
- * Create a new THREE-MTLLoader.MaterialCreator
125
- * @param baseUrl - Url relative to which textures are loaded
126
- * @param options - Set of options on how to construct the materials
127
- * side: Which side to apply the material
128
- * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide
129
- * wrap: What type of wrapping to apply for textures
130
- * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping
131
- * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255
132
- * Default: false, assumed to be already normalized
133
- * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's
134
- * Default: false
135
- * @constructor
136
- */
137
-
138
- THREE.MTLLoader.MaterialCreator = function( baseUrl, options ) {
139
-
140
- this.baseUrl = baseUrl;
141
- this.options = options;
142
- this.materialsInfo = {};
143
- this.materials = {};
144
- this.materialsArray = [];
145
- this.nameLookup = {};
146
-
147
- this.side = ( this.options && this.options.side ) ? this.options.side : THREE.FrontSide;
148
- this.wrap = ( this.options && this.options.wrap ) ? this.options.wrap : THREE.RepeatWrapping;
149
-
150
- };
151
-
152
- THREE.MTLLoader.MaterialCreator.prototype = {
153
-
154
- constructor: THREE.MTLLoader.MaterialCreator,
155
-
156
- setCrossOrigin: function ( value ) {
157
-
158
- this.crossOrigin = value;
159
-
160
- },
161
-
162
- setManager: function ( value ) {
163
-
164
- this.manager = value;
165
-
166
- },
167
-
168
- setMaterials: function( materialsInfo ) {
169
-
170
- this.materialsInfo = this.convert( materialsInfo );
171
- this.materials = {};
172
- this.materialsArray = [];
173
- this.nameLookup = {};
174
-
175
- },
176
-
177
- convert: function( materialsInfo ) {
178
-
179
- if ( ! this.options ) return materialsInfo;
180
-
181
- var converted = {};
182
-
183
- for ( var mn in materialsInfo ) {
184
-
185
- // Convert materials info into normalized form based on options
186
-
187
- var mat = materialsInfo[ mn ];
188
-
189
- var covmat = {};
190
-
191
- converted[ mn ] = covmat;
192
-
193
- for ( var prop in mat ) {
194
-
195
- var save = true;
196
- var value = mat[ prop ];
197
- var lprop = prop.toLowerCase();
198
-
199
- switch ( lprop ) {
200
-
201
- case 'kd':
202
- case 'ka':
203
- case 'ks':
204
-
205
- // Diffuse color (color under white light) using RGB values
206
-
207
- if ( this.options && this.options.normalizeRGB ) {
208
-
209
- value = [ value[ 0 ] / 255, value[ 1 ] / 255, value[ 2 ] / 255 ];
210
-
211
- }
212
-
213
- if ( this.options && this.options.ignoreZeroRGBs ) {
214
-
215
- if ( value[ 0 ] === 0 && value[ 1 ] === 0 && value[ 1 ] === 0 ) {
216
-
217
- // ignore
218
-
219
- save = false;
220
-
221
- }
222
-
223
- }
224
-
225
- break;
226
-
227
- default:
228
-
229
- break;
230
- }
231
-
232
- if ( save ) {
233
-
234
- covmat[ lprop ] = value;
235
-
236
- }
237
-
238
- }
239
-
240
- }
241
-
242
- return converted;
243
-
244
- },
245
-
246
- preload: function () {
247
-
248
- for ( var mn in this.materialsInfo ) {
249
-
250
- this.create( mn );
251
-
252
- }
253
-
254
- },
255
-
256
- getIndex: function( materialName ) {
257
-
258
- return this.nameLookup[ materialName ];
259
-
260
- },
261
-
262
- getAsArray: function() {
263
-
264
- var index = 0;
265
-
266
- for ( var mn in this.materialsInfo ) {
267
-
268
- this.materialsArray[ index ] = this.create( mn );
269
- this.nameLookup[ mn ] = index;
270
- index ++;
271
-
272
- }
273
-
274
- return this.materialsArray;
275
-
276
- },
277
-
278
- create: function ( materialName ) {
279
-
280
- if ( this.materials[ materialName ] === undefined ) {
281
-
282
- this.createMaterial_( materialName );
283
-
284
- }
285
-
286
- return this.materials[ materialName ];
287
-
288
- },
289
-
290
- createMaterial_: function ( materialName ) {
291
-
292
- // Create material
293
-
294
- var mat = this.materialsInfo[ materialName ];
295
- var params = {
296
-
297
- name: materialName,
298
- side: this.side
299
-
300
- };
301
-
302
- for ( var prop in mat ) {
303
-
304
- var value = mat[ prop ];
305
-
306
- if ( value === '' ) continue;
307
-
308
- switch ( prop.toLowerCase() ) {
309
-
310
- // Ns is material specular exponent
311
-
312
- case 'kd':
313
-
314
- // Diffuse color (color under white light) using RGB values
315
-
316
- params[ 'color' ] = new THREE.Color().fromArray( value );
317
-
318
- break;
319
-
320
- case 'ks':
321
-
322
- // Specular color (color when light is reflected from shiny surface) using RGB values
323
- params[ 'specular' ] = new THREE.Color().fromArray( value );
324
-
325
- break;
326
-
327
- case 'map_kd':
328
-
329
- // Diffuse texture map
330
-
331
- params[ 'map' ] = this.loadTexture( this.baseUrl + value );
332
- params[ 'map' ].wrapS = this.wrap;
333
- params[ 'map' ].wrapT = this.wrap;
334
-
335
- break;
336
-
337
- case 'ns':
338
-
339
- // The specular exponent (defines the focus of the specular highlight)
340
- // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000.
341
-
342
- params[ 'shininess' ] = parseFloat( value );
343
-
344
- break;
345
-
346
- case 'd':
347
-
348
- if ( value < 1 ) {
349
-
350
- params[ 'opacity' ] = value;
351
- params[ 'transparent' ] = true;
352
-
353
- }
354
-
355
- break;
356
-
357
- case 'Tr':
358
-
359
- if ( value > 0 ) {
360
-
361
- params[ 'opacity' ] = 1 - value;
362
- params[ 'transparent' ] = true;
363
-
364
- }
365
-
366
- break;
367
-
368
- case 'map_bump':
369
- case 'bump':
370
-
371
- // Bump texture map
372
-
373
- if ( params[ 'bumpMap' ] ) break; // Avoid loading twice.
374
-
375
- params[ 'bumpMap' ] = this.loadTexture( this.baseUrl + value );
376
- params[ 'bumpMap' ].wrapS = this.wrap;
377
- params[ 'bumpMap' ].wrapT = this.wrap;
378
-
379
- break;
380
-
381
- default:
382
- break;
383
-
384
- }
385
-
386
- }
387
-
388
- this.materials[ materialName ] = new THREE.MeshPhongMaterial( params );
389
- return this.materials[ materialName ];
390
-
391
- },
392
-
393
-
394
- loadTexture: function ( url, mapping, onLoad, onProgress, onError ) {
395
-
396
- var texture;
397
- var loader = THREE.Loader.Handlers.get( url );
398
- var manager = ( this.manager !== undefined ) ? this.manager : THREE.DefaultLoadingManager;
399
-
400
- if ( loader === null ) {
401
-
402
- loader = new THREE.TextureLoader( manager );
403
-
404
- }
405
-
406
- if ( loader.setCrossOrigin ) loader.setCrossOrigin( this.crossOrigin );
407
- texture = loader.load( url, onLoad, onProgress, onError );
408
-
409
- if ( mapping !== undefined ) texture.mapping = mapping;
410
-
411
- return texture;
412
-
413
- }
414
-
415
- };
416
-
417
- THREE.EventDispatcher.prototype.apply( THREE.MTLLoader.prototype );
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
+ THREE.MTLLoader.prototype = {
14
+
15
+ constructor: THREE.MTLLoader,
16
+
17
+ load: function ( url, onLoad, onProgress, onError ) {
18
+
19
+ var scope = this;
20
+
21
+ var loader = new THREE.XHRLoader( this.manager );
22
+ loader.setPath( this.path );
23
+ loader.load( url, function ( text ) {
24
+
25
+ onLoad( scope.parse( text ) );
26
+
27
+ }, onProgress, onError );
28
+
29
+ },
30
+
31
+ setPath: function ( value ) {
32
+
33
+ this.path = value;
34
+
35
+ },
36
+
37
+ setBaseUrl: function( value ) {
38
+
39
+ // TODO: Merge with setPath()? Or rename to setTexturePath?
40
+
41
+ this.baseUrl = value;
42
+
43
+ },
44
+
45
+ setCrossOrigin: function ( value ) {
46
+
47
+ this.crossOrigin = value;
48
+
49
+ },
50
+
51
+ setMaterialOptions: function ( value ) {
52
+
53
+ this.materialOptions = value;
54
+
55
+ },
56
+
57
+ /**
58
+ * Parses loaded MTL file
59
+ * @param text - Content of MTL file
60
+ * @return {THREE.MTLLoader.MaterialCreator}
61
+ */
62
+ parse: function ( text ) {
63
+
64
+ var lines = text.split( "\n" );
65
+ var info = {};
66
+ var delimiter_pattern = /\s+/;
67
+ var materialsInfo = {};
68
+
69
+ for ( var i = 0; i < lines.length; i ++ ) {
70
+
71
+ var line = lines[ i ];
72
+ line = line.trim();
73
+
74
+ if ( line.length === 0 || line.charAt( 0 ) === '#' ) {
75
+
76
+ // Blank line or comment ignore
77
+ continue;
78
+
79
+ }
80
+
81
+ var pos = line.indexOf( ' ' );
82
+
83
+ var key = ( pos >= 0 ) ? line.substring( 0, pos ) : line;
84
+ key = key.toLowerCase();
85
+
86
+ var value = ( pos >= 0 ) ? line.substring( pos + 1 ) : "";
87
+ value = value.trim();
88
+
89
+ if ( key === "newmtl" ) {
90
+
91
+ // New material
92
+
93
+ info = { name: value };
94
+ materialsInfo[ value ] = info;
95
+
96
+ } else if ( info ) {
97
+
98
+ if ( key === "ka" || key === "kd" || key === "ks" ) {
99
+
100
+ var ss = value.split( delimiter_pattern, 3 );
101
+ info[ key ] = [ parseFloat( ss[ 0 ] ), parseFloat( ss[ 1 ] ), parseFloat( ss[ 2 ] ) ];
102
+
103
+ } else {
104
+
105
+ info[ key ] = value;
106
+
107
+ }
108
+
109
+ }
110
+
111
+ }
112
+
113
+ var materialCreator = new THREE.MTLLoader.MaterialCreator( this.baseUrl, this.materialOptions );
114
+ materialCreator.setCrossOrigin( this.crossOrigin );
115
+ materialCreator.setManager( this.manager );
116
+ materialCreator.setMaterials( materialsInfo );
117
+ return materialCreator;
118
+
119
+ }
120
+
121
+ };
122
+
123
+ /**
124
+ * Create a new THREE-MTLLoader.MaterialCreator
125
+ * @param baseUrl - Url relative to which textures are loaded
126
+ * @param options - Set of options on how to construct the materials
127
+ * side: Which side to apply the material
128
+ * THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide
129
+ * wrap: What type of wrapping to apply for textures
130
+ * THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping
131
+ * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255
132
+ * Default: false, assumed to be already normalized
133
+ * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's
134
+ * Default: false
135
+ * @constructor
136
+ */
137
+
138
+ THREE.MTLLoader.MaterialCreator = function( baseUrl, options ) {
139
+
140
+ this.baseUrl = baseUrl;
141
+ this.options = options;
142
+ this.materialsInfo = {};
143
+ this.materials = {};
144
+ this.materialsArray = [];
145
+ this.nameLookup = {};
146
+
147
+ this.side = ( this.options && this.options.side ) ? this.options.side : THREE.FrontSide;
148
+ this.wrap = ( this.options && this.options.wrap ) ? this.options.wrap : THREE.RepeatWrapping;
149
+
150
+ };
151
+
152
+ THREE.MTLLoader.MaterialCreator.prototype = {
153
+
154
+ constructor: THREE.MTLLoader.MaterialCreator,
155
+
156
+ setCrossOrigin: function ( value ) {
157
+
158
+ this.crossOrigin = value;
159
+
160
+ },
161
+
162
+ setManager: function ( value ) {
163
+
164
+ this.manager = value;
165
+
166
+ },
167
+
168
+ setMaterials: function( materialsInfo ) {
169
+
170
+ this.materialsInfo = this.convert( materialsInfo );
171
+ this.materials = {};
172
+ this.materialsArray = [];
173
+ this.nameLookup = {};
174
+
175
+ },
176
+
177
+ convert: function( materialsInfo ) {
178
+
179
+ if ( ! this.options ) return materialsInfo;
180
+
181
+ var converted = {};
182
+
183
+ for ( var mn in materialsInfo ) {
184
+
185
+ // Convert materials info into normalized form based on options
186
+
187
+ var mat = materialsInfo[ mn ];
188
+
189
+ var covmat = {};
190
+
191
+ converted[ mn ] = covmat;
192
+
193
+ for ( var prop in mat ) {
194
+
195
+ var save = true;
196
+ var value = mat[ prop ];
197
+ var lprop = prop.toLowerCase();
198
+
199
+ switch ( lprop ) {
200
+
201
+ case 'kd':
202
+ case 'ka':
203
+ case 'ks':
204
+
205
+ // Diffuse color (color under white light) using RGB values
206
+
207
+ if ( this.options && this.options.normalizeRGB ) {
208
+
209
+ value = [ value[ 0 ] / 255, value[ 1 ] / 255, value[ 2 ] / 255 ];
210
+
211
+ }
212
+
213
+ if ( this.options && this.options.ignoreZeroRGBs ) {
214
+
215
+ if ( value[ 0 ] === 0 && value[ 1 ] === 0 && value[ 1 ] === 0 ) {
216
+
217
+ // ignore
218
+
219
+ save = false;
220
+
221
+ }
222
+
223
+ }
224
+
225
+ break;
226
+
227
+ default:
228
+
229
+ break;
230
+ }
231
+
232
+ if ( save ) {
233
+
234
+ covmat[ lprop ] = value;
235
+
236
+ }
237
+
238
+ }
239
+
240
+ }
241
+
242
+ return converted;
243
+
244
+ },
245
+
246
+ preload: function () {
247
+
248
+ for ( var mn in this.materialsInfo ) {
249
+
250
+ this.create( mn );
251
+
252
+ }
253
+
254
+ },
255
+
256
+ getIndex: function( materialName ) {
257
+
258
+ return this.nameLookup[ materialName ];
259
+
260
+ },
261
+
262
+ getAsArray: function() {
263
+
264
+ var index = 0;
265
+
266
+ for ( var mn in this.materialsInfo ) {
267
+
268
+ this.materialsArray[ index ] = this.create( mn );
269
+ this.nameLookup[ mn ] = index;
270
+ index ++;
271
+
272
+ }
273
+
274
+ return this.materialsArray;
275
+
276
+ },
277
+
278
+ create: function ( materialName ) {
279
+
280
+ if ( this.materials[ materialName ] === undefined ) {
281
+
282
+ this.createMaterial_( materialName );
283
+
284
+ }
285
+
286
+ return this.materials[ materialName ];
287
+
288
+ },
289
+
290
+ createMaterial_: function ( materialName ) {
291
+
292
+ // Create material
293
+
294
+ var mat = this.materialsInfo[ materialName ];
295
+ var params = {
296
+
297
+ name: materialName,
298
+ side: this.side
299
+
300
+ };
301
+
302
+ for ( var prop in mat ) {
303
+
304
+ var value = mat[ prop ];
305
+
306
+ if ( value === '' ) continue;
307
+
308
+ switch ( prop.toLowerCase() ) {
309
+
310
+ // Ns is material specular exponent
311
+
312
+ case 'kd':
313
+
314
+ // Diffuse color (color under white light) using RGB values
315
+
316
+ params[ 'color' ] = new THREE.Color().fromArray( value );
317
+
318
+ break;
319
+
320
+ case 'ks':
321
+
322
+ // Specular color (color when light is reflected from shiny surface) using RGB values
323
+ params[ 'specular' ] = new THREE.Color().fromArray( value );
324
+
325
+ break;
326
+
327
+ case 'map_kd':
328
+
329
+ // Diffuse texture map
330
+
331
+ params[ 'map' ] = this.loadTexture( this.baseUrl + value );
332
+ params[ 'map' ].wrapS = this.wrap;
333
+ params[ 'map' ].wrapT = this.wrap;
334
+
335
+ break;
336
+
337
+ case 'ns':
338
+
339
+ // The specular exponent (defines the focus of the specular highlight)
340
+ // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000.
341
+
342
+ params[ 'shininess' ] = parseFloat( value );
343
+
344
+ break;
345
+
346
+ case 'd':
347
+
348
+ if ( value < 1 ) {
349
+
350
+ params[ 'opacity' ] = value;
351
+ params[ 'transparent' ] = true;
352
+
353
+ }
354
+
355
+ break;
356
+
357
+ case 'Tr':
358
+
359
+ if ( value > 0 ) {
360
+
361
+ params[ 'opacity' ] = 1 - value;
362
+ params[ 'transparent' ] = true;
363
+
364
+ }
365
+
366
+ break;
367
+
368
+ case 'map_bump':
369
+ case 'bump':
370
+
371
+ // Bump texture map
372
+
373
+ if ( params[ 'bumpMap' ] ) break; // Avoid loading twice.
374
+
375
+ params[ 'bumpMap' ] = this.loadTexture( this.baseUrl + value );
376
+ params[ 'bumpMap' ].wrapS = this.wrap;
377
+ params[ 'bumpMap' ].wrapT = this.wrap;
378
+
379
+ break;
380
+
381
+ default:
382
+ break;
383
+
384
+ }
385
+
386
+ }
387
+
388
+ this.materials[ materialName ] = new THREE.MeshPhongMaterial( params );
389
+ return this.materials[ materialName ];
390
+
391
+ },
392
+
393
+
394
+ loadTexture: function ( url, mapping, onLoad, onProgress, onError ) {
395
+
396
+ var texture;
397
+ var loader = THREE.Loader.Handlers.get( url );
398
+ var manager = ( this.manager !== undefined ) ? this.manager : THREE.DefaultLoadingManager;
399
+
400
+ if ( loader === null ) {
401
+
402
+ loader = new THREE.TextureLoader( manager );
403
+
404
+ }
405
+
406
+ if ( loader.setCrossOrigin ) loader.setCrossOrigin( this.crossOrigin );
407
+ texture = loader.load( url, onLoad, onProgress, onError );
408
+
409
+ if ( mapping !== undefined ) texture.mapping = mapping;
410
+
411
+ return texture;
412
+
413
+ }
414
+
415
+ };
416
+
417
+ THREE.EventDispatcher.prototype.apply( THREE.MTLLoader.prototype );