Skip to content

Commit ffb18c6

Browse files
authored
Merge pull request #14235 from Mugen87/dev15
CubeTexture: Added serialization/ deserialization
2 parents e12cf9d + f9b0633 commit ffb18c6

File tree

2 files changed

+63
-5
lines changed

2 files changed

+63
-5
lines changed

src/loaders/ObjectLoader.js

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import { RectAreaLight } from '../lights/RectAreaLight.js';
4242
import { OrthographicCamera } from '../cameras/OrthographicCamera.js';
4343
import { PerspectiveCamera } from '../cameras/PerspectiveCamera.js';
4444
import { Scene } from '../scenes/Scene.js';
45+
import { CubeTexture } from '../textures/CubeTexture.js';
4546
import { Texture } from '../textures/Texture.js';
4647
import { ImageLoader } from './ImageLoader.js';
4748
import { LoadingManager, DefaultLoadingManager } from './LoadingManager.js';
@@ -534,12 +535,36 @@ Object.assign( ObjectLoader.prototype, {
534535
var loader = new ImageLoader( manager );
535536
loader.setCrossOrigin( this.crossOrigin );
536537

537-
for ( var i = 0, l = json.length; i < l; i ++ ) {
538+
for ( var i = 0, il = json.length; i < il; i ++ ) {
538539

539540
var image = json[ i ];
540-
var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
541+
var url = image.url;
542+
543+
if ( Array.isArray( url ) ) {
544+
545+
// load array of images e.g CubeTexture
546+
547+
images[ image.uuid ] = [];
548+
549+
for ( var j = 0, jl = url.length; j < jl; j ++ ) {
550+
551+
var currentUrl = url[ j ];
552+
553+
var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( currentUrl ) ? currentUrl : scope.texturePath + currentUrl;
554+
555+
images[ image.uuid ].push( loadImage( path ) );
556+
557+
}
558+
559+
} else {
541560

542-
images[ image.uuid ] = loadImage( path );
561+
// load single image
562+
563+
var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
564+
565+
images[ image.uuid ] = loadImage( path );
566+
567+
}
543568

544569
}
545570

@@ -581,7 +606,18 @@ Object.assign( ObjectLoader.prototype, {
581606

582607
}
583608

584-
var texture = new Texture( images[ data.image ] );
609+
var texture;
610+
611+
if ( Array.isArray( images[ data.image ] ) ) {
612+
613+
texture = new CubeTexture( images[ data.image ] );
614+
615+
} else {
616+
617+
texture = new Texture( images[ data.image ] );
618+
619+
}
620+
585621
texture.needsUpdate = true;
586622

587623
texture.uuid = data.uuid;

src/textures/Texture.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,31 @@ Texture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {
213213

214214
if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {
215215

216+
var url;
217+
218+
if ( Array.isArray( image ) ) {
219+
220+
// process array of images e.g. CubeTexture
221+
222+
url = [];
223+
224+
for ( var i = 0, l = image.length; i < l; i ++ ) {
225+
226+
url.push( getDataURL( image[ i ] ) );
227+
228+
}
229+
230+
} else {
231+
232+
// process single image
233+
234+
url = getDataURL( image );
235+
236+
}
237+
216238
meta.images[ image.uuid ] = {
217239
uuid: image.uuid,
218-
url: getDataURL( image )
240+
url: url
219241
};
220242

221243
}

0 commit comments

Comments
 (0)