|
@@ -1,3 +1,5 @@
|
|
|
|
+import { TextureMapping, TextureWrapping, TextureFilter } from '../constants';
|
|
|
|
+import { Color } from '../math/Color';
|
|
import { Matrix4 } from '../math/Matrix4';
|
|
import { Matrix4 } from '../math/Matrix4';
|
|
import { Object3D } from '../core/Object3D';
|
|
import { Object3D } from '../core/Object3D';
|
|
import { Group } from '../objects/Group';
|
|
import { Group } from '../objects/Group';
|
|
@@ -26,11 +28,17 @@ import { MaterialLoader } from './MaterialLoader';
|
|
import { BufferGeometryLoader } from './BufferGeometryLoader';
|
|
import { BufferGeometryLoader } from './BufferGeometryLoader';
|
|
import { JSONLoader } from './JSONLoader';
|
|
import { JSONLoader } from './JSONLoader';
|
|
import { XHRLoader } from './XHRLoader';
|
|
import { XHRLoader } from './XHRLoader';
|
|
|
|
+import * as CoreGeometry from '../core/Geometries';
|
|
|
|
+import * as ExtraGeometry from '../extras/geometries/Geometries';
|
|
|
|
|
|
/**
|
|
/**
|
|
* @author mrdoob / http://mrdoob.com/
|
|
* @author mrdoob / http://mrdoob.com/
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
+function resolveGeometryType ( type ) {
|
|
|
|
+ return CoreGeometry[ type ] || ExtraGeometry[ type ];
|
|
|
|
+}
|
|
|
|
+
|
|
function ObjectLoader ( manager ) {
|
|
function ObjectLoader ( manager ) {
|
|
|
|
|
|
this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;
|
|
this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;
|
|
@@ -121,7 +129,7 @@ Object.assign( ObjectLoader.prototype, {
|
|
case 'PlaneGeometry':
|
|
case 'PlaneGeometry':
|
|
case 'PlaneBufferGeometry':
|
|
case 'PlaneBufferGeometry':
|
|
|
|
|
|
- geometry = new THREE[ data.type ](
|
|
|
|
|
|
+ geometry = new (resolveGeometryType( data.type ))(
|
|
data.width,
|
|
data.width,
|
|
data.height,
|
|
data.height,
|
|
data.widthSegments,
|
|
data.widthSegments,
|
|
@@ -134,7 +142,7 @@ Object.assign( ObjectLoader.prototype, {
|
|
case 'BoxBufferGeometry':
|
|
case 'BoxBufferGeometry':
|
|
case 'CubeGeometry': // backwards compatible
|
|
case 'CubeGeometry': // backwards compatible
|
|
|
|
|
|
- geometry = new THREE[ data.type ](
|
|
|
|
|
|
+ geometry = new (resolveGeometryType( data.type ))(
|
|
data.width,
|
|
data.width,
|
|
data.height,
|
|
data.height,
|
|
data.depth,
|
|
data.depth,
|
|
@@ -148,7 +156,7 @@ Object.assign( ObjectLoader.prototype, {
|
|
case 'CircleGeometry':
|
|
case 'CircleGeometry':
|
|
case 'CircleBufferGeometry':
|
|
case 'CircleBufferGeometry':
|
|
|
|
|
|
- geometry = new THREE[ data.type ](
|
|
|
|
|
|
+ geometry = new (resolveGeometryType( data.type ))(
|
|
data.radius,
|
|
data.radius,
|
|
data.segments,
|
|
data.segments,
|
|
data.thetaStart,
|
|
data.thetaStart,
|
|
@@ -160,7 +168,7 @@ Object.assign( ObjectLoader.prototype, {
|
|
case 'CylinderGeometry':
|
|
case 'CylinderGeometry':
|
|
case 'CylinderBufferGeometry':
|
|
case 'CylinderBufferGeometry':
|
|
|
|
|
|
- geometry = new THREE[ data.type ](
|
|
|
|
|
|
+ geometry = new (resolveGeometryType( data.type ))(
|
|
data.radiusTop,
|
|
data.radiusTop,
|
|
data.radiusBottom,
|
|
data.radiusBottom,
|
|
data.height,
|
|
data.height,
|
|
@@ -176,7 +184,7 @@ Object.assign( ObjectLoader.prototype, {
|
|
case 'ConeGeometry':
|
|
case 'ConeGeometry':
|
|
case 'ConeBufferGeometry':
|
|
case 'ConeBufferGeometry':
|
|
|
|
|
|
- geometry = new THREE [ data.type ](
|
|
|
|
|
|
+ geometry = new (resolveGeometryType( data.type ))(
|
|
data.radius,
|
|
data.radius,
|
|
data.height,
|
|
data.height,
|
|
data.radialSegments,
|
|
data.radialSegments,
|
|
@@ -191,7 +199,7 @@ Object.assign( ObjectLoader.prototype, {
|
|
case 'SphereGeometry':
|
|
case 'SphereGeometry':
|
|
case 'SphereBufferGeometry':
|
|
case 'SphereBufferGeometry':
|
|
|
|
|
|
- geometry = new THREE[ data.type ](
|
|
|
|
|
|
+ geometry = new (resolveGeometryType( data.type ))(
|
|
data.radius,
|
|
data.radius,
|
|
data.widthSegments,
|
|
data.widthSegments,
|
|
data.heightSegments,
|
|
data.heightSegments,
|
|
@@ -208,7 +216,7 @@ Object.assign( ObjectLoader.prototype, {
|
|
case 'OctahedronGeometry':
|
|
case 'OctahedronGeometry':
|
|
case 'TetrahedronGeometry':
|
|
case 'TetrahedronGeometry':
|
|
|
|
|
|
- geometry = new THREE[ data.type ](
|
|
|
|
|
|
+ geometry = new (resolveGeometryType( data.type ))(
|
|
data.radius,
|
|
data.radius,
|
|
data.detail
|
|
data.detail
|
|
);
|
|
);
|
|
@@ -218,7 +226,7 @@ Object.assign( ObjectLoader.prototype, {
|
|
case 'RingGeometry':
|
|
case 'RingGeometry':
|
|
case 'RingBufferGeometry':
|
|
case 'RingBufferGeometry':
|
|
|
|
|
|
- geometry = new THREE[ data.type ](
|
|
|
|
|
|
+ geometry = new (resolveGeometryType( data.type ))(
|
|
data.innerRadius,
|
|
data.innerRadius,
|
|
data.outerRadius,
|
|
data.outerRadius,
|
|
data.thetaSegments,
|
|
data.thetaSegments,
|
|
@@ -232,7 +240,7 @@ Object.assign( ObjectLoader.prototype, {
|
|
case 'TorusGeometry':
|
|
case 'TorusGeometry':
|
|
case 'TorusBufferGeometry':
|
|
case 'TorusBufferGeometry':
|
|
|
|
|
|
- geometry = new THREE[ data.type ](
|
|
|
|
|
|
+ geometry = new (resolveGeometryType( data.type ))(
|
|
data.radius,
|
|
data.radius,
|
|
data.tube,
|
|
data.tube,
|
|
data.radialSegments,
|
|
data.radialSegments,
|
|
@@ -245,7 +253,7 @@ Object.assign( ObjectLoader.prototype, {
|
|
case 'TorusKnotGeometry':
|
|
case 'TorusKnotGeometry':
|
|
case 'TorusKnotBufferGeometry':
|
|
case 'TorusKnotBufferGeometry':
|
|
|
|
|
|
- geometry = new THREE[ data.type ](
|
|
|
|
|
|
+ geometry = new (resolveGeometryType( data.type ))(
|
|
data.radius,
|
|
data.radius,
|
|
data.tube,
|
|
data.tube,
|
|
data.tubularSegments,
|
|
data.tubularSegments,
|
|
@@ -259,7 +267,7 @@ Object.assign( ObjectLoader.prototype, {
|
|
case 'LatheGeometry':
|
|
case 'LatheGeometry':
|
|
case 'LatheBufferGeometry':
|
|
case 'LatheBufferGeometry':
|
|
|
|
|
|
- geometry = new THREE[ data.type ](
|
|
|
|
|
|
+ geometry = new (resolveGeometryType( data.type ))(
|
|
data.points,
|
|
data.points,
|
|
data.segments,
|
|
data.segments,
|
|
data.phiStart,
|
|
data.phiStart,
|
|
@@ -385,13 +393,13 @@ Object.assign( ObjectLoader.prototype, {
|
|
|
|
|
|
parseTextures: function ( json, images ) {
|
|
parseTextures: function ( json, images ) {
|
|
|
|
|
|
- function parseConstant( value ) {
|
|
|
|
|
|
+ function parseConstant( value, type ) {
|
|
|
|
|
|
if ( typeof( value ) === 'number' ) return value;
|
|
if ( typeof( value ) === 'number' ) return value;
|
|
|
|
|
|
console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );
|
|
console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );
|
|
|
|
|
|
- return THREE[ value ];
|
|
|
|
|
|
+ return type[ value ];
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -422,19 +430,19 @@ Object.assign( ObjectLoader.prototype, {
|
|
|
|
|
|
if ( data.name !== undefined ) texture.name = data.name;
|
|
if ( data.name !== undefined ) texture.name = data.name;
|
|
|
|
|
|
- if ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping );
|
|
|
|
|
|
+ if ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TextureMapping );
|
|
|
|
|
|
if ( data.offset !== undefined ) texture.offset.fromArray( data.offset );
|
|
if ( data.offset !== undefined ) texture.offset.fromArray( data.offset );
|
|
if ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );
|
|
if ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );
|
|
if ( data.wrap !== undefined ) {
|
|
if ( data.wrap !== undefined ) {
|
|
|
|
|
|
- texture.wrapS = parseConstant( data.wrap[ 0 ] );
|
|
|
|
- texture.wrapT = parseConstant( data.wrap[ 1 ] );
|
|
|
|
|
|
+ texture.wrapS = parseConstant( data.wrap[ 0 ], TextureWrapping );
|
|
|
|
+ texture.wrapT = parseConstant( data.wrap[ 1 ], TextureWrapping );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- if ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter );
|
|
|
|
- if ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter );
|
|
|
|
|
|
+ if ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TextureFilter );
|
|
|
|
+ if ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TextureFilter );
|
|
if ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;
|
|
if ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;
|
|
|
|
|
|
if ( data.flipY !== undefined ) texture.flipY = data.flipY;
|
|
if ( data.flipY !== undefined ) texture.flipY = data.flipY;
|
|
@@ -493,7 +501,7 @@ Object.assign( ObjectLoader.prototype, {
|
|
|
|
|
|
if ( Number.isInteger( data.background ) ) {
|
|
if ( Number.isInteger( data.background ) ) {
|
|
|
|
|
|
- object.background = new THREE.Color( data.background );
|
|
|
|
|
|
+ object.background = new Color( data.background );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|