Skip to content

Commit

Permalink
BatchedMesh: Add "toJSON" and "copy" support (#27131)
Browse files Browse the repository at this point in the history
* Add a copy function

* Add "toJSON" support

* Remove toJSON override

* copy paste error

* Remove underscores from json
  • Loading branch information
gkjohnson authored Nov 7, 2023
1 parent a1906ff commit d5bd248
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 6 deletions.
24 changes: 18 additions & 6 deletions examples/jsm/objects/BatchedMesh.js
Original file line number Diff line number Diff line change
Expand Up @@ -563,17 +563,29 @@ class BatchedMesh extends Mesh {

}

copy() {
copy( source ) {

// super.copy( source );
super.copy( source );

throw new Error( 'BatchedMesh: Copy function not implemented.' );
this.geometry = source.geometry.clone();

}
this._drawRanges = source._drawRanges.map( range => ( { ...range } ) );
this._reservedRanges = source._reservedRanges.map( range => ( { ...range } ) );

this._visible = source._visible.slice();
this._active = source._active.slice();

this._maxGeometryCount = source._maxGeometryCount;
this._maxVertexCount = source._maxVertexCount;
this._maxIndexCount = source._maxIndexCount;

toJSON() {
this._geometryInitialized = source._geometryInitialized;
this._geometryCount = source._geometryCount;
this._multiDrawCounts = source._multiDrawCounts.slice();
this._multiDrawStarts = source._multiDrawStarts.slice();

throw new Error( 'BatchedMesh: toJSON function not implemented.' );
this._matricesTexture = source._matricesTexture.clone();
this._matricesTexture.image.data = this._matricesTexture.image.slice();

}

Expand Down
20 changes: 20 additions & 0 deletions src/core/Object3D.js
Original file line number Diff line number Diff line change
Expand Up @@ -719,6 +719,26 @@ class Object3D extends EventDispatcher {

}

if ( this.isBatchedMesh ) {

object.type = 'BatchedMesh';
object.drawRanges = this._drawRanges;
object.reservedRanges = this._reservedRanges;

object.visible = this._visible;
object.active = this._active;

object.maxGeometryCount = this._maxGeometryCount;
object.maxVertexCount = this._maxVertexCount;
object.maxIndexCount = this._maxIndexCount;

object.geometryInitialized = this._geometryInitialized;
object.geometryCount = this._geometryCount;

object.matricesTexture = this._matricesTexture.toJSON();

}

//

function serialize( library, element ) {
Expand Down

0 comments on commit d5bd248

Please sign in to comment.