( v1, element, material )
| 16518 | } |
| 16519 | |
| 16520 | function renderSprite( v1, element, material ) { |
| 16521 | |
| 16522 | setOpacity( material.opacity ); |
| 16523 | setBlending( material.blending ); |
| 16524 | |
| 16525 | var scaleX = element.scale.x * _canvasWidthHalf; |
| 16526 | var scaleY = element.scale.y * _canvasHeightHalf; |
| 16527 | |
| 16528 | var dist = 0.5 * Math.sqrt( scaleX * scaleX + scaleY * scaleY ); // allow for rotated sprite |
| 16529 | _elemBox.min.set( v1.x - dist, v1.y - dist ); |
| 16530 | _elemBox.max.set( v1.x + dist, v1.y + dist ); |
| 16531 | |
| 16532 | if ( material instanceof THREE.SpriteMaterial || |
| 16533 | material instanceof THREE.ParticleSystemMaterial ) { // Backwards compatibility |
| 16534 | |
| 16535 | var texture = material.map; |
| 16536 | |
| 16537 | if ( texture !== null ) { |
| 16538 | |
| 16539 | if ( texture.hasEventListener( 'update', onTextureUpdate ) === false ) { |
| 16540 | |
| 16541 | if ( texture.image !== undefined && texture.image.width > 0 ) { |
| 16542 | |
| 16543 | textureToPattern( texture ); |
| 16544 | |
| 16545 | } |
| 16546 | |
| 16547 | texture.addEventListener( 'update', onTextureUpdate ); |
| 16548 | |
| 16549 | } |
| 16550 | |
| 16551 | var pattern = _patterns[ texture.id ]; |
| 16552 | |
| 16553 | if ( pattern !== undefined ) { |
| 16554 | |
| 16555 | setFillStyle( pattern ); |
| 16556 | |
| 16557 | } else { |
| 16558 | |
| 16559 | setFillStyle( 'rgba( 0, 0, 0, 1 )' ); |
| 16560 | |
| 16561 | } |
| 16562 | |
| 16563 | // |
| 16564 | |
| 16565 | var bitmap = texture.image; |
| 16566 | |
| 16567 | var ox = bitmap.width * texture.offset.x; |
| 16568 | var oy = bitmap.height * texture.offset.y; |
| 16569 | |
| 16570 | var sx = bitmap.width * texture.repeat.x; |
| 16571 | var sy = bitmap.height * texture.repeat.y; |
| 16572 | |
| 16573 | var cx = scaleX / sx; |
| 16574 | var cy = scaleY / sy; |
| 16575 | |
| 16576 | _context.save(); |
| 16577 | _context.translate( v1.x, v1.y ); |
no test coverage detected