Skip to content

Commit 692f137

Browse files
committed
Unified Particle into Sprite. Renamed ParticleBasicMaterial to ParticleSystemMaterial. Fixes mrdoob#968.
1 parent 0720aa8 commit 692f137

14 files changed

Lines changed: 69 additions & 82 deletions

File tree

examples/js/renderers/SVGRenderer.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,12 @@ THREE.SVGRenderer = function () {
126126

127127
_elemBox.makeEmpty();
128128

129-
if ( element instanceof THREE.RenderableParticle ) {
129+
if ( element instanceof THREE.RenderableSprite ) {
130130

131131
_v1 = element;
132132
_v1.x *= _svgWidthHalf; _v1.y *= -_svgHeightHalf;
133133

134-
renderParticle( _v1, element, material );
134+
renderSprite( _v1, element, material );
135135

136136
} else if ( element instanceof THREE.RenderableLine ) {
137137

@@ -258,15 +258,15 @@ THREE.SVGRenderer = function () {
258258

259259
}
260260

261-
function renderParticle( v1, element, material ) {
261+
function renderSprite( v1, element, material ) {
262262

263263
/*
264264
_svgNode = getCircleNode( _circleCount++ );
265265
_svgNode.setAttribute( 'cx', v1.x );
266266
_svgNode.setAttribute( 'cy', v1.y );
267267
_svgNode.setAttribute( 'r', element.scale.x * _svgWidthHalf );
268268
269-
if ( material instanceof THREE.ParticleCircleMaterial ) {
269+
if ( material instanceof THREE.SpriteSVGMaterial ) {
270270
271271
_color.r = _ambientLight.r + _directionalLights.r + _pointLights.r;
272272
_color.g = _ambientLight.g + _directionalLights.g + _pointLights.g;

src/core/Projector.js

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ THREE.Projector = function () {
1010
_vertex, _vertexCount, _vertexPool = [], _vertexPoolLength = 0,
1111
_face, _face3Count, _face3Pool = [], _face3PoolLength = 0,
1212
_line, _lineCount, _linePool = [], _linePoolLength = 0,
13-
_particle, _particleCount, _particlePool = [], _particlePoolLength = 0,
13+
_sprite, _spriteCount, _spritePool = [], _spritePoolLength = 0,
1414

1515
_renderData = { objects: [], sprites: [], lights: [], elements: [] },
1616

@@ -112,7 +112,7 @@ THREE.Projector = function () {
112112

113113
}
114114

115-
} else if ( object instanceof THREE.Sprite || object instanceof THREE.Particle ) {
115+
} else if ( object instanceof THREE.Sprite ) {
116116

117117
_renderData.sprites.push( getObject( object ) );
118118

@@ -153,7 +153,7 @@ THREE.Projector = function () {
153153

154154
_face3Count = 0;
155155
_lineCount = 0;
156-
_particleCount = 0;
156+
_spriteCount = 0;
157157

158158
_renderData.elements.length = 0;
159159

@@ -382,7 +382,7 @@ THREE.Projector = function () {
382382

383383
_modelMatrix = object.matrixWorld;
384384

385-
if ( object instanceof THREE.Particle ) {
385+
if ( object instanceof THREE.Sprite ) {
386386

387387
_vector4.set( _modelMatrix.elements[12], _modelMatrix.elements[13], _modelMatrix.elements[14], 1 );
388388
_vector4.applyMatrix4( _viewProjectionMatrix );
@@ -393,21 +393,21 @@ THREE.Projector = function () {
393393

394394
if ( _vector4.z > -1 && _vector4.z < 1 ) {
395395

396-
_particle = getNextParticleInPool();
397-
_particle.id = object.id;
398-
_particle.x = _vector4.x * invW;
399-
_particle.y = _vector4.y * invW;
400-
_particle.z = _vector4.z;
401-
_particle.object = object;
396+
_sprite = getNextSpriteInPool();
397+
_sprite.id = object.id;
398+
_sprite.x = _vector4.x * invW;
399+
_sprite.y = _vector4.y * invW;
400+
_sprite.z = _vector4.z;
401+
_sprite.object = object;
402402

403-
_particle.rotation = object.rotation.z;
403+
_sprite.rotation = object.rotation;
404404

405-
_particle.scale.x = object.scale.x * Math.abs( _particle.x - ( _vector4.x + camera.projectionMatrix.elements[0] ) / ( _vector4.w + camera.projectionMatrix.elements[12] ) );
406-
_particle.scale.y = object.scale.y * Math.abs( _particle.y - ( _vector4.y + camera.projectionMatrix.elements[5] ) / ( _vector4.w + camera.projectionMatrix.elements[13] ) );
405+
_sprite.scale.x = object.scale.x * Math.abs( _sprite.x - ( _vector4.x + camera.projectionMatrix.elements[0] ) / ( _vector4.w + camera.projectionMatrix.elements[12] ) );
406+
_sprite.scale.y = object.scale.y * Math.abs( _sprite.y - ( _vector4.y + camera.projectionMatrix.elements[5] ) / ( _vector4.w + camera.projectionMatrix.elements[13] ) );
407407

408-
_particle.material = object.material;
408+
_sprite.material = object.material;
409409

410-
_renderData.elements.push( _particle );
410+
_renderData.elements.push( _sprite );
411411

412412
}
413413

@@ -488,19 +488,19 @@ THREE.Projector = function () {
488488

489489
}
490490

491-
function getNextParticleInPool() {
491+
function getNextSpriteInPool() {
492492

493-
if ( _particleCount === _particlePoolLength ) {
493+
if ( _spriteCount === _spritePoolLength ) {
494494

495-
var particle = new THREE.RenderableParticle();
496-
_particlePool.push( particle );
497-
_particlePoolLength ++;
498-
_particleCount ++
499-
return particle;
495+
var sprite = new THREE.RenderableSprite();
496+
_spritePool.push( sprite );
497+
_spritePoolLength ++;
498+
_spriteCount ++
499+
return sprite;
500500

501501
}
502502

503-
return _particlePool[ _particleCount ++ ];
503+
return _spritePool[ _spriteCount ++ ];
504504

505505
}
506506

src/core/Raycaster.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
var intersectObject = function ( object, raycaster, intersects ) {
3838

39-
if ( object instanceof THREE.Particle ) {
39+
if ( object instanceof THREE.Sprite ) {
4040

4141
matrixPosition.getPositionFromMatrix( object.matrixWorld );
4242
var distance = raycaster.ray.distanceToPoint( matrixPosition );
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* }
2020
*/
2121

22-
THREE.ParticleBasicMaterial = function ( parameters ) {
22+
THREE.ParticleSystemMaterial = function ( parameters ) {
2323

2424
THREE.Material.call( this );
2525

@@ -38,11 +38,11 @@ THREE.ParticleBasicMaterial = function ( parameters ) {
3838

3939
};
4040

41-
THREE.ParticleBasicMaterial.prototype = Object.create( THREE.Material.prototype );
41+
THREE.ParticleSystemMaterial.prototype = Object.create( THREE.Material.prototype );
4242

43-
THREE.ParticleBasicMaterial.prototype.clone = function () {
43+
THREE.ParticleSystemMaterial.prototype.clone = function () {
4444

45-
var material = new THREE.ParticleBasicMaterial();
45+
var material = new THREE.ParticleSystemMaterial();
4646

4747
THREE.Material.prototype.clone.call( this, material );
4848

@@ -60,3 +60,7 @@ THREE.ParticleBasicMaterial.prototype.clone = function () {
6060
return material;
6161

6262
};
63+
64+
// backwards compatibility
65+
66+
THREE.ParticleBasicMaterial = THREE.ParticleSystemMaterial;
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* }
1010
*/
1111

12-
THREE.ParticleCanvasMaterial = function ( parameters ) {
12+
THREE.SpriteCanvasMaterial = function ( parameters ) {
1313

1414
THREE.Material.call( this );
1515

@@ -20,11 +20,11 @@ THREE.ParticleCanvasMaterial = function ( parameters ) {
2020

2121
};
2222

23-
THREE.ParticleCanvasMaterial.prototype = Object.create( THREE.Material.prototype );
23+
THREE.SpriteCanvasMaterial.prototype = Object.create( THREE.Material.prototype );
2424

25-
THREE.ParticleCanvasMaterial.prototype.clone = function () {
25+
THREE.SpriteCanvasMaterial.prototype.clone = function () {
2626

27-
var material = new THREE.ParticleCanvasMaterial();
27+
var material = new THREE.SpriteCanvasMaterial();
2828

2929
THREE.Material.prototype.clone.call( this, material );
3030

@@ -34,3 +34,7 @@ THREE.ParticleCanvasMaterial.prototype.clone = function () {
3434
return material;
3535

3636
};
37+
38+
// backwards compatibility
39+
40+
THREE.ParticleCanvasMaterial = THREE.SpriteCanvasMaterial;

src/objects/Particle.js

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/objects/ParticleSystem.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ THREE.ParticleSystem = function ( geometry, material ) {
77
THREE.Object3D.call( this );
88

99
this.geometry = geometry !== undefined ? geometry : new THREE.Geometry();
10-
this.material = material !== undefined ? material : new THREE.ParticleBasicMaterial( { color: Math.random() * 0xffffff } );
10+
this.material = material !== undefined ? material : new THREE.ParticleSystemMaterial( { color: Math.random() * 0xffffff } );
1111

1212
this.sortParticles = false;
1313
this.frustumCulled = false;

src/objects/Sprite.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,6 @@ THREE.Sprite.prototype.clone = function ( object ) {
3737

3838
};
3939

40+
// Backwards compatibility
41+
42+
THREE.Particle = THREE.Sprite;

src/renderers/CanvasRenderer.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -289,12 +289,12 @@ THREE.CanvasRenderer = function ( parameters ) {
289289

290290
_elemBox.makeEmpty();
291291

292-
if ( element instanceof THREE.RenderableParticle ) {
292+
if ( element instanceof THREE.RenderableSprite ) {
293293

294294
_v1 = element;
295295
_v1.x *= _canvasWidthHalf; _v1.y *= _canvasHeightHalf;
296296

297-
renderParticle( _v1, element, material );
297+
renderSprite( _v1, element, material );
298298

299299
} else if ( element instanceof THREE.RenderableLine ) {
300300

@@ -387,13 +387,13 @@ THREE.CanvasRenderer = function ( parameters ) {
387387

388388
} else if ( light instanceof THREE.DirectionalLight ) {
389389

390-
// for particles
390+
// for sprites
391391

392392
_directionalLights.add( lightColor );
393393

394394
} else if ( light instanceof THREE.PointLight ) {
395395

396-
// for particles
396+
// for sprites
397397

398398
_pointLights.add( lightColor );
399399

@@ -445,15 +445,16 @@ THREE.CanvasRenderer = function ( parameters ) {
445445

446446
}
447447

448-
function renderParticle( v1, element, material ) {
448+
function renderSprite( v1, element, material ) {
449449

450450
setOpacity( material.opacity );
451451
setBlending( material.blending );
452452

453453
var width, height, scaleX, scaleY,
454454
bitmap, bitmapWidth, bitmapHeight;
455455

456-
if ( material instanceof THREE.ParticleBasicMaterial ) {
456+
if ( material instanceof THREE.Sprite ||
457+
material instanceof THREE.ParticleSystemMaterial ) { // Backwards compatibility
457458

458459
if ( material.map === null ) {
459460

@@ -529,7 +530,7 @@ THREE.CanvasRenderer = function ( parameters ) {
529530
_context.stroke();
530531
*/
531532

532-
} else if ( material instanceof THREE.ParticleCanvasMaterial ) {
533+
} else if ( material instanceof THREE.SpriteCanvasMaterial ) {
533534

534535
width = element.scale.x * _canvasWidthHalf;
535536
height = element.scale.y * _canvasHeightHalf;

src/renderers/WebGLRenderer.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4085,7 +4085,7 @@ THREE.WebGLRenderer = function ( parameters ) {
40854085

40864086
shaderID = 'dashed';
40874087

4088-
} else if ( material instanceof THREE.ParticleBasicMaterial ) {
4088+
} else if ( material instanceof THREE.ParticleSystemMaterial ) {
40894089

40904090
shaderID = 'particle_basic';
40914091

@@ -4352,7 +4352,7 @@ THREE.WebGLRenderer = function ( parameters ) {
43524352
refreshUniformsLine( m_uniforms, material );
43534353
refreshUniformsDash( m_uniforms, material );
43544354

4355-
} else if ( material instanceof THREE.ParticleBasicMaterial ) {
4355+
} else if ( material instanceof THREE.ParticleSystemMaterial ) {
43564356

43574357
refreshUniformsParticle( m_uniforms, material );
43584358

0 commit comments

Comments
 (0)