@@ -1785,6 +1785,20 @@ THREE.Vector2.prototype = {
1785
1785
1786
1786
return this;
1787
1787
1788
+ },
1789
+
1790
+ rotateAround: function ( center, angle ) {
1791
+
1792
+ var c = Math.cos( angle ), s = Math.sin( angle );
1793
+
1794
+ var x = this.x - center.x;
1795
+ var y = this.y - center.y;
1796
+
1797
+ this.x = x * c - y * s + center.x;
1798
+ this.y = x * s + y * c + center.y;
1799
+
1800
+ return this;
1801
+
1788
1802
}
1789
1803
1790
1804
};
@@ -7253,6 +7267,48 @@ THREE.Triangle.prototype = {
7253
7267
7254
7268
};
7255
7269
7270
+ // File:src/core/Channels.js
7271
+
7272
+ /**
7273
+ * @author mrdoob / http://mrdoob.com/
7274
+ */
7275
+
7276
+ THREE.Channels = function () {
7277
+
7278
+ this.mask = 1;
7279
+
7280
+ };
7281
+
7282
+ THREE.Channels.prototype = {
7283
+
7284
+ constructor: THREE.Channels,
7285
+
7286
+ set: function ( channel ) {
7287
+
7288
+ this.mask = 1 << channel;
7289
+
7290
+ },
7291
+
7292
+ enable: function ( channel ) {
7293
+
7294
+ this.mask |= 1 << channel;
7295
+
7296
+ },
7297
+
7298
+ toggle: function ( channel ) {
7299
+
7300
+ this.mask ^= 1 << channel;
7301
+
7302
+ },
7303
+
7304
+ disable: function ( channel ) {
7305
+
7306
+ this.mask &= ~ ( 1 << channel );
7307
+
7308
+ }
7309
+
7310
+ };
7311
+
7256
7312
// File:src/core/Clock.js
7257
7313
7258
7314
/**
@@ -7593,6 +7649,7 @@ THREE.Object3D = function () {
7593
7649
this.type = 'Object3D';
7594
7650
7595
7651
this.parent = null;
7652
+ this.channels = new THREE.Channels();
7596
7653
this.children = [];
7597
7654
7598
7655
this.up = THREE.Object3D.DefaultUp.clone();
@@ -12637,7 +12694,7 @@ THREE.KeyframeTrack.prototype = {
12637
12694
return;
12638
12695
}
12639
12696
12640
- if ( ( typeof currKey.time ) !== 'number' || Number. isNaN( currKey.time ) ) {
12697
+ if ( ( typeof currKey.time ) !== 'number' || isNaN( currKey.time ) ) {
12641
12698
console.error( " key.time is not a valid number", this, i, currKey );
12642
12699
return;
12643
12700
}
@@ -22295,7 +22352,7 @@ THREE.WebGLRenderer = function ( parameters ) {
22295
22352
sprites.length = 0;
22296
22353
lensFlares.length = 0;
22297
22354
22298
- projectObject( scene );
22355
+ projectObject( scene, camera );
22299
22356
22300
22357
opaqueObjects.length = opaqueObjectsLastIndex + 1;
22301
22358
transparentObjects.length = transparentObjectsLastIndex + 1;
@@ -22426,77 +22483,81 @@ THREE.WebGLRenderer = function ( parameters ) {
22426
22483
22427
22484
}
22428
22485
22429
- function projectObject( object ) {
22486
+ function projectObject( object, camera ) {
22430
22487
22431
22488
if ( object.visible === false ) return;
22432
22489
22433
- if ( object instanceof THREE.Light ) {
22490
+ if ( ( object.channels.mask & camera.channels.mask ) !== 0 ) {
22434
22491
22435
- lights.push ( object );
22492
+ if ( object instanceof THREE.Light ) {
22436
22493
22437
- } else if ( object instanceof THREE.Sprite ) {
22494
+ lights.push ( object );
22438
22495
22439
- sprites.push ( object );
22496
+ } else if ( object instanceof THREE.Sprite ) {
22440
22497
22441
- } else if ( object instanceof THREE.LensFlare ) {
22498
+ sprites.push ( object );
22442
22499
22443
- lensFlares.push ( object );
22500
+ } else if ( object instanceof THREE.LensFlare ) {
22444
22501
22445
- } else if ( object instanceof THREE.ImmediateRenderObject ) {
22502
+ lensFlares.push ( object );
22446
22503
22447
- if ( _this.sortObjects === true ) {
22504
+ } else if ( object instanceof THREE.ImmediateRenderObject ) {
22448
22505
22449
- _vector3.setFromMatrixPosition( object.matrixWorld );
22450
- _vector3.applyProjection( _projScreenMatrix );
22506
+ if ( _this.sortObjects === true ) {
22451
22507
22452
- }
22508
+ _vector3.setFromMatrixPosition( object.matrixWorld );
22509
+ _vector3.applyProjection( _projScreenMatrix );
22453
22510
22454
- pushRenderItem( object, null, object.material, _vector3.z, null );
22511
+ }
22455
22512
22456
- } else if ( object instanceof THREE.Mesh || object instanceof THREE.Line || object instanceof THREE.Points ) {
22513
+ pushRenderItem ( object, null, object.material, _vector3.z, null );
22457
22514
22458
- if ( object instanceof THREE.SkinnedMesh ) {
22515
+ } else if ( object instanceof THREE.Mesh || object instanceof THREE.Line || object instanceof THREE.Points ) {
22459
22516
22460
- object.skeleton.update();
22517
+ if ( object instanceof THREE.SkinnedMesh ) {
22461
22518
22462
- }
22519
+ object.skeleton.update();
22463
22520
22464
- if ( object.frustumCulled === false || _frustum.intersectsObject( object ) === true ) {
22521
+ }
22465
22522
22466
- var material = object.material;
22523
+ if ( object.frustumCulled === false || _frustum.intersectsObject( object ) === true ) {
22467
22524
22468
- if ( material.visible === true ) {
22525
+ var material = object.material;
22469
22526
22470
- if ( _this.sortObjects === true ) {
22527
+ if ( material.visible === true ) {
22471
22528
22472
- _vector3.setFromMatrixPosition( object.matrixWorld );
22473
- _vector3.applyProjection( _projScreenMatrix );
22529
+ if ( _this.sortObjects === true ) {
22474
22530
22475
- }
22531
+ _vector3.setFromMatrixPosition( object.matrixWorld );
22532
+ _vector3.applyProjection( _projScreenMatrix );
22476
22533
22477
- var geometry = objects.update( object );
22534
+ }
22535
+
22536
+ var geometry = objects.update( object );
22478
22537
22479
- if ( material instanceof THREE.MeshFaceMaterial ) {
22538
+ if ( material instanceof THREE.MeshFaceMaterial ) {
22480
22539
22481
- var groups = geometry.groups;
22482
- var materials = material.materials;
22540
+ var groups = geometry.groups;
22541
+ var materials = material.materials;
22483
22542
22484
- for ( var i = 0, l = groups.length; i < l; i ++ ) {
22543
+ for ( var i = 0, l = groups.length; i < l; i ++ ) {
22485
22544
22486
- var group = groups[ i ];
22487
- var groupMaterial = materials[ group.materialIndex ];
22545
+ var group = groups[ i ];
22546
+ var groupMaterial = materials[ group.materialIndex ];
22488
22547
22489
- if ( groupMaterial.visible === true ) {
22548
+ if ( groupMaterial.visible === true ) {
22490
22549
22491
- pushRenderItem( object, geometry, groupMaterial, _vector3.z, group );
22550
+ pushRenderItem( object, geometry, groupMaterial, _vector3.z, group );
22551
+
22552
+ }
22492
22553
22493
22554
}
22494
22555
22495
- }
22556
+ } else {
22496
22557
22497
- } else {
22558
+ pushRenderItem( object, geometry, material, _vector3.z, null );
22498
22559
22499
- pushRenderItem( object, geometry, material, _vector3.z, null );
22560
+ }
22500
22561
22501
22562
}
22502
22563
@@ -22510,7 +22571,7 @@ THREE.WebGLRenderer = function ( parameters ) {
22510
22571
22511
22572
for ( var i = 0, l = children.length; i < l; i ++ ) {
22512
22573
22513
- projectObject( children[ i ] );
22574
+ projectObject( children[ i ], camera );
22514
22575
22515
22576
}
22516
22577
@@ -24036,7 +24097,7 @@ THREE.WebGLRenderer = function ( parameters ) {
24036
24097
}
24037
24098
24038
24099
uploadTexture( textureProperties, texture, slot );
24039
-
24100
+
24040
24101
return;
24041
24102
24042
24103
}
0 commit comments