Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
this._initCachedDisplayObject(renderer);
this._cacheData.sprite.transform._worldID = this.transform._worldID;
this._cacheData.sprite.worldAlpha = this.worldAlpha;
this._cacheData.sprite._render(renderer);
};
/**
* Prepares the WebGL renderer to cache the sprite
*
* @private
* @function _initCachedDisplayObject
* @memberof PIXI.DisplayObject#
* @param {PIXI.Renderer} renderer - the WebGL renderer
*/
DisplayObject.prototype._initCachedDisplayObject = function _initCachedDisplayObject(renderer)
{
if (this._cacheData && this._cacheData.sprite)
{
return;
}
// make sure alpha is set to 1 otherwise it will get rendered as invisible!
const cacheAlpha = this.alpha;
this.alpha = 1;
// first we flush anything left in the renderer (otherwise it would get rendered to the cached texture)
renderer.batch.flush();
// this.filters= [];
// next we find the dimensions of the untransformed object
}
else
{
this.updateTransform();
}
// map the hit test..
this.containsPoint = cachedSprite.containsPoint.bind(cachedSprite);
};
/**
* Calculates the bounds of the cached sprite
*
* @private
*/
DisplayObject.prototype._calculateCachedBounds = function _calculateCachedBounds()
{
this._bounds.clear();
this._cacheData.sprite.transform._worldID = this.transform._worldID;
this._cacheData.sprite._calculateBounds();
this._lastBoundsID = this._boundsID;
};
/**
* Gets the bounds of the cached sprite.
*
* @private
* @return {Rectangle} The local bounds.
*/
DisplayObject.prototype._getCachedLocalBounds = function _getCachedLocalBounds()
{
return this._cacheData.sprite.getLocalBounds();
this.updateTransform();
}
// map the hit test..
this.containsPoint = cachedSprite.containsPoint.bind(cachedSprite);
};
/**
* Renders a cached version of the sprite with canvas
*
* @private
* @function _renderCachedCanvas
* @memberof PIXI.DisplayObject#
* @param {PIXI.Renderer} renderer - the WebGL renderer
*/
DisplayObject.prototype._renderCachedCanvas = function _renderCachedCanvas(renderer)
{
if (!this.visible || this.worldAlpha <= 0 || !this.renderable)
{
return;
}
this._initCachedDisplayObjectCanvas(renderer);
this._cacheData.sprite.worldAlpha = this.worldAlpha;
this._cacheData.sprite._renderCanvas(renderer);
};
// TODO this can be the same as the WebGL version.. will need to do a little tweaking first though..
/**
* Prepares the Canvas renderer to cache the sprite
*
import { DisplayObject } from '@pixi/display';
/**
* Renders the object using the Canvas renderer
* @method renderCanvas
* @memberof PIXI.Container#
* @param {PIXI.CanvasRenderer} renderer - The renderer
*/
DisplayObject.prototype.renderCanvas = function renderCanvas(renderer) // eslint-disable-line no-unused-vars
{
// OVERWRITE;
};
this._initCachedDisplayObjectCanvas(renderer);
this._cacheData.sprite.worldAlpha = this.worldAlpha;
this._cacheData.sprite._renderCanvas(renderer);
};
// TODO this can be the same as the WebGL version.. will need to do a little tweaking first though..
/**
* Prepares the Canvas renderer to cache the sprite
*
* @private
* @function _initCachedDisplayObjectCanvas
* @memberof PIXI.DisplayObject#
* @param {PIXI.Renderer} renderer - the WebGL renderer
*/
DisplayObject.prototype._initCachedDisplayObjectCanvas = function _initCachedDisplayObjectCanvas(renderer)
{
if (this._cacheData && this._cacheData.sprite)
{
return;
}
// get bounds actually transforms the object for us already!
const bounds = this.getLocalBounds();
const cacheAlpha = this.alpha;
this.alpha = 1;
const cachedRenderTarget = renderer.context;
bounds.ceil(settings.RESOLUTION);
import { Texture, BaseTexture, RenderTexture } from '@pixi/core';
import { Sprite } from '@pixi/sprite';
import { DisplayObject } from '@pixi/display';
import { Matrix } from '@pixi/math';
import { uid } from '@pixi/utils';
import { settings } from '@pixi/settings';
const _tempMatrix = new Matrix();
DisplayObject.prototype._cacheAsBitmap = false;
DisplayObject.prototype._cacheData = false;
// figured theres no point adding ALL the extra variables to prototype.
// this model can hold the information needed. This can also be generated on demand as
// most objects are not cached as bitmaps.
/**
* @class
* @ignore
*/
class CacheData
{
constructor()
{
this.textureCacheId = null;
this.originalRender = null;
this.originalRenderCanvas = null;
this.originalRender = null;
this.originalRenderCanvas = null;
this.originalCalculateBounds = null;
this.originalGetLocalBounds = null;
this.originalUpdateTransform = null;
this.originalHitTest = null;
this.originalDestroy = null;
this.originalMask = null;
this.originalFilterArea = null;
this.sprite = null;
}
}
Object.defineProperties(DisplayObject.prototype, {
/**
* Set this to true if you want this display object to be cached as a bitmap.
* This basically takes a snap shot of the display object as it is at that moment. It can
* provide a performance benefit for complex static displayObjects.
* To remove simply set this property to `false`
*
* IMPORTANT GOTCHA - Make sure that all your textures are preloaded BEFORE setting this property to true
* as it will take a snapshot of what is currently there. If the textures have not loaded then they will not appear.
*
* @member {boolean}
* @memberof PIXI.DisplayObject#
*/
cacheAsBitmap: {
get()
{
return this._cacheAsBitmap;
BaseTexture.removeFromCache(this._cacheData.textureCacheId);
Texture.removeFromCache(this._cacheData.textureCacheId);
this._cacheData.textureCacheId = null;
};
/**
* Destroys the cached object.
*
* @private
* @param {object|boolean} [options] - Options parameter. A boolean will act as if all options
* have been set to that value.
* Used when destroying containers, see the Container.destroy method.
*/
DisplayObject.prototype._cacheAsBitmapDestroy = function _cacheAsBitmapDestroy(options)
{
this.cacheAsBitmap = false;
this.destroy(options);
};
* Gets the bounds of the cached sprite.
*
* @private
* @return {Rectangle} The local bounds.
*/
DisplayObject.prototype._getCachedLocalBounds = function _getCachedLocalBounds()
{
return this._cacheData.sprite.getLocalBounds();
};
/**
* Destroys the cached sprite.
*
* @private
*/
DisplayObject.prototype._destroyCachedDisplayObject = function _destroyCachedDisplayObject()
{
this._cacheData.sprite._texture.destroy(true);
this._cacheData.sprite = null;
BaseTexture.removeFromCache(this._cacheData.textureCacheId);
Texture.removeFromCache(this._cacheData.textureCacheId);
this._cacheData.textureCacheId = null;
};
/**
* Destroys the cached object.
*
* @private
* @param {object|boolean} [options] - Options parameter. A boolean will act as if all options
* have been set to that value.
import { DisplayObject, Container } from '@pixi/display';
/**
* The instance name of the object.
*
* @memberof PIXI.DisplayObject#
* @member {string} name
*/
DisplayObject.prototype.name = null;
/**
* Returns the display object in the container.
*
* @method getChildByName
* @memberof PIXI.Container#
* @param {string} name - Instance name.
* @return {PIXI.DisplayObject} The child with the specified name.
*/
Container.prototype.getChildByName = function getChildByName(name)
{
for (let i = 0; i < this.children.length; i++)
{
if (this.children[i].name === name)
{
return this.children[i];