Skip to content

Commit

Permalink
ObjectLoader: Moved json handling to geometries (mrdoob#22040)
Browse files Browse the repository at this point in the history
* ObjectLoader: Moved json handling to geometries

* ObjectLoader: Fixed data.type switch

* ObjectLoader: Moved out TubeGeometry json handling.

* ObjectLoader: Moved out ExtrudeGeometry and ShapeGeometry json handling
  • Loading branch information
mrdoob authored Jun 24, 2021
1 parent 4f5236a commit 9517d2e
Show file tree
Hide file tree
Showing 19 changed files with 155 additions and 234 deletions.
6 changes: 6 additions & 0 deletions src/geometries/BoxGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,12 @@ class BoxGeometry extends BufferGeometry {

}

static fromJSON( data ) {

return new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );

}

}

export { BoxGeometry, BoxGeometry as BoxBufferGeometry };
6 changes: 6 additions & 0 deletions src/geometries/CircleGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@ class CircleGeometry extends BufferGeometry {

}

static fromJSON( data ) {

return new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );

}

}


Expand Down
6 changes: 6 additions & 0 deletions src/geometries/ConeGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ class ConeGeometry extends CylinderGeometry {

}

static fromJSON( data ) {

return new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );

}

}

export { ConeGeometry, ConeGeometry as ConeBufferGeometry };
6 changes: 6 additions & 0 deletions src/geometries/CylinderGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,12 @@ class CylinderGeometry extends BufferGeometry {

}

static fromJSON( data ) {

return new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );

}

}


Expand Down
6 changes: 6 additions & 0 deletions src/geometries/DodecahedronGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,12 @@ class DodecahedronGeometry extends PolyhedronGeometry {

}

static fromJSON( data ) {

return new DodecahedronGeometry( data.radius, data.detail );

}

}


Expand Down
25 changes: 25 additions & 0 deletions src/geometries/ExtrudeGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

import { BufferGeometry } from '../core/BufferGeometry.js';
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
import * as Curves from '../extras/curves/Curves.js';
import { Vector2 } from '../math/Vector2.js';
import { Vector3 } from '../math/Vector3.js';
import { ShapeUtils } from '../extras/ShapeUtils.js';
Expand Down Expand Up @@ -695,6 +696,30 @@ class ExtrudeGeometry extends BufferGeometry {

}

static fromJSON( data, shapes ) {

const geometryShapes = [];

for ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {

const shape = shapes[ data.shapes[ j ] ];

geometryShapes.push( shape );

}

const extrudePath = data.options.extrudePath;

if ( extrudePath !== undefined ) {

data.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );

}

return new ExtrudeGeometry( geometryShapes, data.options );

}

}

const WorldUVGenerator = {
Expand Down
6 changes: 6 additions & 0 deletions src/geometries/IcosahedronGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ class IcosahedronGeometry extends PolyhedronGeometry {

}

static fromJSON( data ) {

return new IcosahedronGeometry( data.radius, data.detail );

}

}


Expand Down
6 changes: 6 additions & 0 deletions src/geometries/LatheGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,12 @@ class LatheGeometry extends BufferGeometry {

}

static fromJSON( data ) {

return new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );

}

}


Expand Down
6 changes: 6 additions & 0 deletions src/geometries/OctahedronGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@ class OctahedronGeometry extends PolyhedronGeometry {

}

static fromJSON( data ) {

return new OctahedronGeometry( data.radius, data.detail );

}

}

export { OctahedronGeometry, OctahedronGeometry as OctahedronBufferGeometry };
6 changes: 6 additions & 0 deletions src/geometries/PlaneGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,12 @@ class PlaneGeometry extends BufferGeometry {

}

static fromJSON( data ) {

return new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );

}

}

export { PlaneGeometry, PlaneGeometry as PlaneBufferGeometry };
6 changes: 6 additions & 0 deletions src/geometries/PolyhedronGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,12 @@ class PolyhedronGeometry extends BufferGeometry {

}

static fromJSON( data ) {

return new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );

}

}

export { PolyhedronGeometry, PolyhedronGeometry as PolyhedronBufferGeometry };
6 changes: 6 additions & 0 deletions src/geometries/RingGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,12 @@ class RingGeometry extends BufferGeometry {

}

static fromJSON( data ) {

return new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );

}

}


Expand Down
16 changes: 16 additions & 0 deletions src/geometries/ShapeGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,22 @@ class ShapeGeometry extends BufferGeometry {

}

static fromJSON( data, shapes ) {

const geometryShapes = [];

for ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {

const shape = shapes[ data.shapes[ j ] ];

geometryShapes.push( shape );

}

return new ShapeGeometry( geometryShapes, data.curveSegments );

}

}

function toJSON( shapes, data ) {
Expand Down
6 changes: 6 additions & 0 deletions src/geometries/SphereGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,12 @@ class SphereGeometry extends BufferGeometry {

}

static fromJSON( data ) {

return new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );

}

}

export { SphereGeometry, SphereGeometry as SphereBufferGeometry };
6 changes: 6 additions & 0 deletions src/geometries/TetrahedronGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ class TetrahedronGeometry extends PolyhedronGeometry {

}

static fromJSON( data ) {

return new TetrahedronGeometry( data.radius, data.detail );

}

}

export { TetrahedronGeometry, TetrahedronGeometry as TetrahedronBufferGeometry };
6 changes: 6 additions & 0 deletions src/geometries/TorusGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,12 @@ class TorusGeometry extends BufferGeometry {

}

static fromJSON( data ) {

return new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );

}

}

export { TorusGeometry, TorusGeometry as TorusBufferGeometry };
6 changes: 6 additions & 0 deletions src/geometries/TorusKnotGeometry.js
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,12 @@ class TorusKnotGeometry extends BufferGeometry {

}

static fromJSON( data ) {

return new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );

}

}

export { TorusKnotGeometry, TorusKnotGeometry as TorusKnotBufferGeometry };
15 changes: 15 additions & 0 deletions src/geometries/TubeGeometry.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { BufferGeometry } from '../core/BufferGeometry.js';
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
import * as Curves from '../extras/curves/Curves.js';
import { Vector2 } from '../math/Vector2.js';
import { Vector3 } from '../math/Vector3.js';

Expand Down Expand Up @@ -171,6 +172,20 @@ class TubeGeometry extends BufferGeometry {

}

static fromJSON( data ) {

// This only works for built-in curves (e.g. CatmullRomCurve3).
// User defined curves or instances of CurvePath will not be deserialized.
return new TubeGeometry(
new Curves[ data.path.type ]().fromJSON( data.path ),
data.tubularSegments,
data.radius,
data.radialSegments,
data.closed
);

}

}


Expand Down
Loading

0 comments on commit 9517d2e

Please sign in to comment.