@pixi/sprite-tiling
Advanced tools
Comparing version 5.2.4 to 5.3.0
/*! | ||
* @pixi/sprite-tiling - v5.2.4 | ||
* Compiled Sun, 03 May 2020 22:38:52 UTC | ||
* @pixi/sprite-tiling - v5.3.0 | ||
* Compiled Thu, 18 Jun 2020 23:27:40 UTC | ||
* | ||
@@ -9,7 +9,197 @@ * @pixi/sprite-tiling is licensed under the MIT License. | ||
this.PIXI = this.PIXI || {}; | ||
var _pixi_sprite_tiling = (function (exports, core, math, utils, sprite, constants) { | ||
var _pixi_sprite_tiling = (function (exports, core, math, sprite, utils, constants) { | ||
'use strict'; | ||
/*! ***************************************************************************** | ||
Copyright (c) Microsoft Corporation. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use | ||
this file except in compliance with the License. You may obtain a copy of the | ||
License at http://www.apache.org/licenses/LICENSE-2.0 | ||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED | ||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, | ||
MERCHANTABLITY OR NON-INFRINGEMENT. | ||
See the Apache Version 2.0 License for specific language governing permissions | ||
and limitations under the License. | ||
***************************************************************************** */ | ||
/* global Reflect, Promise */ | ||
var extendStatics = function(d, b) { | ||
extendStatics = Object.setPrototypeOf || | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; | ||
return extendStatics(d, b); | ||
}; | ||
function __extends(d, b) { | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
} | ||
var __assign = function() { | ||
__assign = Object.assign || function __assign(t) { | ||
var arguments$1 = arguments; | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments$1[i]; | ||
for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) { t[p] = s[p]; } } | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
function __rest(s, e) { | ||
var t = {}; | ||
for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) | ||
{ t[p] = s[p]; } } | ||
if (s != null && typeof Object.getOwnPropertySymbols === "function") | ||
{ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0) | ||
{ t[p[i]] = s[p[i]]; } } } | ||
return t; | ||
} | ||
function __decorate(decorators, target, key, desc) { | ||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; | ||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") { r = Reflect.decorate(decorators, target, key, desc); } | ||
else { for (var i = decorators.length - 1; i >= 0; i--) { if (d = decorators[i]) { r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; } } } | ||
return c > 3 && r && Object.defineProperty(target, key, r), r; | ||
} | ||
function __param(paramIndex, decorator) { | ||
return function (target, key) { decorator(target, key, paramIndex); } | ||
} | ||
function __metadata(metadataKey, metadataValue) { | ||
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") { return Reflect.metadata(metadataKey, metadataValue); } | ||
} | ||
function __awaiter(thisArg, _arguments, P, generator) { | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
} | ||
function __generator(thisArg, body) { | ||
var _ = { label: 0, sent: function() { if (t[0] & 1) { throw t[1]; } return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
function verb(n) { return function (v) { return step([n, v]); }; } | ||
function step(op) { | ||
if (f) { throw new TypeError("Generator is already executing."); } | ||
while (_) { try { | ||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) { return t; } | ||
if (y = 0, t) { op = [op[0] & 2, t.value]; } | ||
switch (op[0]) { | ||
case 0: case 1: t = op; break; | ||
case 4: _.label++; return { value: op[1], done: false }; | ||
case 5: _.label++; y = op[1]; op = [0]; continue; | ||
case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
if (t[2]) { _.ops.pop(); } | ||
_.trys.pop(); continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } } | ||
if (op[0] & 5) { throw op[1]; } return { value: op[0] ? op[1] : void 0, done: true }; | ||
} | ||
} | ||
function __exportStar(m, exports) { | ||
for (var p in m) { if (!exports.hasOwnProperty(p)) { exports[p] = m[p]; } } | ||
} | ||
function __values(o) { | ||
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; | ||
if (m) { return m.call(o); } | ||
return { | ||
next: function () { | ||
if (o && i >= o.length) { o = void 0; } | ||
return { value: o && o[i++], done: !o }; | ||
} | ||
}; | ||
} | ||
function __read(o, n) { | ||
var m = typeof Symbol === "function" && o[Symbol.iterator]; | ||
if (!m) { return o; } | ||
var i = m.call(o), r, ar = [], e; | ||
try { | ||
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) { ar.push(r.value); } | ||
} | ||
catch (error) { e = { error: error }; } | ||
finally { | ||
try { | ||
if (r && !r.done && (m = i["return"])) { m.call(i); } | ||
} | ||
finally { if (e) { throw e.error; } } | ||
} | ||
return ar; | ||
} | ||
function __spread() { | ||
var arguments$1 = arguments; | ||
for (var ar = [], i = 0; i < arguments.length; i++) | ||
{ ar = ar.concat(__read(arguments$1[i])); } | ||
return ar; | ||
} | ||
function __await(v) { | ||
return this instanceof __await ? (this.v = v, this) : new __await(v); | ||
} | ||
function __asyncGenerator(thisArg, _arguments, generator) { | ||
if (!Symbol.asyncIterator) { throw new TypeError("Symbol.asyncIterator is not defined."); } | ||
var g = generator.apply(thisArg, _arguments || []), i, q = []; | ||
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; | ||
function verb(n) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } } | ||
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } | ||
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } | ||
function fulfill(value) { resume("next", value); } | ||
function reject(value) { resume("throw", value); } | ||
function settle(f, v) { if (f(v), q.shift(), q.length) { resume(q[0][0], q[0][1]); } } | ||
} | ||
function __asyncDelegator(o) { | ||
var i, p; | ||
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; | ||
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } | ||
} | ||
function __asyncValues(o) { | ||
if (!Symbol.asyncIterator) { throw new TypeError("Symbol.asyncIterator is not defined."); } | ||
var m = o[Symbol.asyncIterator], i; | ||
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); | ||
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } | ||
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } | ||
} | ||
function __makeTemplateObject(cooked, raw) { | ||
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } | ||
return cooked; | ||
}; | ||
function __importStar(mod) { | ||
if (mod && mod.__esModule) { return mod; } | ||
var result = {}; | ||
if (mod != null) { for (var k in mod) { if (Object.hasOwnProperty.call(mod, k)) { result[k] = mod[k]; } } } | ||
result.default = mod; | ||
return result; | ||
} | ||
function __importDefault(mod) { | ||
return (mod && mod.__esModule) ? mod : { default: mod }; | ||
} | ||
var tempPoint = new math.Point(); | ||
/** | ||
@@ -22,10 +212,13 @@ * A tiling sprite is a fast way of rendering a tiling image | ||
*/ | ||
var TilingSprite = /*@__PURE__*/(function (Sprite) { | ||
function TilingSprite(texture, width, height) | ||
{ | ||
if ( width === void 0 ) width = 100; | ||
if ( height === void 0 ) height = 100; | ||
Sprite.call(this, texture); | ||
var TilingSprite = /** @class */ (function (_super) { | ||
__extends(TilingSprite, _super); | ||
/** | ||
* @param {PIXI.Texture} texture - the texture of the tiling sprite | ||
* @param {number} [width=100] - the width of the tiling sprite | ||
* @param {number} [height=100] - the height of the tiling sprite | ||
*/ | ||
function TilingSprite(texture, width, height) { | ||
if (width === void 0) { width = 100; } | ||
if (height === void 0) { height = 100; } | ||
var _this = _super.call(this, texture) || this; | ||
/** | ||
@@ -36,6 +229,3 @@ * Tile transform | ||
*/ | ||
this.tileTransform = new math.Transform(); | ||
// /// private | ||
_this.tileTransform = new math.Transform(); | ||
/** | ||
@@ -47,4 +237,3 @@ * The with of the tiling sprite | ||
*/ | ||
this._width = width; | ||
_this._width = width; | ||
/** | ||
@@ -56,13 +245,4 @@ * The height of the tiling sprite | ||
*/ | ||
this._height = height; | ||
_this._height = height; | ||
/** | ||
* Canvas pattern | ||
* | ||
* @type {CanvasPattern} | ||
* @private | ||
*/ | ||
this._canvasPattern = null; | ||
/** | ||
* matrix that is applied to UV to get the coords in Texture normalized space to coords in BaseTexture space | ||
@@ -72,4 +252,3 @@ * | ||
*/ | ||
this.uvMatrix = texture.uvMatrix || new core.TextureMatrix(texture); | ||
_this.uvMatrix = texture.uvMatrix || new core.TextureMatrix(texture); | ||
/** | ||
@@ -82,4 +261,3 @@ * Plugin that is responsible for rendering this element. | ||
*/ | ||
this.pluginName = 'tilingSprite'; | ||
_this.pluginName = 'tilingSprite'; | ||
/** | ||
@@ -91,65 +269,58 @@ * Whether or not anchor affects uvs | ||
*/ | ||
this.uvRespectAnchor = false; | ||
_this.uvRespectAnchor = false; | ||
return _this; | ||
} | ||
if ( Sprite ) TilingSprite.__proto__ = Sprite; | ||
TilingSprite.prototype = Object.create( Sprite && Sprite.prototype ); | ||
TilingSprite.prototype.constructor = TilingSprite; | ||
var prototypeAccessors = { clampMargin: { configurable: true },tileScale: { configurable: true },tilePosition: { configurable: true },width: { configurable: true },height: { configurable: true } }; | ||
Object.defineProperty(TilingSprite.prototype, "clampMargin", { | ||
/** | ||
* Changes frame clamping in corresponding textureTransform, shortcut | ||
* Change to -0.5 to add a pixel to the edge, recommended for transparent trimmed textures in atlas | ||
* | ||
* @default 0.5 | ||
* @member {number} | ||
*/ | ||
get: function () { | ||
return this.uvMatrix.clampMargin; | ||
}, | ||
set: function (value) { | ||
this.uvMatrix.clampMargin = value; | ||
this.uvMatrix.update(true); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(TilingSprite.prototype, "tileScale", { | ||
/** | ||
* The scaling of the image that is being tiled | ||
* | ||
* @member {PIXI.ObservablePoint} | ||
*/ | ||
get: function () { | ||
return this.tileTransform.scale; | ||
}, | ||
set: function (value) { | ||
this.tileTransform.scale.copyFrom(value); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(TilingSprite.prototype, "tilePosition", { | ||
/** | ||
* The offset of the image that is being tiled | ||
* | ||
* @member {PIXI.ObservablePoint} | ||
*/ | ||
get: function () { | ||
return this.tileTransform.position; | ||
}, | ||
set: function (value) { | ||
this.tileTransform.position.copyFrom(value); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
/** | ||
* Changes frame clamping in corresponding textureTransform, shortcut | ||
* Change to -0.5 to add a pixel to the edge, recommended for transparent trimmed textures in atlas | ||
* | ||
* @default 0.5 | ||
* @member {number} | ||
* @protected | ||
*/ | ||
prototypeAccessors.clampMargin.get = function () | ||
{ | ||
return this.uvMatrix.clampMargin; | ||
}; | ||
prototypeAccessors.clampMargin.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this.uvMatrix.clampMargin = value; | ||
this.uvMatrix.update(true); | ||
}; | ||
/** | ||
* The scaling of the image that is being tiled | ||
* | ||
* @member {PIXI.ObservablePoint} | ||
*/ | ||
prototypeAccessors.tileScale.get = function () | ||
{ | ||
return this.tileTransform.scale; | ||
}; | ||
prototypeAccessors.tileScale.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this.tileTransform.scale.copyFrom(value); | ||
}; | ||
/** | ||
* The offset of the image that is being tiled | ||
* | ||
* @member {PIXI.ObservablePoint} | ||
*/ | ||
prototypeAccessors.tilePosition.get = function () | ||
{ | ||
return this.tileTransform.position; | ||
}; | ||
prototypeAccessors.tilePosition.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this.tileTransform.position.copyFrom(value); | ||
}; | ||
/** | ||
* @private | ||
*/ | ||
TilingSprite.prototype._onTextureUpdate = function _onTextureUpdate () | ||
{ | ||
if (this.uvMatrix) | ||
{ | ||
TilingSprite.prototype._onTextureUpdate = function () { | ||
if (this.uvMatrix) { | ||
this.uvMatrix.texture = this._texture; | ||
@@ -159,3 +330,2 @@ } | ||
}; | ||
/** | ||
@@ -167,19 +337,13 @@ * Renders the object using the WebGL renderer | ||
*/ | ||
TilingSprite.prototype._render = function _render (renderer) | ||
{ | ||
TilingSprite.prototype._render = function (renderer) { | ||
// tweak our texture temporarily.. | ||
var texture = this._texture; | ||
if (!texture || !texture.valid) | ||
{ | ||
if (!texture || !texture.valid) { | ||
return; | ||
} | ||
this.tileTransform.updateLocalTransform(); | ||
this.uvMatrix.update(); | ||
renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); | ||
renderer.plugins[this.pluginName].render(this); | ||
}; | ||
/** | ||
@@ -190,4 +354,3 @@ * Updates the bounds of the tiling sprite. | ||
*/ | ||
TilingSprite.prototype._calculateBounds = function _calculateBounds () | ||
{ | ||
TilingSprite.prototype._calculateBounds = function () { | ||
var minX = this._width * -this._anchor._x; | ||
@@ -197,6 +360,4 @@ var minY = this._height * -this._anchor._y; | ||
var maxY = this._height * (1 - this._anchor._y); | ||
this._bounds.addFrame(this.transform, minX, minY, maxX, maxY); | ||
}; | ||
/** | ||
@@ -208,7 +369,5 @@ * Gets the local bounds of the sprite object. | ||
*/ | ||
TilingSprite.prototype.getLocalBounds = function getLocalBounds (rect) | ||
{ | ||
TilingSprite.prototype.getLocalBounds = function (rect) { | ||
// we can do a fast local bounds if the sprite has no children! | ||
if (this.children.length === 0) | ||
{ | ||
if (this.children.length === 0) { | ||
this._bounds.minX = this._width * -this._anchor._x; | ||
@@ -218,46 +377,31 @@ this._bounds.minY = this._height * -this._anchor._y; | ||
this._bounds.maxY = this._height * (1 - this._anchor._y); | ||
if (!rect) | ||
{ | ||
if (!this._localBoundsRect) | ||
{ | ||
if (!rect) { | ||
if (!this._localBoundsRect) { | ||
this._localBoundsRect = new math.Rectangle(); | ||
} | ||
rect = this._localBoundsRect; | ||
} | ||
return this._bounds.getRectangle(rect); | ||
} | ||
return Sprite.prototype.getLocalBounds.call(this, rect); | ||
return _super.prototype.getLocalBounds.call(this, rect); | ||
}; | ||
/** | ||
* Checks if a point is inside this tiling sprite. | ||
* | ||
* @param {PIXI.Point} point - the point to check | ||
* @param {PIXI.IPointData} point - the point to check | ||
* @return {boolean} Whether or not the sprite contains the point. | ||
*/ | ||
TilingSprite.prototype.containsPoint = function containsPoint (point) | ||
{ | ||
TilingSprite.prototype.containsPoint = function (point) { | ||
this.worldTransform.applyInverse(point, tempPoint); | ||
var width = this._width; | ||
var height = this._height; | ||
var x1 = -width * this.anchor._x; | ||
if (tempPoint.x >= x1 && tempPoint.x < x1 + width) | ||
{ | ||
if (tempPoint.x >= x1 && tempPoint.x < x1 + width) { | ||
var y1 = -height * this.anchor._y; | ||
if (tempPoint.y >= y1 && tempPoint.y < y1 + height) | ||
{ | ||
if (tempPoint.y >= y1 && tempPoint.y < y1 + height) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
}; | ||
/** | ||
@@ -273,10 +417,7 @@ * Destroys this sprite and optionally its texture and children | ||
*/ | ||
TilingSprite.prototype.destroy = function destroy (options) | ||
{ | ||
Sprite.prototype.destroy.call(this, options); | ||
TilingSprite.prototype.destroy = function (options) { | ||
_super.prototype.destroy.call(this, options); | ||
this.tileTransform = null; | ||
this.uvMatrix = null; | ||
}; | ||
/** | ||
@@ -288,92 +429,46 @@ * Helper function that creates a new tiling sprite based on the source you provide. | ||
* @param {string|PIXI.Texture|HTMLCanvasElement|HTMLVideoElement} source - Source to create texture from | ||
* @param {number} width - the width of the tiling sprite | ||
* @param {number} height - the height of the tiling sprite | ||
* @param {Object} options - See {@link PIXI.BaseTexture}'s constructor for options. | ||
* @param {number} options.width - required width of the tiling sprite | ||
* @param {number} options.height - required height of the tiling sprite | ||
* @return {PIXI.TilingSprite} The newly created texture | ||
*/ | ||
TilingSprite.from = function from (source, width, height) | ||
{ | ||
return new TilingSprite(core.Texture.from(source), width, height); | ||
}; | ||
/** | ||
* Helper function that creates a tiling sprite that will use a texture from the TextureCache based on the frameId | ||
* The frame ids are created when a Texture packer file has been loaded | ||
* | ||
* @static | ||
* @param {string} frameId - The frame Id of the texture in the cache | ||
* @param {number} width - the width of the tiling sprite | ||
* @param {number} height - the height of the tiling sprite | ||
* @return {PIXI.TilingSprite} A new TilingSprite using a texture from the texture cache matching the frameId | ||
*/ | ||
TilingSprite.fromFrame = function fromFrame (frameId, width, height) | ||
{ | ||
var texture = utils.TextureCache[frameId]; | ||
if (!texture) | ||
{ | ||
throw new Error(("The frameId \"" + frameId + "\" does not exist in the texture cache " + (this))); | ||
TilingSprite.from = function (source, options) { | ||
// Deprecated | ||
if (typeof options === 'number') { | ||
utils.deprecation('5.3.0', 'TilingSprite.from use options instead of width and height args'); | ||
// eslint-disable-next-line prefer-rest-params | ||
options = { width: options, height: arguments[2] }; | ||
} | ||
return new TilingSprite(texture, width, height); | ||
return new TilingSprite(core.Texture.from(source, options), options.width, options.height); | ||
}; | ||
/** | ||
* Helper function that creates a sprite that will contain a texture based on an image url | ||
* If the image is not in the texture cache it will be loaded | ||
* | ||
* @static | ||
* @param {string} imageId - The image url of the texture | ||
* @param {number} width - the width of the tiling sprite | ||
* @param {number} height - the height of the tiling sprite | ||
* @param {Object} [options] - See {@link PIXI.BaseTexture}'s constructor for options. | ||
* @return {PIXI.TilingSprite} A new TilingSprite using a texture from the texture cache matching the image id | ||
*/ | ||
TilingSprite.fromImage = function fromImage (imageId, width, height, options) | ||
{ | ||
// Fallback support for crossorigin, scaleMode parameters | ||
if (options && typeof options !== 'object') | ||
{ | ||
options = { | ||
scaleMode: arguments[4], | ||
resourceOptions: { | ||
crossorigin: arguments[3], | ||
}, | ||
}; | ||
} | ||
return new TilingSprite(core.Texture.from(imageId, options), width, height); | ||
}; | ||
/** | ||
* The width of the sprite, setting this will actually modify the scale to achieve the value set | ||
* | ||
* @member {number} | ||
*/ | ||
prototypeAccessors.width.get = function () | ||
{ | ||
return this._width; | ||
}; | ||
prototypeAccessors.width.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this._width = value; | ||
}; | ||
/** | ||
* The height of the TilingSprite, setting this will actually modify the scale to achieve the value set | ||
* | ||
* @member {number} | ||
*/ | ||
prototypeAccessors.height.get = function () | ||
{ | ||
return this._height; | ||
}; | ||
prototypeAccessors.height.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this._height = value; | ||
}; | ||
Object.defineProperties( TilingSprite.prototype, prototypeAccessors ); | ||
Object.defineProperty(TilingSprite.prototype, "width", { | ||
/** | ||
* The width of the sprite, setting this will actually modify the scale to achieve the value set | ||
* | ||
* @member {number} | ||
*/ | ||
get: function () { | ||
return this._width; | ||
}, | ||
set: function (value) { | ||
this._width = value; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(TilingSprite.prototype, "height", { | ||
/** | ||
* The height of the TilingSprite, setting this will actually modify the scale to achieve the value set | ||
* | ||
* @member {number} | ||
*/ | ||
get: function () { | ||
return this._height; | ||
}, | ||
set: function (value) { | ||
this._height = value; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
return TilingSprite; | ||
@@ -389,3 +484,2 @@ }(sprite.Sprite)); | ||
var tempMat = new math.Matrix(); | ||
/** | ||
@@ -398,15 +492,15 @@ * WebGL renderer plugin for tiling sprites | ||
*/ | ||
var TilingSpriteRenderer = /*@__PURE__*/(function (ObjectRenderer) { | ||
function TilingSpriteRenderer(renderer) | ||
{ | ||
ObjectRenderer.call(this, renderer); | ||
var uniforms = { globals: this.renderer.globalUniforms }; | ||
this.shader = core.Shader.from(vertex, fragment, uniforms); | ||
this.simpleShader = core.Shader.from(vertex, fragmentSimple, uniforms); | ||
this.quad = new core.QuadUv(); | ||
var TilingSpriteRenderer = /** @class */ (function (_super) { | ||
__extends(TilingSpriteRenderer, _super); | ||
/** | ||
* constructor for renderer | ||
* | ||
* @param {PIXI.Renderer} renderer - The renderer this tiling awesomeness works for. | ||
*/ | ||
function TilingSpriteRenderer(renderer) { | ||
var _this = _super.call(this, renderer) || this; | ||
var uniforms = { globals: _this.renderer.globalUniforms }; | ||
_this.shader = core.Shader.from(vertex, fragment, uniforms); | ||
_this.simpleShader = core.Shader.from(vertex, fragmentSimple, uniforms); | ||
_this.quad = new core.QuadUv(); | ||
/** | ||
@@ -418,39 +512,25 @@ * The WebGL state in which this renderer will work. | ||
*/ | ||
this.state = core.State.for2d(); | ||
_this.state = core.State.for2d(); | ||
return _this; | ||
} | ||
if ( ObjectRenderer ) TilingSpriteRenderer.__proto__ = ObjectRenderer; | ||
TilingSpriteRenderer.prototype = Object.create( ObjectRenderer && ObjectRenderer.prototype ); | ||
TilingSpriteRenderer.prototype.constructor = TilingSpriteRenderer; | ||
/** | ||
* | ||
* @param {PIXI.TilingSprite} ts tilingSprite to be rendered | ||
* @param {PIXI.TilingSprite} ts - tilingSprite to be rendered | ||
*/ | ||
TilingSpriteRenderer.prototype.render = function render (ts) | ||
{ | ||
TilingSpriteRenderer.prototype.render = function (ts) { | ||
var renderer = this.renderer; | ||
var quad = this.quad; | ||
var vertices = quad.vertices; | ||
vertices[0] = vertices[6] = (ts._width) * -ts.anchor.x; | ||
vertices[1] = vertices[3] = ts._height * -ts.anchor.y; | ||
vertices[2] = vertices[4] = (ts._width) * (1.0 - ts.anchor.x); | ||
vertices[5] = vertices[7] = ts._height * (1.0 - ts.anchor.y); | ||
if (ts.uvRespectAnchor) | ||
{ | ||
if (ts.uvRespectAnchor) { | ||
vertices = quad.uvs; | ||
vertices[0] = vertices[6] = -ts.anchor.x; | ||
vertices[1] = vertices[3] = -ts.anchor.y; | ||
vertices[2] = vertices[4] = 1.0 - ts.anchor.x; | ||
vertices[5] = vertices[7] = 1.0 - ts.anchor.y; | ||
} | ||
quad.invalidate(); | ||
var tex = ts._texture; | ||
@@ -462,21 +542,14 @@ var baseTex = tex.baseTexture; | ||
&& tex.frame.width === baseTex.width && tex.frame.height === baseTex.height; | ||
// auto, force repeat wrapMode for big tiling textures | ||
if (isSimple) | ||
{ | ||
if (!baseTex._glTextures[renderer.CONTEXT_UID]) | ||
{ | ||
if (baseTex.wrapMode === constants.WRAP_MODES.CLAMP) | ||
{ | ||
if (isSimple) { | ||
if (!baseTex._glTextures[renderer.CONTEXT_UID]) { | ||
if (baseTex.wrapMode === constants.WRAP_MODES.CLAMP) { | ||
baseTex.wrapMode = constants.WRAP_MODES.REPEAT; | ||
} | ||
} | ||
else | ||
{ | ||
else { | ||
isSimple = baseTex.wrapMode !== constants.WRAP_MODES.CLAMP; | ||
} | ||
} | ||
var shader = isSimple ? this.simpleShader : this.shader; | ||
var w = tex.width; | ||
@@ -486,10 +559,3 @@ var h = tex.height; | ||
var H = ts._height; | ||
tempMat.set(lt.a * w / W, | ||
lt.b * w / H, | ||
lt.c * h / W, | ||
lt.d * h / H, | ||
lt.tx / W, | ||
lt.ty / H); | ||
tempMat.set(lt.a * w / W, lt.b * w / H, lt.c * h / W, lt.d * h / H, lt.tx / W, lt.ty / H); | ||
// that part is the same as above: | ||
@@ -500,10 +566,7 @@ // tempMat.identity(); | ||
// tempMat.scale(1.0 / ts._width, 1.0 / ts._height); | ||
tempMat.invert(); | ||
if (isSimple) | ||
{ | ||
if (isSimple) { | ||
tempMat.prepend(uv.mapCoord); | ||
} | ||
else | ||
{ | ||
else { | ||
shader.uniforms.uMapCoord = uv.mapCoord.toArray(true); | ||
@@ -513,12 +576,8 @@ shader.uniforms.uClampFrame = uv.uClampFrame; | ||
} | ||
shader.uniforms.uTransform = tempMat.toArray(true); | ||
shader.uniforms.uColor = utils.premultiplyTintToRgba(ts.tint, ts.worldAlpha, | ||
shader.uniforms.uColor, baseTex.alphaMode); | ||
shader.uniforms.uColor = utils.premultiplyTintToRgba(ts.tint, ts.worldAlpha, shader.uniforms.uColor, baseTex.alphaMode); | ||
shader.uniforms.translationMatrix = ts.transform.worldTransform.toArray(true); | ||
shader.uniforms.uSampler = tex; | ||
renderer.shader.bind(shader); | ||
renderer.geometry.bind(quad);// , renderer.shader.getGLShader()); | ||
renderer.geometry.bind(quad); | ||
this.state.blendMode = utils.correctBlendMode(ts.blendMode, baseTex.alphaMode); | ||
@@ -528,3 +587,2 @@ renderer.state.set(this.state); | ||
}; | ||
return TilingSpriteRenderer; | ||
@@ -538,4 +596,4 @@ }(core.ObjectRenderer)); | ||
}({}, PIXI, PIXI, PIXI.utils, PIXI, PIXI)); | ||
}({}, PIXI, PIXI, PIXI, PIXI.utils, PIXI)); | ||
Object.assign(this.PIXI, _pixi_sprite_tiling); | ||
//# sourceMappingURL=sprite-tiling.js.map |
/*! | ||
* @pixi/sprite-tiling - v5.2.4 | ||
* Compiled Sun, 03 May 2020 22:38:52 UTC | ||
* @pixi/sprite-tiling - v5.3.0 | ||
* Compiled Thu, 18 Jun 2020 23:27:40 UTC | ||
* | ||
@@ -8,3 +8,3 @@ * @pixi/sprite-tiling is licensed under the MIT License. | ||
*/ | ||
this.PIXI=this.PIXI||{};var _pixi_sprite_tiling=function(t,r,e,i,o,n){"use strict";var a=new e.Point,s=function(t){function o(i,o,n){void 0===o&&(o=100),void 0===n&&(n=100),t.call(this,i),this.tileTransform=new e.Transform,this._width=o,this._height=n,this._canvasPattern=null,this.uvMatrix=i.uvMatrix||new r.TextureMatrix(i),this.pluginName="tilingSprite",this.uvRespectAnchor=!1}t&&(o.__proto__=t),o.prototype=Object.create(t&&t.prototype),o.prototype.constructor=o;var n={clampMargin:{configurable:!0},tileScale:{configurable:!0},tilePosition:{configurable:!0},width:{configurable:!0},height:{configurable:!0}};return n.clampMargin.get=function(){return this.uvMatrix.clampMargin},n.clampMargin.set=function(t){this.uvMatrix.clampMargin=t,this.uvMatrix.update(!0)},n.tileScale.get=function(){return this.tileTransform.scale},n.tileScale.set=function(t){this.tileTransform.scale.copyFrom(t)},n.tilePosition.get=function(){return this.tileTransform.position},n.tilePosition.set=function(t){this.tileTransform.position.copyFrom(t)},o.prototype._onTextureUpdate=function(){this.uvMatrix&&(this.uvMatrix.texture=this._texture),this._cachedTint=16777215},o.prototype._render=function(t){var r=this._texture;r&&r.valid&&(this.tileTransform.updateLocalTransform(),this.uvMatrix.update(),t.batch.setObjectRenderer(t.plugins[this.pluginName]),t.plugins[this.pluginName].render(this))},o.prototype._calculateBounds=function(){var t=this._width*-this._anchor._x,r=this._height*-this._anchor._y,e=this._width*(1-this._anchor._x),i=this._height*(1-this._anchor._y);this._bounds.addFrame(this.transform,t,r,e,i)},o.prototype.getLocalBounds=function(r){return 0===this.children.length?(this._bounds.minX=this._width*-this._anchor._x,this._bounds.minY=this._height*-this._anchor._y,this._bounds.maxX=this._width*(1-this._anchor._x),this._bounds.maxY=this._height*(1-this._anchor._y),r||(this._localBoundsRect||(this._localBoundsRect=new e.Rectangle),r=this._localBoundsRect),this._bounds.getRectangle(r)):t.prototype.getLocalBounds.call(this,r)},o.prototype.containsPoint=function(t){this.worldTransform.applyInverse(t,a);var r=this._width,e=this._height,i=-r*this.anchor._x;if(a.x>=i&&a.x<i+r){var o=-e*this.anchor._y;if(a.y>=o&&a.y<o+e)return!0}return!1},o.prototype.destroy=function(r){t.prototype.destroy.call(this,r),this.tileTransform=null,this.uvMatrix=null},o.from=function(t,e,i){return new o(r.Texture.from(t),e,i)},o.fromFrame=function(t,r,e){var n=i.TextureCache[t];if(!n)throw new Error('The frameId "'+t+'" does not exist in the texture cache '+this);return new o(n,r,e)},o.fromImage=function(t,e,i,n){return n&&"object"!=typeof n&&(n={scaleMode:arguments[4],resourceOptions:{crossorigin:arguments[3]}}),new o(r.Texture.from(t,n),e,i)},n.width.get=function(){return this._width},n.width.set=function(t){this._width=t},n.height.get=function(){return this._height},n.height.set=function(t){this._height=t},Object.defineProperties(o.prototype,n),o}(o.Sprite),h="attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n",u="varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = vTextureCoord - floor(vTextureCoord - uClampOffset);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n vec4 texSample = texture2D(uSampler, coord);\n gl_FragColor = texSample * uColor;\n}\n",c="varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n vec4 sample = texture2D(uSampler, vTextureCoord);\n gl_FragColor = sample * uColor;\n}\n",l=new e.Matrix,d=function(t){function e(e){t.call(this,e);var i={globals:this.renderer.globalUniforms};this.shader=r.Shader.from(h,u,i),this.simpleShader=r.Shader.from(h,c,i),this.quad=new r.QuadUv,this.state=r.State.for2d()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.render=function(t){var r=this.renderer,e=this.quad,o=e.vertices;o[0]=o[6]=t._width*-t.anchor.x,o[1]=o[3]=t._height*-t.anchor.y,o[2]=o[4]=t._width*(1-t.anchor.x),o[5]=o[7]=t._height*(1-t.anchor.y),t.uvRespectAnchor&&((o=e.uvs)[0]=o[6]=-t.anchor.x,o[1]=o[3]=-t.anchor.y,o[2]=o[4]=1-t.anchor.x,o[5]=o[7]=1-t.anchor.y),e.invalidate();var a=t._texture,s=a.baseTexture,h=t.tileTransform.localTransform,u=t.uvMatrix,c=s.isPowerOfTwo&&a.frame.width===s.width&&a.frame.height===s.height;c&&(s._glTextures[r.CONTEXT_UID]?c=s.wrapMode!==n.WRAP_MODES.CLAMP:s.wrapMode===n.WRAP_MODES.CLAMP&&(s.wrapMode=n.WRAP_MODES.REPEAT));var d=c?this.simpleShader:this.shader,p=a.width,m=a.height,f=t._width,_=t._height;l.set(h.a*p/f,h.b*p/_,h.c*m/f,h.d*m/_,h.tx/f,h.ty/_),l.invert(),c?l.prepend(u.mapCoord):(d.uniforms.uMapCoord=u.mapCoord.toArray(!0),d.uniforms.uClampFrame=u.uClampFrame,d.uniforms.uClampOffset=u.uClampOffset),d.uniforms.uTransform=l.toArray(!0),d.uniforms.uColor=i.premultiplyTintToRgba(t.tint,t.worldAlpha,d.uniforms.uColor,s.alphaMode),d.uniforms.translationMatrix=t.transform.worldTransform.toArray(!0),d.uniforms.uSampler=a,r.shader.bind(d),r.geometry.bind(e),this.state.blendMode=i.correctBlendMode(t.blendMode,s.alphaMode),r.state.set(this.state),r.geometry.draw(this.renderer.gl.TRIANGLES,6,0)},e}(r.ObjectRenderer);return t.TilingSprite=s,t.TilingSpriteRenderer=d,t}({},PIXI,PIXI,PIXI.utils,PIXI,PIXI);Object.assign(this.PIXI,_pixi_sprite_tiling); | ||
this.PIXI=this.PIXI||{};var _pixi_sprite_tiling=function(t,r,e,o,i,n){"use strict";var a=function(t,r){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)r.hasOwnProperty(e)&&(t[e]=r[e])})(t,r)};function s(t,r){function e(){this.constructor=t}a(t,r),t.prototype=null===r?Object.create(r):(e.prototype=r.prototype,new e)}var u=new e.Point,h=function(t){function o(o,i,n){void 0===i&&(i=100),void 0===n&&(n=100);var a=t.call(this,o)||this;return a.tileTransform=new e.Transform,a._width=i,a._height=n,a.uvMatrix=o.uvMatrix||new r.TextureMatrix(o),a.pluginName="tilingSprite",a.uvRespectAnchor=!1,a}return s(o,t),Object.defineProperty(o.prototype,"clampMargin",{get:function(){return this.uvMatrix.clampMargin},set:function(t){this.uvMatrix.clampMargin=t,this.uvMatrix.update(!0)},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"tileScale",{get:function(){return this.tileTransform.scale},set:function(t){this.tileTransform.scale.copyFrom(t)},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"tilePosition",{get:function(){return this.tileTransform.position},set:function(t){this.tileTransform.position.copyFrom(t)},enumerable:!1,configurable:!0}),o.prototype._onTextureUpdate=function(){this.uvMatrix&&(this.uvMatrix.texture=this._texture),this._cachedTint=16777215},o.prototype._render=function(t){var r=this._texture;r&&r.valid&&(this.tileTransform.updateLocalTransform(),this.uvMatrix.update(),t.batch.setObjectRenderer(t.plugins[this.pluginName]),t.plugins[this.pluginName].render(this))},o.prototype._calculateBounds=function(){var t=this._width*-this._anchor._x,r=this._height*-this._anchor._y,e=this._width*(1-this._anchor._x),o=this._height*(1-this._anchor._y);this._bounds.addFrame(this.transform,t,r,e,o)},o.prototype.getLocalBounds=function(r){return 0===this.children.length?(this._bounds.minX=this._width*-this._anchor._x,this._bounds.minY=this._height*-this._anchor._y,this._bounds.maxX=this._width*(1-this._anchor._x),this._bounds.maxY=this._height*(1-this._anchor._y),r||(this._localBoundsRect||(this._localBoundsRect=new e.Rectangle),r=this._localBoundsRect),this._bounds.getRectangle(r)):t.prototype.getLocalBounds.call(this,r)},o.prototype.containsPoint=function(t){this.worldTransform.applyInverse(t,u);var r=this._width,e=this._height,o=-r*this.anchor._x;if(u.x>=o&&u.x<o+r){var i=-e*this.anchor._y;if(u.y>=i&&u.y<i+e)return!0}return!1},o.prototype.destroy=function(r){t.prototype.destroy.call(this,r),this.tileTransform=null,this.uvMatrix=null},o.from=function(t,e){return"number"==typeof e&&(i.deprecation("5.3.0","TilingSprite.from use options instead of width and height args"),e={width:e,height:arguments[2]}),new o(r.Texture.from(t,e),e.width,e.height)},Object.defineProperty(o.prototype,"width",{get:function(){return this._width},set:function(t){this._width=t},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"height",{get:function(){return this._height},set:function(t){this._height=t},enumerable:!1,configurable:!0}),o}(o.Sprite),c="attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n",l="varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = vTextureCoord - floor(vTextureCoord - uClampOffset);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n vec4 texSample = texture2D(uSampler, coord);\n gl_FragColor = texSample * uColor;\n}\n",d="varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n vec4 sample = texture2D(uSampler, vTextureCoord);\n gl_FragColor = sample * uColor;\n}\n",p=new e.Matrix,m=function(t){function e(e){var o=t.call(this,e)||this,i={globals:o.renderer.globalUniforms};return o.shader=r.Shader.from(c,l,i),o.simpleShader=r.Shader.from(c,d,i),o.quad=new r.QuadUv,o.state=r.State.for2d(),o}return s(e,t),e.prototype.render=function(t){var r=this.renderer,e=this.quad,o=e.vertices;o[0]=o[6]=t._width*-t.anchor.x,o[1]=o[3]=t._height*-t.anchor.y,o[2]=o[4]=t._width*(1-t.anchor.x),o[5]=o[7]=t._height*(1-t.anchor.y),t.uvRespectAnchor&&((o=e.uvs)[0]=o[6]=-t.anchor.x,o[1]=o[3]=-t.anchor.y,o[2]=o[4]=1-t.anchor.x,o[5]=o[7]=1-t.anchor.y),e.invalidate();var a=t._texture,s=a.baseTexture,u=t.tileTransform.localTransform,h=t.uvMatrix,c=s.isPowerOfTwo&&a.frame.width===s.width&&a.frame.height===s.height;c&&(s._glTextures[r.CONTEXT_UID]?c=s.wrapMode!==n.WRAP_MODES.CLAMP:s.wrapMode===n.WRAP_MODES.CLAMP&&(s.wrapMode=n.WRAP_MODES.REPEAT));var l=c?this.simpleShader:this.shader,d=a.width,m=a.height,f=t._width,_=t._height;p.set(u.a*d/f,u.b*d/_,u.c*m/f,u.d*m/_,u.tx/f,u.ty/_),p.invert(),c?p.prepend(h.mapCoord):(l.uniforms.uMapCoord=h.mapCoord.toArray(!0),l.uniforms.uClampFrame=h.uClampFrame,l.uniforms.uClampOffset=h.uClampOffset),l.uniforms.uTransform=p.toArray(!0),l.uniforms.uColor=i.premultiplyTintToRgba(t.tint,t.worldAlpha,l.uniforms.uColor,s.alphaMode),l.uniforms.translationMatrix=t.transform.worldTransform.toArray(!0),l.uniforms.uSampler=a,r.shader.bind(l),r.geometry.bind(e),this.state.blendMode=i.correctBlendMode(t.blendMode,s.alphaMode),r.state.set(this.state),r.geometry.draw(this.renderer.gl.TRIANGLES,6,0)},e}(r.ObjectRenderer);return t.TilingSprite=h,t.TilingSpriteRenderer=m,t}({},PIXI,PIXI,PIXI,PIXI.utils,PIXI);Object.assign(this.PIXI,_pixi_sprite_tiling); | ||
//# sourceMappingURL=sprite-tiling.min.js.map |
/*! | ||
* @pixi/sprite-tiling - v5.2.4 | ||
* Compiled Sun, 03 May 2020 22:38:52 UTC | ||
* @pixi/sprite-tiling - v5.3.0 | ||
* Compiled Thu, 18 Jun 2020 23:27:40 UTC | ||
* | ||
@@ -8,10 +8,38 @@ * @pixi/sprite-tiling is licensed under the MIT License. | ||
*/ | ||
import { Texture, TextureMatrix, ObjectRenderer, Shader, QuadUv, State } from '@pixi/core'; | ||
import { Point, Rectangle, Transform, Matrix } from '@pixi/math'; | ||
import { TextureCache, premultiplyTintToRgba, correctBlendMode } from '@pixi/utils'; | ||
import { TextureMatrix, Texture, Shader, QuadUv, State, ObjectRenderer } from '@pixi/core'; | ||
import { Point, Transform, Rectangle, Matrix } from '@pixi/math'; | ||
import { Sprite } from '@pixi/sprite'; | ||
import { deprecation, premultiplyTintToRgba, correctBlendMode } from '@pixi/utils'; | ||
import { WRAP_MODES } from '@pixi/constants'; | ||
/*! ***************************************************************************** | ||
Copyright (c) Microsoft Corporation. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use | ||
this file except in compliance with the License. You may obtain a copy of the | ||
License at http://www.apache.org/licenses/LICENSE-2.0 | ||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED | ||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, | ||
MERCHANTABLITY OR NON-INFRINGEMENT. | ||
See the Apache Version 2.0 License for specific language governing permissions | ||
and limitations under the License. | ||
***************************************************************************** */ | ||
/* global Reflect, Promise */ | ||
var extendStatics = function(d, b) { | ||
extendStatics = Object.setPrototypeOf || | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; | ||
return extendStatics(d, b); | ||
}; | ||
function __extends(d, b) { | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
} | ||
var tempPoint = new Point(); | ||
/** | ||
@@ -24,10 +52,13 @@ * A tiling sprite is a fast way of rendering a tiling image | ||
*/ | ||
var TilingSprite = /*@__PURE__*/(function (Sprite) { | ||
function TilingSprite(texture, width, height) | ||
{ | ||
if ( width === void 0 ) width = 100; | ||
if ( height === void 0 ) height = 100; | ||
Sprite.call(this, texture); | ||
var TilingSprite = /** @class */ (function (_super) { | ||
__extends(TilingSprite, _super); | ||
/** | ||
* @param {PIXI.Texture} texture - the texture of the tiling sprite | ||
* @param {number} [width=100] - the width of the tiling sprite | ||
* @param {number} [height=100] - the height of the tiling sprite | ||
*/ | ||
function TilingSprite(texture, width, height) { | ||
if (width === void 0) { width = 100; } | ||
if (height === void 0) { height = 100; } | ||
var _this = _super.call(this, texture) || this; | ||
/** | ||
@@ -38,6 +69,3 @@ * Tile transform | ||
*/ | ||
this.tileTransform = new Transform(); | ||
// /// private | ||
_this.tileTransform = new Transform(); | ||
/** | ||
@@ -49,4 +77,3 @@ * The with of the tiling sprite | ||
*/ | ||
this._width = width; | ||
_this._width = width; | ||
/** | ||
@@ -58,13 +85,4 @@ * The height of the tiling sprite | ||
*/ | ||
this._height = height; | ||
_this._height = height; | ||
/** | ||
* Canvas pattern | ||
* | ||
* @type {CanvasPattern} | ||
* @private | ||
*/ | ||
this._canvasPattern = null; | ||
/** | ||
* matrix that is applied to UV to get the coords in Texture normalized space to coords in BaseTexture space | ||
@@ -74,4 +92,3 @@ * | ||
*/ | ||
this.uvMatrix = texture.uvMatrix || new TextureMatrix(texture); | ||
_this.uvMatrix = texture.uvMatrix || new TextureMatrix(texture); | ||
/** | ||
@@ -84,4 +101,3 @@ * Plugin that is responsible for rendering this element. | ||
*/ | ||
this.pluginName = 'tilingSprite'; | ||
_this.pluginName = 'tilingSprite'; | ||
/** | ||
@@ -93,65 +109,58 @@ * Whether or not anchor affects uvs | ||
*/ | ||
this.uvRespectAnchor = false; | ||
_this.uvRespectAnchor = false; | ||
return _this; | ||
} | ||
if ( Sprite ) TilingSprite.__proto__ = Sprite; | ||
TilingSprite.prototype = Object.create( Sprite && Sprite.prototype ); | ||
TilingSprite.prototype.constructor = TilingSprite; | ||
var prototypeAccessors = { clampMargin: { configurable: true },tileScale: { configurable: true },tilePosition: { configurable: true },width: { configurable: true },height: { configurable: true } }; | ||
Object.defineProperty(TilingSprite.prototype, "clampMargin", { | ||
/** | ||
* Changes frame clamping in corresponding textureTransform, shortcut | ||
* Change to -0.5 to add a pixel to the edge, recommended for transparent trimmed textures in atlas | ||
* | ||
* @default 0.5 | ||
* @member {number} | ||
*/ | ||
get: function () { | ||
return this.uvMatrix.clampMargin; | ||
}, | ||
set: function (value) { | ||
this.uvMatrix.clampMargin = value; | ||
this.uvMatrix.update(true); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(TilingSprite.prototype, "tileScale", { | ||
/** | ||
* The scaling of the image that is being tiled | ||
* | ||
* @member {PIXI.ObservablePoint} | ||
*/ | ||
get: function () { | ||
return this.tileTransform.scale; | ||
}, | ||
set: function (value) { | ||
this.tileTransform.scale.copyFrom(value); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(TilingSprite.prototype, "tilePosition", { | ||
/** | ||
* The offset of the image that is being tiled | ||
* | ||
* @member {PIXI.ObservablePoint} | ||
*/ | ||
get: function () { | ||
return this.tileTransform.position; | ||
}, | ||
set: function (value) { | ||
this.tileTransform.position.copyFrom(value); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
/** | ||
* Changes frame clamping in corresponding textureTransform, shortcut | ||
* Change to -0.5 to add a pixel to the edge, recommended for transparent trimmed textures in atlas | ||
* | ||
* @default 0.5 | ||
* @member {number} | ||
* @protected | ||
*/ | ||
prototypeAccessors.clampMargin.get = function () | ||
{ | ||
return this.uvMatrix.clampMargin; | ||
}; | ||
prototypeAccessors.clampMargin.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this.uvMatrix.clampMargin = value; | ||
this.uvMatrix.update(true); | ||
}; | ||
/** | ||
* The scaling of the image that is being tiled | ||
* | ||
* @member {PIXI.ObservablePoint} | ||
*/ | ||
prototypeAccessors.tileScale.get = function () | ||
{ | ||
return this.tileTransform.scale; | ||
}; | ||
prototypeAccessors.tileScale.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this.tileTransform.scale.copyFrom(value); | ||
}; | ||
/** | ||
* The offset of the image that is being tiled | ||
* | ||
* @member {PIXI.ObservablePoint} | ||
*/ | ||
prototypeAccessors.tilePosition.get = function () | ||
{ | ||
return this.tileTransform.position; | ||
}; | ||
prototypeAccessors.tilePosition.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this.tileTransform.position.copyFrom(value); | ||
}; | ||
/** | ||
* @private | ||
*/ | ||
TilingSprite.prototype._onTextureUpdate = function _onTextureUpdate () | ||
{ | ||
if (this.uvMatrix) | ||
{ | ||
TilingSprite.prototype._onTextureUpdate = function () { | ||
if (this.uvMatrix) { | ||
this.uvMatrix.texture = this._texture; | ||
@@ -161,3 +170,2 @@ } | ||
}; | ||
/** | ||
@@ -169,19 +177,13 @@ * Renders the object using the WebGL renderer | ||
*/ | ||
TilingSprite.prototype._render = function _render (renderer) | ||
{ | ||
TilingSprite.prototype._render = function (renderer) { | ||
// tweak our texture temporarily.. | ||
var texture = this._texture; | ||
if (!texture || !texture.valid) | ||
{ | ||
if (!texture || !texture.valid) { | ||
return; | ||
} | ||
this.tileTransform.updateLocalTransform(); | ||
this.uvMatrix.update(); | ||
renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); | ||
renderer.plugins[this.pluginName].render(this); | ||
}; | ||
/** | ||
@@ -192,4 +194,3 @@ * Updates the bounds of the tiling sprite. | ||
*/ | ||
TilingSprite.prototype._calculateBounds = function _calculateBounds () | ||
{ | ||
TilingSprite.prototype._calculateBounds = function () { | ||
var minX = this._width * -this._anchor._x; | ||
@@ -199,6 +200,4 @@ var minY = this._height * -this._anchor._y; | ||
var maxY = this._height * (1 - this._anchor._y); | ||
this._bounds.addFrame(this.transform, minX, minY, maxX, maxY); | ||
}; | ||
/** | ||
@@ -210,7 +209,5 @@ * Gets the local bounds of the sprite object. | ||
*/ | ||
TilingSprite.prototype.getLocalBounds = function getLocalBounds (rect) | ||
{ | ||
TilingSprite.prototype.getLocalBounds = function (rect) { | ||
// we can do a fast local bounds if the sprite has no children! | ||
if (this.children.length === 0) | ||
{ | ||
if (this.children.length === 0) { | ||
this._bounds.minX = this._width * -this._anchor._x; | ||
@@ -220,46 +217,31 @@ this._bounds.minY = this._height * -this._anchor._y; | ||
this._bounds.maxY = this._height * (1 - this._anchor._y); | ||
if (!rect) | ||
{ | ||
if (!this._localBoundsRect) | ||
{ | ||
if (!rect) { | ||
if (!this._localBoundsRect) { | ||
this._localBoundsRect = new Rectangle(); | ||
} | ||
rect = this._localBoundsRect; | ||
} | ||
return this._bounds.getRectangle(rect); | ||
} | ||
return Sprite.prototype.getLocalBounds.call(this, rect); | ||
return _super.prototype.getLocalBounds.call(this, rect); | ||
}; | ||
/** | ||
* Checks if a point is inside this tiling sprite. | ||
* | ||
* @param {PIXI.Point} point - the point to check | ||
* @param {PIXI.IPointData} point - the point to check | ||
* @return {boolean} Whether or not the sprite contains the point. | ||
*/ | ||
TilingSprite.prototype.containsPoint = function containsPoint (point) | ||
{ | ||
TilingSprite.prototype.containsPoint = function (point) { | ||
this.worldTransform.applyInverse(point, tempPoint); | ||
var width = this._width; | ||
var height = this._height; | ||
var x1 = -width * this.anchor._x; | ||
if (tempPoint.x >= x1 && tempPoint.x < x1 + width) | ||
{ | ||
if (tempPoint.x >= x1 && tempPoint.x < x1 + width) { | ||
var y1 = -height * this.anchor._y; | ||
if (tempPoint.y >= y1 && tempPoint.y < y1 + height) | ||
{ | ||
if (tempPoint.y >= y1 && tempPoint.y < y1 + height) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
}; | ||
/** | ||
@@ -275,10 +257,7 @@ * Destroys this sprite and optionally its texture and children | ||
*/ | ||
TilingSprite.prototype.destroy = function destroy (options) | ||
{ | ||
Sprite.prototype.destroy.call(this, options); | ||
TilingSprite.prototype.destroy = function (options) { | ||
_super.prototype.destroy.call(this, options); | ||
this.tileTransform = null; | ||
this.uvMatrix = null; | ||
}; | ||
/** | ||
@@ -290,92 +269,46 @@ * Helper function that creates a new tiling sprite based on the source you provide. | ||
* @param {string|PIXI.Texture|HTMLCanvasElement|HTMLVideoElement} source - Source to create texture from | ||
* @param {number} width - the width of the tiling sprite | ||
* @param {number} height - the height of the tiling sprite | ||
* @param {Object} options - See {@link PIXI.BaseTexture}'s constructor for options. | ||
* @param {number} options.width - required width of the tiling sprite | ||
* @param {number} options.height - required height of the tiling sprite | ||
* @return {PIXI.TilingSprite} The newly created texture | ||
*/ | ||
TilingSprite.from = function from (source, width, height) | ||
{ | ||
return new TilingSprite(Texture.from(source), width, height); | ||
}; | ||
/** | ||
* Helper function that creates a tiling sprite that will use a texture from the TextureCache based on the frameId | ||
* The frame ids are created when a Texture packer file has been loaded | ||
* | ||
* @static | ||
* @param {string} frameId - The frame Id of the texture in the cache | ||
* @param {number} width - the width of the tiling sprite | ||
* @param {number} height - the height of the tiling sprite | ||
* @return {PIXI.TilingSprite} A new TilingSprite using a texture from the texture cache matching the frameId | ||
*/ | ||
TilingSprite.fromFrame = function fromFrame (frameId, width, height) | ||
{ | ||
var texture = TextureCache[frameId]; | ||
if (!texture) | ||
{ | ||
throw new Error(("The frameId \"" + frameId + "\" does not exist in the texture cache " + (this))); | ||
TilingSprite.from = function (source, options) { | ||
// Deprecated | ||
if (typeof options === 'number') { | ||
deprecation('5.3.0', 'TilingSprite.from use options instead of width and height args'); | ||
// eslint-disable-next-line prefer-rest-params | ||
options = { width: options, height: arguments[2] }; | ||
} | ||
return new TilingSprite(texture, width, height); | ||
return new TilingSprite(Texture.from(source, options), options.width, options.height); | ||
}; | ||
/** | ||
* Helper function that creates a sprite that will contain a texture based on an image url | ||
* If the image is not in the texture cache it will be loaded | ||
* | ||
* @static | ||
* @param {string} imageId - The image url of the texture | ||
* @param {number} width - the width of the tiling sprite | ||
* @param {number} height - the height of the tiling sprite | ||
* @param {Object} [options] - See {@link PIXI.BaseTexture}'s constructor for options. | ||
* @return {PIXI.TilingSprite} A new TilingSprite using a texture from the texture cache matching the image id | ||
*/ | ||
TilingSprite.fromImage = function fromImage (imageId, width, height, options) | ||
{ | ||
// Fallback support for crossorigin, scaleMode parameters | ||
if (options && typeof options !== 'object') | ||
{ | ||
options = { | ||
scaleMode: arguments[4], | ||
resourceOptions: { | ||
crossorigin: arguments[3], | ||
}, | ||
}; | ||
} | ||
return new TilingSprite(Texture.from(imageId, options), width, height); | ||
}; | ||
/** | ||
* The width of the sprite, setting this will actually modify the scale to achieve the value set | ||
* | ||
* @member {number} | ||
*/ | ||
prototypeAccessors.width.get = function () | ||
{ | ||
return this._width; | ||
}; | ||
prototypeAccessors.width.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this._width = value; | ||
}; | ||
/** | ||
* The height of the TilingSprite, setting this will actually modify the scale to achieve the value set | ||
* | ||
* @member {number} | ||
*/ | ||
prototypeAccessors.height.get = function () | ||
{ | ||
return this._height; | ||
}; | ||
prototypeAccessors.height.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this._height = value; | ||
}; | ||
Object.defineProperties( TilingSprite.prototype, prototypeAccessors ); | ||
Object.defineProperty(TilingSprite.prototype, "width", { | ||
/** | ||
* The width of the sprite, setting this will actually modify the scale to achieve the value set | ||
* | ||
* @member {number} | ||
*/ | ||
get: function () { | ||
return this._width; | ||
}, | ||
set: function (value) { | ||
this._width = value; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(TilingSprite.prototype, "height", { | ||
/** | ||
* The height of the TilingSprite, setting this will actually modify the scale to achieve the value set | ||
* | ||
* @member {number} | ||
*/ | ||
get: function () { | ||
return this._height; | ||
}, | ||
set: function (value) { | ||
this._height = value; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
return TilingSprite; | ||
@@ -391,3 +324,2 @@ }(Sprite)); | ||
var tempMat = new Matrix(); | ||
/** | ||
@@ -400,15 +332,15 @@ * WebGL renderer plugin for tiling sprites | ||
*/ | ||
var TilingSpriteRenderer = /*@__PURE__*/(function (ObjectRenderer) { | ||
function TilingSpriteRenderer(renderer) | ||
{ | ||
ObjectRenderer.call(this, renderer); | ||
var uniforms = { globals: this.renderer.globalUniforms }; | ||
this.shader = Shader.from(vertex, fragment, uniforms); | ||
this.simpleShader = Shader.from(vertex, fragmentSimple, uniforms); | ||
this.quad = new QuadUv(); | ||
var TilingSpriteRenderer = /** @class */ (function (_super) { | ||
__extends(TilingSpriteRenderer, _super); | ||
/** | ||
* constructor for renderer | ||
* | ||
* @param {PIXI.Renderer} renderer - The renderer this tiling awesomeness works for. | ||
*/ | ||
function TilingSpriteRenderer(renderer) { | ||
var _this = _super.call(this, renderer) || this; | ||
var uniforms = { globals: _this.renderer.globalUniforms }; | ||
_this.shader = Shader.from(vertex, fragment, uniforms); | ||
_this.simpleShader = Shader.from(vertex, fragmentSimple, uniforms); | ||
_this.quad = new QuadUv(); | ||
/** | ||
@@ -420,39 +352,25 @@ * The WebGL state in which this renderer will work. | ||
*/ | ||
this.state = State.for2d(); | ||
_this.state = State.for2d(); | ||
return _this; | ||
} | ||
if ( ObjectRenderer ) TilingSpriteRenderer.__proto__ = ObjectRenderer; | ||
TilingSpriteRenderer.prototype = Object.create( ObjectRenderer && ObjectRenderer.prototype ); | ||
TilingSpriteRenderer.prototype.constructor = TilingSpriteRenderer; | ||
/** | ||
* | ||
* @param {PIXI.TilingSprite} ts tilingSprite to be rendered | ||
* @param {PIXI.TilingSprite} ts - tilingSprite to be rendered | ||
*/ | ||
TilingSpriteRenderer.prototype.render = function render (ts) | ||
{ | ||
TilingSpriteRenderer.prototype.render = function (ts) { | ||
var renderer = this.renderer; | ||
var quad = this.quad; | ||
var vertices = quad.vertices; | ||
vertices[0] = vertices[6] = (ts._width) * -ts.anchor.x; | ||
vertices[1] = vertices[3] = ts._height * -ts.anchor.y; | ||
vertices[2] = vertices[4] = (ts._width) * (1.0 - ts.anchor.x); | ||
vertices[5] = vertices[7] = ts._height * (1.0 - ts.anchor.y); | ||
if (ts.uvRespectAnchor) | ||
{ | ||
if (ts.uvRespectAnchor) { | ||
vertices = quad.uvs; | ||
vertices[0] = vertices[6] = -ts.anchor.x; | ||
vertices[1] = vertices[3] = -ts.anchor.y; | ||
vertices[2] = vertices[4] = 1.0 - ts.anchor.x; | ||
vertices[5] = vertices[7] = 1.0 - ts.anchor.y; | ||
} | ||
quad.invalidate(); | ||
var tex = ts._texture; | ||
@@ -464,21 +382,14 @@ var baseTex = tex.baseTexture; | ||
&& tex.frame.width === baseTex.width && tex.frame.height === baseTex.height; | ||
// auto, force repeat wrapMode for big tiling textures | ||
if (isSimple) | ||
{ | ||
if (!baseTex._glTextures[renderer.CONTEXT_UID]) | ||
{ | ||
if (baseTex.wrapMode === WRAP_MODES.CLAMP) | ||
{ | ||
if (isSimple) { | ||
if (!baseTex._glTextures[renderer.CONTEXT_UID]) { | ||
if (baseTex.wrapMode === WRAP_MODES.CLAMP) { | ||
baseTex.wrapMode = WRAP_MODES.REPEAT; | ||
} | ||
} | ||
else | ||
{ | ||
else { | ||
isSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP; | ||
} | ||
} | ||
var shader = isSimple ? this.simpleShader : this.shader; | ||
var w = tex.width; | ||
@@ -488,10 +399,3 @@ var h = tex.height; | ||
var H = ts._height; | ||
tempMat.set(lt.a * w / W, | ||
lt.b * w / H, | ||
lt.c * h / W, | ||
lt.d * h / H, | ||
lt.tx / W, | ||
lt.ty / H); | ||
tempMat.set(lt.a * w / W, lt.b * w / H, lt.c * h / W, lt.d * h / H, lt.tx / W, lt.ty / H); | ||
// that part is the same as above: | ||
@@ -502,10 +406,7 @@ // tempMat.identity(); | ||
// tempMat.scale(1.0 / ts._width, 1.0 / ts._height); | ||
tempMat.invert(); | ||
if (isSimple) | ||
{ | ||
if (isSimple) { | ||
tempMat.prepend(uv.mapCoord); | ||
} | ||
else | ||
{ | ||
else { | ||
shader.uniforms.uMapCoord = uv.mapCoord.toArray(true); | ||
@@ -515,12 +416,8 @@ shader.uniforms.uClampFrame = uv.uClampFrame; | ||
} | ||
shader.uniforms.uTransform = tempMat.toArray(true); | ||
shader.uniforms.uColor = premultiplyTintToRgba(ts.tint, ts.worldAlpha, | ||
shader.uniforms.uColor, baseTex.alphaMode); | ||
shader.uniforms.uColor = premultiplyTintToRgba(ts.tint, ts.worldAlpha, shader.uniforms.uColor, baseTex.alphaMode); | ||
shader.uniforms.translationMatrix = ts.transform.worldTransform.toArray(true); | ||
shader.uniforms.uSampler = tex; | ||
renderer.shader.bind(shader); | ||
renderer.geometry.bind(quad);// , renderer.shader.getGLShader()); | ||
renderer.geometry.bind(quad); | ||
this.state.blendMode = correctBlendMode(ts.blendMode, baseTex.alphaMode); | ||
@@ -530,3 +427,2 @@ renderer.state.set(this.state); | ||
}; | ||
return TilingSpriteRenderer; | ||
@@ -533,0 +429,0 @@ }(ObjectRenderer)); |
/*! | ||
* @pixi/sprite-tiling - v5.2.4 | ||
* Compiled Sun, 03 May 2020 22:38:52 UTC | ||
* @pixi/sprite-tiling - v5.3.0 | ||
* Compiled Thu, 18 Jun 2020 23:27:40 UTC | ||
* | ||
@@ -14,8 +14,36 @@ * @pixi/sprite-tiling is licensed under the MIT License. | ||
var math = require('@pixi/math'); | ||
var sprite = require('@pixi/sprite'); | ||
var utils = require('@pixi/utils'); | ||
var sprite = require('@pixi/sprite'); | ||
var constants = require('@pixi/constants'); | ||
/*! ***************************************************************************** | ||
Copyright (c) Microsoft Corporation. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use | ||
this file except in compliance with the License. You may obtain a copy of the | ||
License at http://www.apache.org/licenses/LICENSE-2.0 | ||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED | ||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, | ||
MERCHANTABLITY OR NON-INFRINGEMENT. | ||
See the Apache Version 2.0 License for specific language governing permissions | ||
and limitations under the License. | ||
***************************************************************************** */ | ||
/* global Reflect, Promise */ | ||
var extendStatics = function(d, b) { | ||
extendStatics = Object.setPrototypeOf || | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) { if (b.hasOwnProperty(p)) { d[p] = b[p]; } } }; | ||
return extendStatics(d, b); | ||
}; | ||
function __extends(d, b) { | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
} | ||
var tempPoint = new math.Point(); | ||
/** | ||
@@ -28,10 +56,13 @@ * A tiling sprite is a fast way of rendering a tiling image | ||
*/ | ||
var TilingSprite = /*@__PURE__*/(function (Sprite) { | ||
function TilingSprite(texture, width, height) | ||
{ | ||
if ( width === void 0 ) width = 100; | ||
if ( height === void 0 ) height = 100; | ||
Sprite.call(this, texture); | ||
var TilingSprite = /** @class */ (function (_super) { | ||
__extends(TilingSprite, _super); | ||
/** | ||
* @param {PIXI.Texture} texture - the texture of the tiling sprite | ||
* @param {number} [width=100] - the width of the tiling sprite | ||
* @param {number} [height=100] - the height of the tiling sprite | ||
*/ | ||
function TilingSprite(texture, width, height) { | ||
if (width === void 0) { width = 100; } | ||
if (height === void 0) { height = 100; } | ||
var _this = _super.call(this, texture) || this; | ||
/** | ||
@@ -42,6 +73,3 @@ * Tile transform | ||
*/ | ||
this.tileTransform = new math.Transform(); | ||
// /// private | ||
_this.tileTransform = new math.Transform(); | ||
/** | ||
@@ -53,4 +81,3 @@ * The with of the tiling sprite | ||
*/ | ||
this._width = width; | ||
_this._width = width; | ||
/** | ||
@@ -62,13 +89,4 @@ * The height of the tiling sprite | ||
*/ | ||
this._height = height; | ||
_this._height = height; | ||
/** | ||
* Canvas pattern | ||
* | ||
* @type {CanvasPattern} | ||
* @private | ||
*/ | ||
this._canvasPattern = null; | ||
/** | ||
* matrix that is applied to UV to get the coords in Texture normalized space to coords in BaseTexture space | ||
@@ -78,4 +96,3 @@ * | ||
*/ | ||
this.uvMatrix = texture.uvMatrix || new core.TextureMatrix(texture); | ||
_this.uvMatrix = texture.uvMatrix || new core.TextureMatrix(texture); | ||
/** | ||
@@ -88,4 +105,3 @@ * Plugin that is responsible for rendering this element. | ||
*/ | ||
this.pluginName = 'tilingSprite'; | ||
_this.pluginName = 'tilingSprite'; | ||
/** | ||
@@ -97,65 +113,58 @@ * Whether or not anchor affects uvs | ||
*/ | ||
this.uvRespectAnchor = false; | ||
_this.uvRespectAnchor = false; | ||
return _this; | ||
} | ||
if ( Sprite ) TilingSprite.__proto__ = Sprite; | ||
TilingSprite.prototype = Object.create( Sprite && Sprite.prototype ); | ||
TilingSprite.prototype.constructor = TilingSprite; | ||
var prototypeAccessors = { clampMargin: { configurable: true },tileScale: { configurable: true },tilePosition: { configurable: true },width: { configurable: true },height: { configurable: true } }; | ||
Object.defineProperty(TilingSprite.prototype, "clampMargin", { | ||
/** | ||
* Changes frame clamping in corresponding textureTransform, shortcut | ||
* Change to -0.5 to add a pixel to the edge, recommended for transparent trimmed textures in atlas | ||
* | ||
* @default 0.5 | ||
* @member {number} | ||
*/ | ||
get: function () { | ||
return this.uvMatrix.clampMargin; | ||
}, | ||
set: function (value) { | ||
this.uvMatrix.clampMargin = value; | ||
this.uvMatrix.update(true); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(TilingSprite.prototype, "tileScale", { | ||
/** | ||
* The scaling of the image that is being tiled | ||
* | ||
* @member {PIXI.ObservablePoint} | ||
*/ | ||
get: function () { | ||
return this.tileTransform.scale; | ||
}, | ||
set: function (value) { | ||
this.tileTransform.scale.copyFrom(value); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(TilingSprite.prototype, "tilePosition", { | ||
/** | ||
* The offset of the image that is being tiled | ||
* | ||
* @member {PIXI.ObservablePoint} | ||
*/ | ||
get: function () { | ||
return this.tileTransform.position; | ||
}, | ||
set: function (value) { | ||
this.tileTransform.position.copyFrom(value); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
/** | ||
* Changes frame clamping in corresponding textureTransform, shortcut | ||
* Change to -0.5 to add a pixel to the edge, recommended for transparent trimmed textures in atlas | ||
* | ||
* @default 0.5 | ||
* @member {number} | ||
* @protected | ||
*/ | ||
prototypeAccessors.clampMargin.get = function () | ||
{ | ||
return this.uvMatrix.clampMargin; | ||
}; | ||
prototypeAccessors.clampMargin.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this.uvMatrix.clampMargin = value; | ||
this.uvMatrix.update(true); | ||
}; | ||
/** | ||
* The scaling of the image that is being tiled | ||
* | ||
* @member {PIXI.ObservablePoint} | ||
*/ | ||
prototypeAccessors.tileScale.get = function () | ||
{ | ||
return this.tileTransform.scale; | ||
}; | ||
prototypeAccessors.tileScale.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this.tileTransform.scale.copyFrom(value); | ||
}; | ||
/** | ||
* The offset of the image that is being tiled | ||
* | ||
* @member {PIXI.ObservablePoint} | ||
*/ | ||
prototypeAccessors.tilePosition.get = function () | ||
{ | ||
return this.tileTransform.position; | ||
}; | ||
prototypeAccessors.tilePosition.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this.tileTransform.position.copyFrom(value); | ||
}; | ||
/** | ||
* @private | ||
*/ | ||
TilingSprite.prototype._onTextureUpdate = function _onTextureUpdate () | ||
{ | ||
if (this.uvMatrix) | ||
{ | ||
TilingSprite.prototype._onTextureUpdate = function () { | ||
if (this.uvMatrix) { | ||
this.uvMatrix.texture = this._texture; | ||
@@ -165,3 +174,2 @@ } | ||
}; | ||
/** | ||
@@ -173,19 +181,13 @@ * Renders the object using the WebGL renderer | ||
*/ | ||
TilingSprite.prototype._render = function _render (renderer) | ||
{ | ||
TilingSprite.prototype._render = function (renderer) { | ||
// tweak our texture temporarily.. | ||
var texture = this._texture; | ||
if (!texture || !texture.valid) | ||
{ | ||
if (!texture || !texture.valid) { | ||
return; | ||
} | ||
this.tileTransform.updateLocalTransform(); | ||
this.uvMatrix.update(); | ||
renderer.batch.setObjectRenderer(renderer.plugins[this.pluginName]); | ||
renderer.plugins[this.pluginName].render(this); | ||
}; | ||
/** | ||
@@ -196,4 +198,3 @@ * Updates the bounds of the tiling sprite. | ||
*/ | ||
TilingSprite.prototype._calculateBounds = function _calculateBounds () | ||
{ | ||
TilingSprite.prototype._calculateBounds = function () { | ||
var minX = this._width * -this._anchor._x; | ||
@@ -203,6 +204,4 @@ var minY = this._height * -this._anchor._y; | ||
var maxY = this._height * (1 - this._anchor._y); | ||
this._bounds.addFrame(this.transform, minX, minY, maxX, maxY); | ||
}; | ||
/** | ||
@@ -214,7 +213,5 @@ * Gets the local bounds of the sprite object. | ||
*/ | ||
TilingSprite.prototype.getLocalBounds = function getLocalBounds (rect) | ||
{ | ||
TilingSprite.prototype.getLocalBounds = function (rect) { | ||
// we can do a fast local bounds if the sprite has no children! | ||
if (this.children.length === 0) | ||
{ | ||
if (this.children.length === 0) { | ||
this._bounds.minX = this._width * -this._anchor._x; | ||
@@ -224,46 +221,31 @@ this._bounds.minY = this._height * -this._anchor._y; | ||
this._bounds.maxY = this._height * (1 - this._anchor._y); | ||
if (!rect) | ||
{ | ||
if (!this._localBoundsRect) | ||
{ | ||
if (!rect) { | ||
if (!this._localBoundsRect) { | ||
this._localBoundsRect = new math.Rectangle(); | ||
} | ||
rect = this._localBoundsRect; | ||
} | ||
return this._bounds.getRectangle(rect); | ||
} | ||
return Sprite.prototype.getLocalBounds.call(this, rect); | ||
return _super.prototype.getLocalBounds.call(this, rect); | ||
}; | ||
/** | ||
* Checks if a point is inside this tiling sprite. | ||
* | ||
* @param {PIXI.Point} point - the point to check | ||
* @param {PIXI.IPointData} point - the point to check | ||
* @return {boolean} Whether or not the sprite contains the point. | ||
*/ | ||
TilingSprite.prototype.containsPoint = function containsPoint (point) | ||
{ | ||
TilingSprite.prototype.containsPoint = function (point) { | ||
this.worldTransform.applyInverse(point, tempPoint); | ||
var width = this._width; | ||
var height = this._height; | ||
var x1 = -width * this.anchor._x; | ||
if (tempPoint.x >= x1 && tempPoint.x < x1 + width) | ||
{ | ||
if (tempPoint.x >= x1 && tempPoint.x < x1 + width) { | ||
var y1 = -height * this.anchor._y; | ||
if (tempPoint.y >= y1 && tempPoint.y < y1 + height) | ||
{ | ||
if (tempPoint.y >= y1 && tempPoint.y < y1 + height) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
}; | ||
/** | ||
@@ -279,10 +261,7 @@ * Destroys this sprite and optionally its texture and children | ||
*/ | ||
TilingSprite.prototype.destroy = function destroy (options) | ||
{ | ||
Sprite.prototype.destroy.call(this, options); | ||
TilingSprite.prototype.destroy = function (options) { | ||
_super.prototype.destroy.call(this, options); | ||
this.tileTransform = null; | ||
this.uvMatrix = null; | ||
}; | ||
/** | ||
@@ -294,92 +273,46 @@ * Helper function that creates a new tiling sprite based on the source you provide. | ||
* @param {string|PIXI.Texture|HTMLCanvasElement|HTMLVideoElement} source - Source to create texture from | ||
* @param {number} width - the width of the tiling sprite | ||
* @param {number} height - the height of the tiling sprite | ||
* @param {Object} options - See {@link PIXI.BaseTexture}'s constructor for options. | ||
* @param {number} options.width - required width of the tiling sprite | ||
* @param {number} options.height - required height of the tiling sprite | ||
* @return {PIXI.TilingSprite} The newly created texture | ||
*/ | ||
TilingSprite.from = function from (source, width, height) | ||
{ | ||
return new TilingSprite(core.Texture.from(source), width, height); | ||
}; | ||
/** | ||
* Helper function that creates a tiling sprite that will use a texture from the TextureCache based on the frameId | ||
* The frame ids are created when a Texture packer file has been loaded | ||
* | ||
* @static | ||
* @param {string} frameId - The frame Id of the texture in the cache | ||
* @param {number} width - the width of the tiling sprite | ||
* @param {number} height - the height of the tiling sprite | ||
* @return {PIXI.TilingSprite} A new TilingSprite using a texture from the texture cache matching the frameId | ||
*/ | ||
TilingSprite.fromFrame = function fromFrame (frameId, width, height) | ||
{ | ||
var texture = utils.TextureCache[frameId]; | ||
if (!texture) | ||
{ | ||
throw new Error(("The frameId \"" + frameId + "\" does not exist in the texture cache " + (this))); | ||
TilingSprite.from = function (source, options) { | ||
// Deprecated | ||
if (typeof options === 'number') { | ||
utils.deprecation('5.3.0', 'TilingSprite.from use options instead of width and height args'); | ||
// eslint-disable-next-line prefer-rest-params | ||
options = { width: options, height: arguments[2] }; | ||
} | ||
return new TilingSprite(texture, width, height); | ||
return new TilingSprite(core.Texture.from(source, options), options.width, options.height); | ||
}; | ||
/** | ||
* Helper function that creates a sprite that will contain a texture based on an image url | ||
* If the image is not in the texture cache it will be loaded | ||
* | ||
* @static | ||
* @param {string} imageId - The image url of the texture | ||
* @param {number} width - the width of the tiling sprite | ||
* @param {number} height - the height of the tiling sprite | ||
* @param {Object} [options] - See {@link PIXI.BaseTexture}'s constructor for options. | ||
* @return {PIXI.TilingSprite} A new TilingSprite using a texture from the texture cache matching the image id | ||
*/ | ||
TilingSprite.fromImage = function fromImage (imageId, width, height, options) | ||
{ | ||
// Fallback support for crossorigin, scaleMode parameters | ||
if (options && typeof options !== 'object') | ||
{ | ||
options = { | ||
scaleMode: arguments[4], | ||
resourceOptions: { | ||
crossorigin: arguments[3], | ||
}, | ||
}; | ||
} | ||
return new TilingSprite(core.Texture.from(imageId, options), width, height); | ||
}; | ||
/** | ||
* The width of the sprite, setting this will actually modify the scale to achieve the value set | ||
* | ||
* @member {number} | ||
*/ | ||
prototypeAccessors.width.get = function () | ||
{ | ||
return this._width; | ||
}; | ||
prototypeAccessors.width.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this._width = value; | ||
}; | ||
/** | ||
* The height of the TilingSprite, setting this will actually modify the scale to achieve the value set | ||
* | ||
* @member {number} | ||
*/ | ||
prototypeAccessors.height.get = function () | ||
{ | ||
return this._height; | ||
}; | ||
prototypeAccessors.height.set = function (value) // eslint-disable-line require-jsdoc | ||
{ | ||
this._height = value; | ||
}; | ||
Object.defineProperties( TilingSprite.prototype, prototypeAccessors ); | ||
Object.defineProperty(TilingSprite.prototype, "width", { | ||
/** | ||
* The width of the sprite, setting this will actually modify the scale to achieve the value set | ||
* | ||
* @member {number} | ||
*/ | ||
get: function () { | ||
return this._width; | ||
}, | ||
set: function (value) { | ||
this._width = value; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(TilingSprite.prototype, "height", { | ||
/** | ||
* The height of the TilingSprite, setting this will actually modify the scale to achieve the value set | ||
* | ||
* @member {number} | ||
*/ | ||
get: function () { | ||
return this._height; | ||
}, | ||
set: function (value) { | ||
this._height = value; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
return TilingSprite; | ||
@@ -395,3 +328,2 @@ }(sprite.Sprite)); | ||
var tempMat = new math.Matrix(); | ||
/** | ||
@@ -404,15 +336,15 @@ * WebGL renderer plugin for tiling sprites | ||
*/ | ||
var TilingSpriteRenderer = /*@__PURE__*/(function (ObjectRenderer) { | ||
function TilingSpriteRenderer(renderer) | ||
{ | ||
ObjectRenderer.call(this, renderer); | ||
var uniforms = { globals: this.renderer.globalUniforms }; | ||
this.shader = core.Shader.from(vertex, fragment, uniforms); | ||
this.simpleShader = core.Shader.from(vertex, fragmentSimple, uniforms); | ||
this.quad = new core.QuadUv(); | ||
var TilingSpriteRenderer = /** @class */ (function (_super) { | ||
__extends(TilingSpriteRenderer, _super); | ||
/** | ||
* constructor for renderer | ||
* | ||
* @param {PIXI.Renderer} renderer - The renderer this tiling awesomeness works for. | ||
*/ | ||
function TilingSpriteRenderer(renderer) { | ||
var _this = _super.call(this, renderer) || this; | ||
var uniforms = { globals: _this.renderer.globalUniforms }; | ||
_this.shader = core.Shader.from(vertex, fragment, uniforms); | ||
_this.simpleShader = core.Shader.from(vertex, fragmentSimple, uniforms); | ||
_this.quad = new core.QuadUv(); | ||
/** | ||
@@ -424,39 +356,25 @@ * The WebGL state in which this renderer will work. | ||
*/ | ||
this.state = core.State.for2d(); | ||
_this.state = core.State.for2d(); | ||
return _this; | ||
} | ||
if ( ObjectRenderer ) TilingSpriteRenderer.__proto__ = ObjectRenderer; | ||
TilingSpriteRenderer.prototype = Object.create( ObjectRenderer && ObjectRenderer.prototype ); | ||
TilingSpriteRenderer.prototype.constructor = TilingSpriteRenderer; | ||
/** | ||
* | ||
* @param {PIXI.TilingSprite} ts tilingSprite to be rendered | ||
* @param {PIXI.TilingSprite} ts - tilingSprite to be rendered | ||
*/ | ||
TilingSpriteRenderer.prototype.render = function render (ts) | ||
{ | ||
TilingSpriteRenderer.prototype.render = function (ts) { | ||
var renderer = this.renderer; | ||
var quad = this.quad; | ||
var vertices = quad.vertices; | ||
vertices[0] = vertices[6] = (ts._width) * -ts.anchor.x; | ||
vertices[1] = vertices[3] = ts._height * -ts.anchor.y; | ||
vertices[2] = vertices[4] = (ts._width) * (1.0 - ts.anchor.x); | ||
vertices[5] = vertices[7] = ts._height * (1.0 - ts.anchor.y); | ||
if (ts.uvRespectAnchor) | ||
{ | ||
if (ts.uvRespectAnchor) { | ||
vertices = quad.uvs; | ||
vertices[0] = vertices[6] = -ts.anchor.x; | ||
vertices[1] = vertices[3] = -ts.anchor.y; | ||
vertices[2] = vertices[4] = 1.0 - ts.anchor.x; | ||
vertices[5] = vertices[7] = 1.0 - ts.anchor.y; | ||
} | ||
quad.invalidate(); | ||
var tex = ts._texture; | ||
@@ -468,21 +386,14 @@ var baseTex = tex.baseTexture; | ||
&& tex.frame.width === baseTex.width && tex.frame.height === baseTex.height; | ||
// auto, force repeat wrapMode for big tiling textures | ||
if (isSimple) | ||
{ | ||
if (!baseTex._glTextures[renderer.CONTEXT_UID]) | ||
{ | ||
if (baseTex.wrapMode === constants.WRAP_MODES.CLAMP) | ||
{ | ||
if (isSimple) { | ||
if (!baseTex._glTextures[renderer.CONTEXT_UID]) { | ||
if (baseTex.wrapMode === constants.WRAP_MODES.CLAMP) { | ||
baseTex.wrapMode = constants.WRAP_MODES.REPEAT; | ||
} | ||
} | ||
else | ||
{ | ||
else { | ||
isSimple = baseTex.wrapMode !== constants.WRAP_MODES.CLAMP; | ||
} | ||
} | ||
var shader = isSimple ? this.simpleShader : this.shader; | ||
var w = tex.width; | ||
@@ -492,10 +403,3 @@ var h = tex.height; | ||
var H = ts._height; | ||
tempMat.set(lt.a * w / W, | ||
lt.b * w / H, | ||
lt.c * h / W, | ||
lt.d * h / H, | ||
lt.tx / W, | ||
lt.ty / H); | ||
tempMat.set(lt.a * w / W, lt.b * w / H, lt.c * h / W, lt.d * h / H, lt.tx / W, lt.ty / H); | ||
// that part is the same as above: | ||
@@ -506,10 +410,7 @@ // tempMat.identity(); | ||
// tempMat.scale(1.0 / ts._width, 1.0 / ts._height); | ||
tempMat.invert(); | ||
if (isSimple) | ||
{ | ||
if (isSimple) { | ||
tempMat.prepend(uv.mapCoord); | ||
} | ||
else | ||
{ | ||
else { | ||
shader.uniforms.uMapCoord = uv.mapCoord.toArray(true); | ||
@@ -519,12 +420,8 @@ shader.uniforms.uClampFrame = uv.uClampFrame; | ||
} | ||
shader.uniforms.uTransform = tempMat.toArray(true); | ||
shader.uniforms.uColor = utils.premultiplyTintToRgba(ts.tint, ts.worldAlpha, | ||
shader.uniforms.uColor, baseTex.alphaMode); | ||
shader.uniforms.uColor = utils.premultiplyTintToRgba(ts.tint, ts.worldAlpha, shader.uniforms.uColor, baseTex.alphaMode); | ||
shader.uniforms.translationMatrix = ts.transform.worldTransform.toArray(true); | ||
shader.uniforms.uSampler = tex; | ||
renderer.shader.bind(shader); | ||
renderer.geometry.bind(quad);// , renderer.shader.getGLShader()); | ||
renderer.geometry.bind(quad); | ||
this.state.blendMode = utils.correctBlendMode(ts.blendMode, baseTex.alphaMode); | ||
@@ -534,3 +431,2 @@ renderer.state.set(this.state); | ||
}; | ||
return TilingSpriteRenderer; | ||
@@ -537,0 +433,0 @@ }(core.ObjectRenderer)); |
{ | ||
"name": "@pixi/sprite-tiling", | ||
"version": "5.2.4", | ||
"version": "5.3.0", | ||
"main": "lib/sprite-tiling.js", | ||
@@ -27,10 +27,10 @@ "module": "lib/sprite-tiling.es.js", | ||
"dependencies": { | ||
"@pixi/constants": "5.2.4", | ||
"@pixi/core": "5.2.4", | ||
"@pixi/display": "5.2.4", | ||
"@pixi/math": "5.2.4", | ||
"@pixi/sprite": "5.2.4", | ||
"@pixi/utils": "5.2.4" | ||
"@pixi/constants": "5.3.0", | ||
"@pixi/core": "5.3.0", | ||
"@pixi/display": "5.3.0", | ||
"@pixi/math": "5.3.0", | ||
"@pixi/sprite": "5.3.0", | ||
"@pixi/utils": "5.3.0" | ||
}, | ||
"gitHead": "71c6b3b2061af4a4f3a95a265d46e933b8befc2c" | ||
"gitHead": "a9b7b32a9c0aeb3d9c42ef04b2c2a39be1cd0880" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
205908
1375
1
+ Added@pixi/constants@5.3.0(transitive)
+ Added@pixi/core@5.3.0(transitive)
+ Added@pixi/display@5.3.0(transitive)
+ Added@pixi/math@5.3.0(transitive)
+ Added@pixi/runner@5.3.0(transitive)
+ Added@pixi/settings@5.3.0(transitive)
+ Added@pixi/sprite@5.3.0(transitive)
+ Added@pixi/ticker@5.3.0(transitive)
+ Added@pixi/utils@5.3.0(transitive)
- Removed@pixi/constants@5.2.4(transitive)
- Removed@pixi/core@5.2.4(transitive)
- Removed@pixi/display@5.2.4(transitive)
- Removed@pixi/math@5.2.4(transitive)
- Removed@pixi/runner@5.2.4(transitive)
- Removed@pixi/settings@5.2.4(transitive)
- Removed@pixi/sprite@5.2.4(transitive)
- Removed@pixi/ticker@5.2.4(transitive)
- Removed@pixi/utils@5.2.4(transitive)
Updated@pixi/constants@5.3.0
Updated@pixi/core@5.3.0
Updated@pixi/display@5.3.0
Updated@pixi/math@5.3.0
Updated@pixi/sprite@5.3.0
Updated@pixi/utils@5.3.0