pixi_projection 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2c0cd5c506175c361ed5f172206946badfefea22c53843ade35f7c5d2c32a11a
4
+ data.tar.gz: 7351a37fd7b9b0d2895aba5819bef630c31e144069831a67a990ea1f93f9b5bc
5
+ SHA512:
6
+ metadata.gz: 58664c331237b0c496647868fdfa1fe39505ba821d7b3147589dedc5f2df8463a7e65ef07818fdc4392e0f3d269683708fd4b03cea806a2f826666a2b0f7b269
7
+ data.tar.gz: 201820611cbaaa3a907602ba81420aaa6aa3fa6a398e6ec08ed5973698ae77b2c031235443774b549975a34537683134bb53874f27824399cf6117d125b5786f
Binary file
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
@@ -0,0 +1,7 @@
1
+ ---
2
+ sudo: false
3
+ language: ruby
4
+ cache: bundler
5
+ rvm:
6
+ - 2.5.3
7
+ before_install: gem install bundler -v 1.17.2
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in pixi_projection.gemspec
6
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2019 Chris Palmweaver
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,39 @@
1
+ # PixiProjection
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/pixi_projection`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'pixi_projection'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install pixi_projection
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/pixi_projection.
36
+
37
+ ## License
38
+
39
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "pixi_projection"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,8 @@
1
+ require "pixi_projection/version"
2
+
3
+ module PixiProjection
4
+ class Error < StandardError; end
5
+ class Engine < ::Rails::Engine;
6
+
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ module PixiProjection
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,30 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "pixi_projection/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "pixi_projection"
8
+ spec.version = PixiProjection::VERSION
9
+ spec.authors = ["Chris Scalf"]
10
+ spec.email = ["shrewdpixeldesign@gmail.com"]
11
+
12
+ spec.summary = %q{A gem for importing the pixi_projection.js canvas library into Rails projects.}
13
+ spec.description = %q{Technically requires spine2d, and will throw a TypeError error without it.}
14
+ spec.homepage = "https://github.com/Palmweaver/pixi_projection"
15
+ spec.license = "MIT"
16
+
17
+
18
+ # Specify which files should be added to the gem when it is released.
19
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
20
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
21
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
+ end
23
+ spec.bindir = "exe"
24
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
+ spec.require_paths = ["lib"]
26
+
27
+ spec.add_development_dependency "bundler", "~> 1.17"
28
+ spec.add_development_dependency "rake", "~> 10.0"
29
+ spec.add_development_dependency "rspec", "~> 3.0"
30
+ end
Binary file
Binary file
File without changes
@@ -0,0 +1,3987 @@
1
+ var pixi_projection;
2
+ (function (pixi_projection) {
3
+ var utils;
4
+ (function (utils) {
5
+ function createIndicesForQuads(size) {
6
+ var totalIndices = size * 6;
7
+ var indices = new Uint16Array(totalIndices);
8
+ for (var i = 0, j = 0; i < totalIndices; i += 6, j += 4) {
9
+ indices[i + 0] = j + 0;
10
+ indices[i + 1] = j + 1;
11
+ indices[i + 2] = j + 2;
12
+ indices[i + 3] = j + 0;
13
+ indices[i + 4] = j + 2;
14
+ indices[i + 5] = j + 3;
15
+ }
16
+ return indices;
17
+ }
18
+ utils.createIndicesForQuads = createIndicesForQuads;
19
+ function isPow2(v) {
20
+ return !(v & (v - 1)) && (!!v);
21
+ }
22
+ utils.isPow2 = isPow2;
23
+ function nextPow2(v) {
24
+ v += +(v === 0);
25
+ --v;
26
+ v |= v >>> 1;
27
+ v |= v >>> 2;
28
+ v |= v >>> 4;
29
+ v |= v >>> 8;
30
+ v |= v >>> 16;
31
+ return v + 1;
32
+ }
33
+ utils.nextPow2 = nextPow2;
34
+ function log2(v) {
35
+ var r, shift;
36
+ r = +(v > 0xFFFF) << 4;
37
+ v >>>= r;
38
+ shift = +(v > 0xFF) << 3;
39
+ v >>>= shift;
40
+ r |= shift;
41
+ shift = +(v > 0xF) << 2;
42
+ v >>>= shift;
43
+ r |= shift;
44
+ shift = +(v > 0x3) << 1;
45
+ v >>>= shift;
46
+ r |= shift;
47
+ return r | (v >> 1);
48
+ }
49
+ utils.log2 = log2;
50
+ function getIntersectionFactor(p1, p2, p3, p4, out) {
51
+ var A1 = p2.x - p1.x, B1 = p3.x - p4.x, C1 = p3.x - p1.x;
52
+ var A2 = p2.y - p1.y, B2 = p3.y - p4.y, C2 = p3.y - p1.y;
53
+ var D = A1 * B2 - A2 * B1;
54
+ if (Math.abs(D) < 1e-7) {
55
+ out.x = A1;
56
+ out.y = A2;
57
+ return 0;
58
+ }
59
+ var T = C1 * B2 - C2 * B1;
60
+ var U = A1 * C2 - A2 * C1;
61
+ var t = T / D, u = U / D;
62
+ if (u < (1e-6) || u - 1 > -1e-6) {
63
+ return -1;
64
+ }
65
+ out.x = p1.x + t * (p2.x - p1.x);
66
+ out.y = p1.y + t * (p2.y - p1.y);
67
+ return 1;
68
+ }
69
+ utils.getIntersectionFactor = getIntersectionFactor;
70
+ function getPositionFromQuad(p, anchor, out) {
71
+ out = out || new PIXI.Point();
72
+ var a1 = 1.0 - anchor.x, a2 = 1.0 - a1;
73
+ var b1 = 1.0 - anchor.y, b2 = 1.0 - b1;
74
+ out.x = (p[0].x * a1 + p[1].x * a2) * b1 + (p[3].x * a1 + p[2].x * a2) * b2;
75
+ out.y = (p[0].y * a1 + p[1].y * a2) * b1 + (p[3].y * a1 + p[2].y * a2) * b2;
76
+ return out;
77
+ }
78
+ utils.getPositionFromQuad = getPositionFromQuad;
79
+ })(utils = pixi_projection.utils || (pixi_projection.utils = {}));
80
+ })(pixi_projection || (pixi_projection = {}));
81
+ PIXI.projection = pixi_projection;
82
+ var pixi_projection;
83
+ (function (pixi_projection) {
84
+ var AbstractProjection = (function () {
85
+ function AbstractProjection(legacy, enable) {
86
+ if (enable === void 0) { enable = true; }
87
+ this._enabled = false;
88
+ this.legacy = legacy;
89
+ if (enable) {
90
+ this.enabled = true;
91
+ }
92
+ this.legacy.proj = this;
93
+ }
94
+ Object.defineProperty(AbstractProjection.prototype, "enabled", {
95
+ get: function () {
96
+ return this._enabled;
97
+ },
98
+ set: function (value) {
99
+ this._enabled = value;
100
+ },
101
+ enumerable: true,
102
+ configurable: true
103
+ });
104
+ AbstractProjection.prototype.clear = function () {
105
+ };
106
+ return AbstractProjection;
107
+ }());
108
+ pixi_projection.AbstractProjection = AbstractProjection;
109
+ var TRANSFORM_STEP;
110
+ (function (TRANSFORM_STEP) {
111
+ TRANSFORM_STEP[TRANSFORM_STEP["NONE"] = 0] = "NONE";
112
+ TRANSFORM_STEP[TRANSFORM_STEP["BEFORE_PROJ"] = 4] = "BEFORE_PROJ";
113
+ TRANSFORM_STEP[TRANSFORM_STEP["PROJ"] = 5] = "PROJ";
114
+ TRANSFORM_STEP[TRANSFORM_STEP["ALL"] = 9] = "ALL";
115
+ })(TRANSFORM_STEP = pixi_projection.TRANSFORM_STEP || (pixi_projection.TRANSFORM_STEP = {}));
116
+ })(pixi_projection || (pixi_projection = {}));
117
+ var __extends = (this && this.__extends) || (function () {
118
+ var extendStatics = Object.setPrototypeOf ||
119
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
120
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
121
+ return function (d, b) {
122
+ extendStatics(d, b);
123
+ function __() { this.constructor = d; }
124
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
125
+ };
126
+ })();
127
+ var pixi_projection;
128
+ (function (pixi_projection) {
129
+ function transformHack(parentTransform) {
130
+ var proj = this.proj;
131
+ var ta = this;
132
+ var pwid = parentTransform._worldID;
133
+ var lt = ta.localTransform;
134
+ if (ta._localID !== ta._currentLocalID) {
135
+ lt.a = ta._cx * ta.scale._x;
136
+ lt.b = ta._sx * ta.scale._x;
137
+ lt.c = ta._cy * ta.scale._y;
138
+ lt.d = ta._sy * ta.scale._y;
139
+ lt.tx = ta.position._x - ((ta.pivot._x * lt.a) + (ta.pivot._y * lt.c));
140
+ lt.ty = ta.position._y - ((ta.pivot._x * lt.b) + (ta.pivot._y * lt.d));
141
+ ta._currentLocalID = ta._localID;
142
+ proj._currentProjID = -1;
143
+ }
144
+ var _matrixID = proj._projID;
145
+ if (proj._currentProjID !== _matrixID) {
146
+ proj._currentProjID = _matrixID;
147
+ proj.updateLocalTransform(lt);
148
+ ta._parentID = -1;
149
+ }
150
+ if (ta._parentID !== pwid) {
151
+ var pp = parentTransform.proj;
152
+ if (pp && !pp._affine) {
153
+ proj.world.setToMult(pp.world, proj.local);
154
+ }
155
+ else {
156
+ proj.world.setToMultLegacy(parentTransform.worldTransform, proj.local);
157
+ }
158
+ proj.world.copy(ta.worldTransform, proj._affine);
159
+ ta._parentID = pwid;
160
+ ta._worldID++;
161
+ }
162
+ }
163
+ var LinearProjection = (function (_super) {
164
+ __extends(LinearProjection, _super);
165
+ function LinearProjection() {
166
+ var _this = _super !== null && _super.apply(this, arguments) || this;
167
+ _this._projID = 0;
168
+ _this._currentProjID = -1;
169
+ _this._affine = pixi_projection.AFFINE.NONE;
170
+ return _this;
171
+ }
172
+ LinearProjection.prototype.updateLocalTransform = function (lt) {
173
+ };
174
+ Object.defineProperty(LinearProjection.prototype, "affine", {
175
+ get: function () {
176
+ return this._affine;
177
+ },
178
+ set: function (value) {
179
+ if (this._affine == value)
180
+ return;
181
+ this._affine = value;
182
+ this._currentProjID = -1;
183
+ },
184
+ enumerable: true,
185
+ configurable: true
186
+ });
187
+ Object.defineProperty(LinearProjection.prototype, "enabled", {
188
+ set: function (value) {
189
+ if (value === this._enabled) {
190
+ return;
191
+ }
192
+ this._enabled = value;
193
+ if (value) {
194
+ this.legacy.updateTransform = transformHack;
195
+ this.legacy._parentID = -1;
196
+ }
197
+ else {
198
+ this.legacy.updateTransform = PIXI.TransformStatic.prototype.updateTransform;
199
+ this.legacy._parentID = -1;
200
+ }
201
+ },
202
+ enumerable: true,
203
+ configurable: true
204
+ });
205
+ LinearProjection.prototype.clear = function () {
206
+ this._currentProjID = -1;
207
+ this._projID = 0;
208
+ };
209
+ return LinearProjection;
210
+ }(pixi_projection.AbstractProjection));
211
+ pixi_projection.LinearProjection = LinearProjection;
212
+ })(pixi_projection || (pixi_projection = {}));
213
+ var pixi_projection;
214
+ (function (pixi_projection) {
215
+ var webgl;
216
+ (function (webgl) {
217
+ var BatchBuffer = (function () {
218
+ function BatchBuffer(size) {
219
+ this.vertices = new ArrayBuffer(size);
220
+ this.float32View = new Float32Array(this.vertices);
221
+ this.uint32View = new Uint32Array(this.vertices);
222
+ }
223
+ BatchBuffer.prototype.destroy = function () {
224
+ this.vertices = null;
225
+ };
226
+ return BatchBuffer;
227
+ }());
228
+ webgl.BatchBuffer = BatchBuffer;
229
+ })(webgl = pixi_projection.webgl || (pixi_projection.webgl = {}));
230
+ })(pixi_projection || (pixi_projection = {}));
231
+ var pixi_projection;
232
+ (function (pixi_projection) {
233
+ var webgl;
234
+ (function (webgl) {
235
+ var ObjectRenderer = PIXI.ObjectRenderer;
236
+ var settings = PIXI.settings;
237
+ var GLBuffer = PIXI.glCore.GLBuffer;
238
+ var premultiplyTint = PIXI.utils.premultiplyTint;
239
+ var premultiplyBlendMode = PIXI.utils.premultiplyBlendMode;
240
+ var TICK = 0;
241
+ var BatchGroup = (function () {
242
+ function BatchGroup() {
243
+ this.textures = [];
244
+ this.textureCount = 0;
245
+ this.ids = [];
246
+ this.size = 0;
247
+ this.start = 0;
248
+ this.blend = PIXI.BLEND_MODES.NORMAL;
249
+ this.uniforms = null;
250
+ }
251
+ return BatchGroup;
252
+ }());
253
+ webgl.BatchGroup = BatchGroup;
254
+ var MultiTextureSpriteRenderer = (function (_super) {
255
+ __extends(MultiTextureSpriteRenderer, _super);
256
+ function MultiTextureSpriteRenderer(renderer) {
257
+ var _this = _super.call(this, renderer) || this;
258
+ _this.shaderVert = '';
259
+ _this.shaderFrag = '';
260
+ _this.MAX_TEXTURES_LOCAL = 32;
261
+ _this.vertSize = 5;
262
+ _this.vertByteSize = _this.vertSize * 4;
263
+ _this.size = settings.SPRITE_BATCH_SIZE;
264
+ _this.currentIndex = 0;
265
+ _this.sprites = [];
266
+ _this.vertexBuffers = [];
267
+ _this.vaos = [];
268
+ _this.vaoMax = 2;
269
+ _this.vertexCount = 0;
270
+ _this.MAX_TEXTURES = 1;
271
+ _this.indices = pixi_projection.utils.createIndicesForQuads(_this.size);
272
+ _this.groups = [];
273
+ for (var k = 0; k < _this.size; k++) {
274
+ _this.groups[k] = new BatchGroup();
275
+ }
276
+ _this.vaoMax = 2;
277
+ _this.vertexCount = 0;
278
+ _this.renderer.on('prerender', _this.onPrerender, _this);
279
+ return _this;
280
+ }
281
+ MultiTextureSpriteRenderer.prototype.getUniforms = function (spr) {
282
+ return null;
283
+ };
284
+ MultiTextureSpriteRenderer.prototype.syncUniforms = function (obj) {
285
+ if (!obj)
286
+ return;
287
+ var sh = this.shader;
288
+ for (var key in obj) {
289
+ sh.uniforms[key] = obj[key];
290
+ }
291
+ };
292
+ MultiTextureSpriteRenderer.prototype.onContextChange = function () {
293
+ var gl = this.renderer.gl;
294
+ this.MAX_TEXTURES = Math.min(this.MAX_TEXTURES_LOCAL, this.renderer.plugins['sprite'].MAX_TEXTURES);
295
+ this.shader = webgl.generateMultiTextureShader(this.shaderVert, this.shaderFrag, gl, this.MAX_TEXTURES);
296
+ this.indexBuffer = GLBuffer.createIndexBuffer(gl, this.indices, gl.STATIC_DRAW);
297
+ this.renderer.bindVao(null);
298
+ var attrs = this.shader.attributes;
299
+ for (var i = 0; i < this.vaoMax; i++) {
300
+ var vertexBuffer = this.vertexBuffers[i] = GLBuffer.createVertexBuffer(gl, null, gl.STREAM_DRAW);
301
+ this.vaos[i] = this.createVao(vertexBuffer);
302
+ }
303
+ if (!this.buffers) {
304
+ this.buffers = [];
305
+ for (var i = 1; i <= pixi_projection.utils.nextPow2(this.size); i *= 2) {
306
+ this.buffers.push(new webgl.BatchBuffer(i * 4 * this.vertByteSize));
307
+ }
308
+ }
309
+ this.vao = this.vaos[0];
310
+ };
311
+ MultiTextureSpriteRenderer.prototype.onPrerender = function () {
312
+ this.vertexCount = 0;
313
+ };
314
+ MultiTextureSpriteRenderer.prototype.render = function (sprite) {
315
+ if (this.currentIndex >= this.size) {
316
+ this.flush();
317
+ }
318
+ if (!sprite._texture._uvs) {
319
+ return;
320
+ }
321
+ if (!sprite._texture.baseTexture) {
322
+ return;
323
+ }
324
+ this.sprites[this.currentIndex++] = sprite;
325
+ };
326
+ MultiTextureSpriteRenderer.prototype.flush = function () {
327
+ if (this.currentIndex === 0) {
328
+ return;
329
+ }
330
+ var gl = this.renderer.gl;
331
+ var MAX_TEXTURES = this.MAX_TEXTURES;
332
+ var np2 = pixi_projection.utils.nextPow2(this.currentIndex);
333
+ var log2 = pixi_projection.utils.log2(np2);
334
+ var buffer = this.buffers[log2];
335
+ var sprites = this.sprites;
336
+ var groups = this.groups;
337
+ var float32View = buffer.float32View;
338
+ var uint32View = buffer.uint32View;
339
+ var index = 0;
340
+ var nextTexture;
341
+ var currentTexture;
342
+ var currentUniforms = null;
343
+ var groupCount = 1;
344
+ var textureCount = 0;
345
+ var currentGroup = groups[0];
346
+ var vertexData;
347
+ var uvs;
348
+ var blendMode = premultiplyBlendMode[sprites[0]._texture.baseTexture.premultipliedAlpha ? 1 : 0][sprites[0].blendMode];
349
+ currentGroup.textureCount = 0;
350
+ currentGroup.start = 0;
351
+ currentGroup.blend = blendMode;
352
+ TICK++;
353
+ var i;
354
+ for (i = 0; i < this.currentIndex; ++i) {
355
+ var sprite = sprites[i];
356
+ nextTexture = sprite._texture.baseTexture;
357
+ var spriteBlendMode = premultiplyBlendMode[Number(nextTexture.premultipliedAlpha)][sprite.blendMode];
358
+ if (blendMode !== spriteBlendMode) {
359
+ blendMode = spriteBlendMode;
360
+ currentTexture = null;
361
+ textureCount = MAX_TEXTURES;
362
+ TICK++;
363
+ }
364
+ var uniforms = this.getUniforms(sprite);
365
+ if (currentUniforms !== uniforms) {
366
+ currentUniforms = uniforms;
367
+ currentTexture = null;
368
+ textureCount = MAX_TEXTURES;
369
+ TICK++;
370
+ }
371
+ if (currentTexture !== nextTexture) {
372
+ currentTexture = nextTexture;
373
+ if (nextTexture._enabled !== TICK) {
374
+ if (textureCount === MAX_TEXTURES) {
375
+ TICK++;
376
+ textureCount = 0;
377
+ currentGroup.size = i - currentGroup.start;
378
+ currentGroup = groups[groupCount++];
379
+ currentGroup.textureCount = 0;
380
+ currentGroup.blend = blendMode;
381
+ currentGroup.start = i;
382
+ currentGroup.uniforms = currentUniforms;
383
+ }
384
+ nextTexture._enabled = TICK;
385
+ nextTexture._virtalBoundId = textureCount;
386
+ currentGroup.textures[currentGroup.textureCount++] = nextTexture;
387
+ textureCount++;
388
+ }
389
+ }
390
+ var alpha = Math.min(sprite.worldAlpha, 1.0);
391
+ var argb = alpha < 1.0 && nextTexture.premultipliedAlpha ? premultiplyTint(sprite._tintRGB, alpha)
392
+ : sprite._tintRGB + (alpha * 255 << 24);
393
+ this.fillVertices(float32View, uint32View, index, sprite, argb, nextTexture._virtalBoundId);
394
+ index += this.vertSize * 4;
395
+ }
396
+ currentGroup.size = i - currentGroup.start;
397
+ if (!settings.CAN_UPLOAD_SAME_BUFFER) {
398
+ if (this.vaoMax <= this.vertexCount) {
399
+ this.vaoMax++;
400
+ var attrs = this.shader.attributes;
401
+ var vertexBuffer = this.vertexBuffers[this.vertexCount] = GLBuffer.createVertexBuffer(gl, null, gl.STREAM_DRAW);
402
+ this.vaos[this.vertexCount] = this.createVao(vertexBuffer);
403
+ }
404
+ this.renderer.bindVao(this.vaos[this.vertexCount]);
405
+ this.vertexBuffers[this.vertexCount].upload(buffer.vertices, 0, false);
406
+ this.vertexCount++;
407
+ }
408
+ else {
409
+ this.vertexBuffers[this.vertexCount].upload(buffer.vertices, 0, true);
410
+ }
411
+ currentUniforms = null;
412
+ for (i = 0; i < groupCount; i++) {
413
+ var group = groups[i];
414
+ var groupTextureCount = group.textureCount;
415
+ if (group.uniforms !== currentUniforms) {
416
+ this.syncUniforms(group.uniforms);
417
+ }
418
+ for (var j = 0; j < groupTextureCount; j++) {
419
+ this.renderer.bindTexture(group.textures[j], j, true);
420
+ group.textures[j]._virtalBoundId = -1;
421
+ var v = this.shader.uniforms.samplerSize;
422
+ if (v) {
423
+ v[0] = group.textures[j].realWidth;
424
+ v[1] = group.textures[j].realHeight;
425
+ this.shader.uniforms.samplerSize = v;
426
+ }
427
+ }
428
+ this.renderer.state.setBlendMode(group.blend);
429
+ gl.drawElements(gl.TRIANGLES, group.size * 6, gl.UNSIGNED_SHORT, group.start * 6 * 2);
430
+ }
431
+ this.currentIndex = 0;
432
+ };
433
+ MultiTextureSpriteRenderer.prototype.start = function () {
434
+ this.renderer.bindShader(this.shader);
435
+ if (settings.CAN_UPLOAD_SAME_BUFFER) {
436
+ this.renderer.bindVao(this.vaos[this.vertexCount]);
437
+ this.vertexBuffers[this.vertexCount].bind();
438
+ }
439
+ };
440
+ MultiTextureSpriteRenderer.prototype.stop = function () {
441
+ this.flush();
442
+ };
443
+ MultiTextureSpriteRenderer.prototype.destroy = function () {
444
+ for (var i = 0; i < this.vaoMax; i++) {
445
+ if (this.vertexBuffers[i]) {
446
+ this.vertexBuffers[i].destroy();
447
+ }
448
+ if (this.vaos[i]) {
449
+ this.vaos[i].destroy();
450
+ }
451
+ }
452
+ if (this.indexBuffer) {
453
+ this.indexBuffer.destroy();
454
+ }
455
+ this.renderer.off('prerender', this.onPrerender, this);
456
+ _super.prototype.destroy.call(this);
457
+ if (this.shader) {
458
+ this.shader.destroy();
459
+ this.shader = null;
460
+ }
461
+ this.vertexBuffers = null;
462
+ this.vaos = null;
463
+ this.indexBuffer = null;
464
+ this.indices = null;
465
+ this.sprites = null;
466
+ for (var i = 0; i < this.buffers.length; ++i) {
467
+ this.buffers[i].destroy();
468
+ }
469
+ };
470
+ return MultiTextureSpriteRenderer;
471
+ }(ObjectRenderer));
472
+ webgl.MultiTextureSpriteRenderer = MultiTextureSpriteRenderer;
473
+ })(webgl = pixi_projection.webgl || (pixi_projection.webgl = {}));
474
+ })(pixi_projection || (pixi_projection = {}));
475
+ var pixi_projection;
476
+ (function (pixi_projection) {
477
+ var webgl;
478
+ (function (webgl) {
479
+ function generateMultiTextureShader(vertexSrc, fragmentSrc, gl, maxTextures) {
480
+ fragmentSrc = fragmentSrc.replace(/%count%/gi, maxTextures + '');
481
+ fragmentSrc = fragmentSrc.replace(/%forloop%/gi, generateSampleSrc(maxTextures));
482
+ var shader = new PIXI.Shader(gl, vertexSrc, fragmentSrc);
483
+ var sampleValues = new Int32Array(maxTextures);
484
+ for (var i = 0; i < maxTextures; i++) {
485
+ sampleValues[i] = i;
486
+ }
487
+ shader.bind();
488
+ shader.uniforms.uSamplers = sampleValues;
489
+ return shader;
490
+ }
491
+ webgl.generateMultiTextureShader = generateMultiTextureShader;
492
+ function generateSampleSrc(maxTextures) {
493
+ var src = '';
494
+ src += '\n';
495
+ src += '\n';
496
+ for (var i = 0; i < maxTextures; i++) {
497
+ if (i > 0) {
498
+ src += '\nelse ';
499
+ }
500
+ if (i < maxTextures - 1) {
501
+ src += "if(textureId == " + i + ".0)";
502
+ }
503
+ src += '\n{';
504
+ src += "\n\tcolor = texture2D(uSamplers[" + i + "], textureCoord);";
505
+ src += '\n}';
506
+ }
507
+ src += '\n';
508
+ src += '\n';
509
+ return src;
510
+ }
511
+ })(webgl = pixi_projection.webgl || (pixi_projection.webgl = {}));
512
+ })(pixi_projection || (pixi_projection = {}));
513
+ var pixi_projection;
514
+ (function (pixi_projection) {
515
+ var p = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()];
516
+ var a = [0, 0, 0, 0];
517
+ var Surface = (function () {
518
+ function Surface() {
519
+ this.surfaceID = "default";
520
+ this._updateID = 0;
521
+ this.vertexSrc = "";
522
+ this.fragmentSrc = "";
523
+ }
524
+ Surface.prototype.fillUniforms = function (uniforms) {
525
+ };
526
+ Surface.prototype.clear = function () {
527
+ };
528
+ Surface.prototype.boundsQuad = function (v, out, after) {
529
+ var minX = out[0], minY = out[1];
530
+ var maxX = out[0], maxY = out[1];
531
+ for (var i = 2; i < 8; i += 2) {
532
+ if (minX > out[i])
533
+ minX = out[i];
534
+ if (maxX < out[i])
535
+ maxX = out[i];
536
+ if (minY > out[i + 1])
537
+ minY = out[i + 1];
538
+ if (maxY < out[i + 1])
539
+ maxY = out[i + 1];
540
+ }
541
+ p[0].set(minX, minY);
542
+ this.apply(p[0], p[0]);
543
+ p[1].set(maxX, minY);
544
+ this.apply(p[1], p[1]);
545
+ p[2].set(maxX, maxY);
546
+ this.apply(p[2], p[2]);
547
+ p[3].set(minX, maxY);
548
+ this.apply(p[3], p[3]);
549
+ if (after) {
550
+ after.apply(p[0], p[0]);
551
+ after.apply(p[1], p[1]);
552
+ after.apply(p[2], p[2]);
553
+ after.apply(p[3], p[3]);
554
+ out[0] = p[0].x;
555
+ out[1] = p[0].y;
556
+ out[2] = p[1].x;
557
+ out[3] = p[1].y;
558
+ out[4] = p[2].x;
559
+ out[5] = p[2].y;
560
+ out[6] = p[3].x;
561
+ out[7] = p[3].y;
562
+ }
563
+ else {
564
+ for (var i = 1; i <= 3; i++) {
565
+ if (p[i].y < p[0].y || p[i].y == p[0].y && p[i].x < p[0].x) {
566
+ var t = p[0];
567
+ p[0] = p[i];
568
+ p[i] = t;
569
+ }
570
+ }
571
+ for (var i = 1; i <= 3; i++) {
572
+ a[i] = Math.atan2(p[i].y - p[0].y, p[i].x - p[0].x);
573
+ }
574
+ for (var i = 1; i <= 3; i++) {
575
+ for (var j = i + 1; j <= 3; j++) {
576
+ if (a[i] > a[j]) {
577
+ var t = p[i];
578
+ p[i] = p[j];
579
+ p[j] = t;
580
+ var t2 = a[i];
581
+ a[i] = a[j];
582
+ a[j] = t2;
583
+ }
584
+ }
585
+ }
586
+ out[0] = p[0].x;
587
+ out[1] = p[0].y;
588
+ out[2] = p[1].x;
589
+ out[3] = p[1].y;
590
+ out[4] = p[2].x;
591
+ out[5] = p[2].y;
592
+ out[6] = p[3].x;
593
+ out[7] = p[3].y;
594
+ if ((p[3].x - p[2].x) * (p[1].y - p[2].y) - (p[1].x - p[2].x) * (p[3].y - p[2].y) < 0) {
595
+ out[4] = p[3].x;
596
+ out[5] = p[3].y;
597
+ return;
598
+ }
599
+ }
600
+ };
601
+ return Surface;
602
+ }());
603
+ pixi_projection.Surface = Surface;
604
+ })(pixi_projection || (pixi_projection = {}));
605
+ var pixi_projection;
606
+ (function (pixi_projection) {
607
+ var tempMat = new PIXI.Matrix();
608
+ var tempRect = new PIXI.Rectangle();
609
+ var tempPoint = new PIXI.Point();
610
+ var BilinearSurface = (function (_super) {
611
+ __extends(BilinearSurface, _super);
612
+ function BilinearSurface() {
613
+ var _this = _super.call(this) || this;
614
+ _this.distortion = new PIXI.Point();
615
+ return _this;
616
+ }
617
+ BilinearSurface.prototype.clear = function () {
618
+ this.distortion.set(0, 0);
619
+ };
620
+ BilinearSurface.prototype.apply = function (pos, newPos) {
621
+ newPos = newPos || new PIXI.Point();
622
+ var d = this.distortion;
623
+ var m = pos.x * pos.y;
624
+ newPos.x = pos.x + d.x * m;
625
+ newPos.y = pos.y + d.y * m;
626
+ return newPos;
627
+ };
628
+ BilinearSurface.prototype.applyInverse = function (pos, newPos) {
629
+ newPos = newPos || new PIXI.Point();
630
+ var vx = pos.x, vy = pos.y;
631
+ var dx = this.distortion.x, dy = this.distortion.y;
632
+ if (dx == 0.0) {
633
+ newPos.x = vx;
634
+ newPos.y = vy / (1.0 + dy * vx);
635
+ }
636
+ else if (dy == 0.0) {
637
+ newPos.y = vy;
638
+ newPos.x = vx / (1.0 + dx * vy);
639
+ }
640
+ else {
641
+ var b = (vy * dx - vx * dy + 1.0) * 0.5 / dy;
642
+ var d = b * b + vx / dy;
643
+ if (d <= 0.00001) {
644
+ newPos.set(NaN, NaN);
645
+ return;
646
+ }
647
+ if (dy > 0.0) {
648
+ newPos.x = -b + Math.sqrt(d);
649
+ }
650
+ else {
651
+ newPos.x = -b - Math.sqrt(d);
652
+ }
653
+ newPos.y = (vx / newPos.x - 1.0) / dx;
654
+ }
655
+ return newPos;
656
+ };
657
+ BilinearSurface.prototype.mapSprite = function (sprite, quad, outTransform) {
658
+ var tex = sprite.texture;
659
+ tempRect.x = -sprite.anchor.x * tex.orig.width;
660
+ tempRect.y = -sprite.anchor.y * tex.orig.height;
661
+ tempRect.width = tex.orig.width;
662
+ tempRect.height = tex.orig.height;
663
+ return this.mapQuad(tempRect, quad, outTransform || sprite.transform);
664
+ };
665
+ BilinearSurface.prototype.mapQuad = function (rect, quad, outTransform) {
666
+ var ax = -rect.x / rect.width;
667
+ var ay = -rect.y / rect.height;
668
+ var ax2 = (1.0 - rect.x) / rect.width;
669
+ var ay2 = (1.0 - rect.y) / rect.height;
670
+ var up1x = (quad[0].x * (1.0 - ax) + quad[1].x * ax);
671
+ var up1y = (quad[0].y * (1.0 - ax) + quad[1].y * ax);
672
+ var up2x = (quad[0].x * (1.0 - ax2) + quad[1].x * ax2);
673
+ var up2y = (quad[0].y * (1.0 - ax2) + quad[1].y * ax2);
674
+ var down1x = (quad[3].x * (1.0 - ax) + quad[2].x * ax);
675
+ var down1y = (quad[3].y * (1.0 - ax) + quad[2].y * ax);
676
+ var down2x = (quad[3].x * (1.0 - ax2) + quad[2].x * ax2);
677
+ var down2y = (quad[3].y * (1.0 - ax2) + quad[2].y * ax2);
678
+ var x00 = up1x * (1.0 - ay) + down1x * ay;
679
+ var y00 = up1y * (1.0 - ay) + down1y * ay;
680
+ var x10 = up2x * (1.0 - ay) + down2x * ay;
681
+ var y10 = up2y * (1.0 - ay) + down2y * ay;
682
+ var x01 = up1x * (1.0 - ay2) + down1x * ay2;
683
+ var y01 = up1y * (1.0 - ay2) + down1y * ay2;
684
+ var x11 = up2x * (1.0 - ay2) + down2x * ay2;
685
+ var y11 = up2y * (1.0 - ay2) + down2y * ay2;
686
+ var mat = tempMat;
687
+ mat.tx = x00;
688
+ mat.ty = y00;
689
+ mat.a = x10 - x00;
690
+ mat.b = y10 - y00;
691
+ mat.c = x01 - x00;
692
+ mat.d = y01 - y00;
693
+ tempPoint.set(x11, y11);
694
+ mat.applyInverse(tempPoint, tempPoint);
695
+ this.distortion.set(tempPoint.x - 1, tempPoint.y - 1);
696
+ outTransform.setFromMatrix(mat);
697
+ return this;
698
+ };
699
+ BilinearSurface.prototype.fillUniforms = function (uniforms) {
700
+ uniforms.distortion = uniforms.distortion || new Float32Array([0, 0, 0, 0]);
701
+ var ax = Math.abs(this.distortion.x);
702
+ var ay = Math.abs(this.distortion.y);
703
+ uniforms.distortion[0] = ax * 10000 <= ay ? 0 : this.distortion.x;
704
+ uniforms.distortion[1] = ay * 10000 <= ax ? 0 : this.distortion.y;
705
+ uniforms.distortion[2] = 1.0 / uniforms.distortion[0];
706
+ uniforms.distortion[3] = 1.0 / uniforms.distortion[1];
707
+ };
708
+ return BilinearSurface;
709
+ }(pixi_projection.Surface));
710
+ pixi_projection.BilinearSurface = BilinearSurface;
711
+ })(pixi_projection || (pixi_projection = {}));
712
+ var pixi_projection;
713
+ (function (pixi_projection) {
714
+ var Container2s = (function (_super) {
715
+ __extends(Container2s, _super);
716
+ function Container2s() {
717
+ var _this = _super.call(this) || this;
718
+ _this.proj = new pixi_projection.ProjectionSurface(_this.transform);
719
+ return _this;
720
+ }
721
+ Object.defineProperty(Container2s.prototype, "worldTransform", {
722
+ get: function () {
723
+ return this.proj;
724
+ },
725
+ enumerable: true,
726
+ configurable: true
727
+ });
728
+ return Container2s;
729
+ }(PIXI.Container));
730
+ pixi_projection.Container2s = Container2s;
731
+ })(pixi_projection || (pixi_projection = {}));
732
+ var pixi_projection;
733
+ (function (pixi_projection) {
734
+ var fun = PIXI.TransformStatic.prototype.updateTransform;
735
+ function transformHack(parentTransform) {
736
+ var proj = this.proj;
737
+ var pp = parentTransform.proj;
738
+ var ta = this;
739
+ if (!pp) {
740
+ fun.call(this, parentTransform);
741
+ proj._activeProjection = null;
742
+ return;
743
+ }
744
+ if (pp._surface) {
745
+ proj._activeProjection = pp;
746
+ this.updateLocalTransform();
747
+ this.localTransform.copy(this.worldTransform);
748
+ if (ta._parentID < 0) {
749
+ ++ta._worldID;
750
+ }
751
+ return;
752
+ }
753
+ fun.call(this, parentTransform);
754
+ proj._activeProjection = pp._activeProjection;
755
+ }
756
+ var ProjectionSurface = (function (_super) {
757
+ __extends(ProjectionSurface, _super);
758
+ function ProjectionSurface(legacy, enable) {
759
+ var _this = _super.call(this, legacy, enable) || this;
760
+ _this._surface = null;
761
+ _this._activeProjection = null;
762
+ _this._currentSurfaceID = -1;
763
+ _this._currentLegacyID = -1;
764
+ _this._lastUniforms = null;
765
+ return _this;
766
+ }
767
+ Object.defineProperty(ProjectionSurface.prototype, "enabled", {
768
+ set: function (value) {
769
+ if (value === this._enabled) {
770
+ return;
771
+ }
772
+ this._enabled = value;
773
+ if (value) {
774
+ this.legacy.updateTransform = transformHack;
775
+ this.legacy._parentID = -1;
776
+ }
777
+ else {
778
+ this.legacy.updateTransform = PIXI.TransformStatic.prototype.updateTransform;
779
+ this.legacy._parentID = -1;
780
+ }
781
+ },
782
+ enumerable: true,
783
+ configurable: true
784
+ });
785
+ Object.defineProperty(ProjectionSurface.prototype, "surface", {
786
+ get: function () {
787
+ return this._surface;
788
+ },
789
+ set: function (value) {
790
+ if (this._surface == value) {
791
+ return;
792
+ }
793
+ this._surface = value || null;
794
+ this.legacy._parentID = -1;
795
+ },
796
+ enumerable: true,
797
+ configurable: true
798
+ });
799
+ ProjectionSurface.prototype.applyPartial = function (pos, newPos) {
800
+ if (this._activeProjection !== null) {
801
+ newPos = this.legacy.worldTransform.apply(pos, newPos);
802
+ return this._activeProjection.surface.apply(newPos, newPos);
803
+ }
804
+ if (this._surface !== null) {
805
+ return this.surface.apply(pos, newPos);
806
+ }
807
+ return this.legacy.worldTransform.apply(pos, newPos);
808
+ };
809
+ ProjectionSurface.prototype.apply = function (pos, newPos) {
810
+ if (this._activeProjection !== null) {
811
+ newPos = this.legacy.worldTransform.apply(pos, newPos);
812
+ this._activeProjection.surface.apply(newPos, newPos);
813
+ return this._activeProjection.legacy.worldTransform.apply(newPos, newPos);
814
+ }
815
+ if (this._surface !== null) {
816
+ newPos = this.surface.apply(pos, newPos);
817
+ return this.legacy.worldTransform.apply(newPos, newPos);
818
+ }
819
+ return this.legacy.worldTransform.apply(pos, newPos);
820
+ };
821
+ ProjectionSurface.prototype.applyInverse = function (pos, newPos) {
822
+ if (this._activeProjection !== null) {
823
+ newPos = this._activeProjection.legacy.worldTransform.applyInverse(pos, newPos);
824
+ this._activeProjection._surface.applyInverse(newPos, newPos);
825
+ return this.legacy.worldTransform.applyInverse(newPos, newPos);
826
+ }
827
+ if (this._surface !== null) {
828
+ newPos = this.legacy.worldTransform.applyInverse(pos, newPos);
829
+ return this._surface.applyInverse(newPos, newPos);
830
+ }
831
+ return this.legacy.worldTransform.applyInverse(pos, newPos);
832
+ };
833
+ ProjectionSurface.prototype.mapBilinearSprite = function (sprite, quad) {
834
+ if (!(this._surface instanceof pixi_projection.BilinearSurface)) {
835
+ this.surface = new pixi_projection.BilinearSurface();
836
+ }
837
+ this.surface.mapSprite(sprite, quad, this.legacy);
838
+ };
839
+ ProjectionSurface.prototype.clear = function () {
840
+ if (this.surface) {
841
+ this.surface.clear();
842
+ }
843
+ };
844
+ Object.defineProperty(ProjectionSurface.prototype, "uniforms", {
845
+ get: function () {
846
+ if (this._currentLegacyID === this.legacy._worldID &&
847
+ this._currentSurfaceID === this.surface._updateID) {
848
+ return this._lastUniforms;
849
+ }
850
+ this._lastUniforms = this._lastUniforms || {};
851
+ this._lastUniforms.worldTransform = this.legacy.worldTransform.toArray(true);
852
+ this._surface.fillUniforms(this._lastUniforms);
853
+ return this._lastUniforms;
854
+ },
855
+ enumerable: true,
856
+ configurable: true
857
+ });
858
+ return ProjectionSurface;
859
+ }(pixi_projection.AbstractProjection));
860
+ pixi_projection.ProjectionSurface = ProjectionSurface;
861
+ })(pixi_projection || (pixi_projection = {}));
862
+ var pixi_projection;
863
+ (function (pixi_projection) {
864
+ var MultiTextureSpriteRenderer = pixi_projection.webgl.MultiTextureSpriteRenderer;
865
+ var SpriteBilinearRenderer = (function (_super) {
866
+ __extends(SpriteBilinearRenderer, _super);
867
+ function SpriteBilinearRenderer() {
868
+ var _this = _super !== null && _super.apply(this, arguments) || this;
869
+ _this.size = 100;
870
+ _this.MAX_TEXTURES_LOCAL = 1;
871
+ _this.shaderVert = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec3 aTrans1;\nattribute vec3 aTrans2;\nattribute vec4 aFrame;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform mat3 worldTransform;\n\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * worldTransform * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n \n vTextureCoord = aVertexPosition;\n vTrans1 = aTrans1;\n vTrans2 = aTrans2;\n vTextureId = aTextureId;\n vColor = aColor;\n vFrame = aFrame;\n}\n";
872
+ _this.shaderFrag = "precision highp float;\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nuniform sampler2D uSamplers[%count%];\nuniform vec2 samplerSize[%count%]; \nuniform vec4 distortion;\n\nvoid main(void){\nvec2 surface;\nvec2 surface2;\n\nfloat vx = vTextureCoord.x;\nfloat vy = vTextureCoord.y;\nfloat dx = distortion.x;\nfloat dy = distortion.y;\nfloat revx = distortion.z;\nfloat revy = distortion.w;\n\nif (distortion.x == 0.0) {\n surface.x = vx;\n surface.y = vy / (1.0 + dy * vx);\n surface2 = surface;\n} else\nif (distortion.y == 0.0) {\n surface.y = vy;\n surface.x = vx/ (1.0 + dx * vy);\n surface2 = surface;\n} else {\n float c = vy * dx - vx * dy;\n float b = (c + 1.0) * 0.5;\n float b2 = (-c + 1.0) * 0.5;\n float d = b * b + vx * dy;\n if (d < -0.00001) {\n discard;\n }\n d = sqrt(max(d, 0.0));\n surface.x = (- b + d) * revy;\n surface2.x = (- b - d) * revy;\n surface.y = (- b2 + d) * revx;\n surface2.y = (- b2 - d) * revx;\n}\n\nvec2 uv;\nuv.x = vTrans1.x * surface.x + vTrans1.y * surface.y + vTrans1.z;\nuv.y = vTrans2.x * surface.x + vTrans2.y * surface.y + vTrans2.z;\n\nvec2 pixels = uv * samplerSize[0];\n\nif (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n uv.x = vTrans1.x * surface2.x + vTrans1.y * surface2.y + vTrans1.z;\n uv.y = vTrans2.x * surface2.x + vTrans2.y * surface2.y + vTrans2.z;\n pixels = uv * samplerSize[0];\n \n if (pixels.x < vFrame.x || pixels.x > vFrame.z ||\n pixels.y < vFrame.y || pixels.y > vFrame.w) {\n discard;\n }\n}\n\nvec4 edge;\nedge.xy = clamp(pixels - vFrame.xy + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\nedge.zw = clamp(vFrame.zw - pixels + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\n\nfloat alpha = 1.0; //edge.x * edge.y * edge.z * edge.w;\nvec4 rColor = vColor * alpha;\n\nfloat textureId = floor(vTextureId+0.5);\nvec4 color;\nvec2 textureCoord = uv;\n%forloop%\ngl_FragColor = color * rColor;\n}";
873
+ _this.defUniforms = {
874
+ worldTransform: new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]),
875
+ distortion: new Float32Array([0, 0])
876
+ };
877
+ return _this;
878
+ }
879
+ SpriteBilinearRenderer.prototype.getUniforms = function (sprite) {
880
+ var proj = sprite.proj;
881
+ var shader = this.shader;
882
+ if (proj.surface !== null) {
883
+ return proj.uniforms;
884
+ }
885
+ if (proj._activeProjection !== null) {
886
+ return proj._activeProjection.uniforms;
887
+ }
888
+ return this.defUniforms;
889
+ };
890
+ SpriteBilinearRenderer.prototype.createVao = function (vertexBuffer) {
891
+ var attrs = this.shader.attributes;
892
+ this.vertSize = 14;
893
+ this.vertByteSize = this.vertSize * 4;
894
+ var gl = this.renderer.gl;
895
+ var vao = this.renderer.createVao()
896
+ .addIndex(this.indexBuffer)
897
+ .addAttribute(vertexBuffer, attrs.aVertexPosition, gl.FLOAT, false, this.vertByteSize, 0)
898
+ .addAttribute(vertexBuffer, attrs.aTrans1, gl.FLOAT, false, this.vertByteSize, 2 * 4)
899
+ .addAttribute(vertexBuffer, attrs.aTrans2, gl.FLOAT, false, this.vertByteSize, 5 * 4)
900
+ .addAttribute(vertexBuffer, attrs.aFrame, gl.FLOAT, false, this.vertByteSize, 8 * 4)
901
+ .addAttribute(vertexBuffer, attrs.aColor, gl.UNSIGNED_BYTE, true, this.vertByteSize, 12 * 4);
902
+ if (attrs.aTextureId) {
903
+ vao.addAttribute(vertexBuffer, attrs.aTextureId, gl.FLOAT, false, this.vertByteSize, 13 * 4);
904
+ }
905
+ return vao;
906
+ };
907
+ SpriteBilinearRenderer.prototype.fillVertices = function (float32View, uint32View, index, sprite, argb, textureId) {
908
+ var vertexData = sprite.vertexData;
909
+ var tex = sprite._texture;
910
+ var w = tex.orig.width;
911
+ var h = tex.orig.height;
912
+ var ax = sprite._anchor._x;
913
+ var ay = sprite._anchor._y;
914
+ var frame = tex._frame;
915
+ var aTrans = sprite.aTrans;
916
+ for (var i = 0; i < 4; i++) {
917
+ float32View[index] = vertexData[i * 2];
918
+ float32View[index + 1] = vertexData[i * 2 + 1];
919
+ float32View[index + 2] = aTrans.a;
920
+ float32View[index + 3] = aTrans.c;
921
+ float32View[index + 4] = aTrans.tx;
922
+ float32View[index + 5] = aTrans.b;
923
+ float32View[index + 6] = aTrans.d;
924
+ float32View[index + 7] = aTrans.ty;
925
+ float32View[index + 8] = frame.x;
926
+ float32View[index + 9] = frame.y;
927
+ float32View[index + 10] = frame.x + frame.width;
928
+ float32View[index + 11] = frame.y + frame.height;
929
+ uint32View[index + 12] = argb;
930
+ float32View[index + 13] = textureId;
931
+ index += 14;
932
+ }
933
+ };
934
+ return SpriteBilinearRenderer;
935
+ }(MultiTextureSpriteRenderer));
936
+ PIXI.WebGLRenderer.registerPlugin('sprite_bilinear', SpriteBilinearRenderer);
937
+ })(pixi_projection || (pixi_projection = {}));
938
+ var pixi_projection;
939
+ (function (pixi_projection) {
940
+ var MultiTextureSpriteRenderer = pixi_projection.webgl.MultiTextureSpriteRenderer;
941
+ var SpriteStrangeRenderer = (function (_super) {
942
+ __extends(SpriteStrangeRenderer, _super);
943
+ function SpriteStrangeRenderer() {
944
+ var _this = _super !== null && _super.apply(this, arguments) || this;
945
+ _this.size = 100;
946
+ _this.MAX_TEXTURES_LOCAL = 1;
947
+ _this.shaderVert = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec3 aTrans1;\nattribute vec3 aTrans2;\nattribute vec4 aFrame;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform mat3 worldTransform;\n\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * worldTransform * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n \n vTextureCoord = aVertexPosition;\n vTrans1 = aTrans1;\n vTrans2 = aTrans2;\n vTextureId = aTextureId;\n vColor = aColor;\n vFrame = aFrame;\n}\n";
948
+ _this.shaderFrag = "precision highp float;\nvarying vec2 vTextureCoord;\nvarying vec3 vTrans1;\nvarying vec3 vTrans2;\nvarying vec4 vFrame;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nuniform sampler2D uSamplers[%count%];\nuniform vec2 samplerSize[%count%]; \nuniform vec4 params;\n\nvoid main(void){\nvec2 surface;\n\nfloat vx = vTextureCoord.x;\nfloat vy = vTextureCoord.y;\nfloat aleph = params.x;\nfloat bet = params.y;\nfloat A = params.z;\nfloat B = params.w;\n\nif (aleph == 0.0) {\n\tsurface.y = vy / (1.0 + vx * bet);\n\tsurface.x = vx;\n}\nelse if (bet == 0.0) {\n\tsurface.x = vx / (1.0 + vy * aleph);\n\tsurface.y = vy;\n} else {\n\tsurface.x = vx * (bet + 1.0) / (bet + 1.0 + vy * aleph);\n\tsurface.y = vy * (aleph + 1.0) / (aleph + 1.0 + vx * bet);\n}\n\nvec2 uv;\nuv.x = vTrans1.x * surface.x + vTrans1.y * surface.y + vTrans1.z;\nuv.y = vTrans2.x * surface.x + vTrans2.y * surface.y + vTrans2.z;\n\nvec2 pixels = uv * samplerSize[0];\n\nvec4 edge;\nedge.xy = clamp(pixels - vFrame.xy + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\nedge.zw = clamp(vFrame.zw - pixels + 0.5, vec2(0.0, 0.0), vec2(1.0, 1.0));\n\nfloat alpha = edge.x * edge.y * edge.z * edge.w;\nvec4 rColor = vColor * alpha;\n\nfloat textureId = floor(vTextureId+0.5);\nvec4 color;\nvec2 textureCoord = uv;\n%forloop%\ngl_FragColor = color * rColor;\n}";
949
+ _this.defUniforms = {
950
+ worldTransform: new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]),
951
+ distortion: new Float32Array([0, 0])
952
+ };
953
+ return _this;
954
+ }
955
+ SpriteStrangeRenderer.prototype.getUniforms = function (sprite) {
956
+ var proj = sprite.proj;
957
+ var shader = this.shader;
958
+ if (proj.surface !== null) {
959
+ return proj.uniforms;
960
+ }
961
+ if (proj._activeProjection !== null) {
962
+ return proj._activeProjection.uniforms;
963
+ }
964
+ return this.defUniforms;
965
+ };
966
+ SpriteStrangeRenderer.prototype.createVao = function (vertexBuffer) {
967
+ var attrs = this.shader.attributes;
968
+ this.vertSize = 14;
969
+ this.vertByteSize = this.vertSize * 4;
970
+ var gl = this.renderer.gl;
971
+ var vao = this.renderer.createVao()
972
+ .addIndex(this.indexBuffer)
973
+ .addAttribute(vertexBuffer, attrs.aVertexPosition, gl.FLOAT, false, this.vertByteSize, 0)
974
+ .addAttribute(vertexBuffer, attrs.aTrans1, gl.FLOAT, false, this.vertByteSize, 2 * 4)
975
+ .addAttribute(vertexBuffer, attrs.aTrans2, gl.FLOAT, false, this.vertByteSize, 5 * 4)
976
+ .addAttribute(vertexBuffer, attrs.aFrame, gl.FLOAT, false, this.vertByteSize, 8 * 4)
977
+ .addAttribute(vertexBuffer, attrs.aColor, gl.UNSIGNED_BYTE, true, this.vertByteSize, 12 * 4);
978
+ if (attrs.aTextureId) {
979
+ vao.addAttribute(vertexBuffer, attrs.aTextureId, gl.FLOAT, false, this.vertByteSize, 13 * 4);
980
+ }
981
+ return vao;
982
+ };
983
+ SpriteStrangeRenderer.prototype.fillVertices = function (float32View, uint32View, index, sprite, argb, textureId) {
984
+ var vertexData = sprite.vertexData;
985
+ var tex = sprite._texture;
986
+ var w = tex.orig.width;
987
+ var h = tex.orig.height;
988
+ var ax = sprite._anchor._x;
989
+ var ay = sprite._anchor._y;
990
+ var frame = tex._frame;
991
+ var aTrans = sprite.aTrans;
992
+ for (var i = 0; i < 4; i++) {
993
+ float32View[index] = vertexData[i * 2];
994
+ float32View[index + 1] = vertexData[i * 2 + 1];
995
+ float32View[index + 2] = aTrans.a;
996
+ float32View[index + 3] = aTrans.c;
997
+ float32View[index + 4] = aTrans.tx;
998
+ float32View[index + 5] = aTrans.b;
999
+ float32View[index + 6] = aTrans.d;
1000
+ float32View[index + 7] = aTrans.ty;
1001
+ float32View[index + 8] = frame.x;
1002
+ float32View[index + 9] = frame.y;
1003
+ float32View[index + 10] = frame.x + frame.width;
1004
+ float32View[index + 11] = frame.y + frame.height;
1005
+ uint32View[index + 12] = argb;
1006
+ float32View[index + 13] = textureId;
1007
+ index += 14;
1008
+ }
1009
+ };
1010
+ return SpriteStrangeRenderer;
1011
+ }(MultiTextureSpriteRenderer));
1012
+ PIXI.WebGLRenderer.registerPlugin('sprite_strange', SpriteStrangeRenderer);
1013
+ })(pixi_projection || (pixi_projection = {}));
1014
+ var pixi_projection;
1015
+ (function (pixi_projection) {
1016
+ var tempMat = new PIXI.Matrix();
1017
+ var tempRect = new PIXI.Rectangle();
1018
+ var tempPoint = new PIXI.Point();
1019
+ var StrangeSurface = (function (_super) {
1020
+ __extends(StrangeSurface, _super);
1021
+ function StrangeSurface() {
1022
+ var _this = _super.call(this) || this;
1023
+ _this.params = [0, 0, NaN, NaN];
1024
+ return _this;
1025
+ }
1026
+ StrangeSurface.prototype.clear = function () {
1027
+ var p = this.params;
1028
+ p[0] = 0;
1029
+ p[1] = 0;
1030
+ p[2] = NaN;
1031
+ p[3] = NaN;
1032
+ };
1033
+ StrangeSurface.prototype.setAxisX = function (pos, factor, outTransform) {
1034
+ var x = pos.x, y = pos.y;
1035
+ var d = Math.sqrt(x * x + y * y);
1036
+ var rot = outTransform.rotation;
1037
+ if (rot !== 0) {
1038
+ outTransform.skew._x -= rot;
1039
+ outTransform.skew._y += rot;
1040
+ outTransform.rotation = 0;
1041
+ }
1042
+ outTransform.skew.y = Math.atan2(y, x);
1043
+ var p = this.params;
1044
+ if (factor !== 0) {
1045
+ p[2] = -d * factor;
1046
+ }
1047
+ else {
1048
+ p[2] = NaN;
1049
+ }
1050
+ this._calc01();
1051
+ };
1052
+ StrangeSurface.prototype.setAxisY = function (pos, factor, outTransform) {
1053
+ var x = pos.x, y = pos.y;
1054
+ var d = Math.sqrt(x * x + y * y);
1055
+ var rot = outTransform.rotation;
1056
+ if (rot !== 0) {
1057
+ outTransform.skew._x -= rot;
1058
+ outTransform.skew._y += rot;
1059
+ outTransform.rotation = 0;
1060
+ }
1061
+ outTransform.skew.x = -Math.atan2(y, x) + Math.PI / 2;
1062
+ var p = this.params;
1063
+ if (factor !== 0) {
1064
+ p[3] = -d * factor;
1065
+ }
1066
+ else {
1067
+ p[3] = NaN;
1068
+ }
1069
+ this._calc01();
1070
+ };
1071
+ StrangeSurface.prototype._calc01 = function () {
1072
+ var p = this.params;
1073
+ if (isNaN(p[2])) {
1074
+ p[1] = 0;
1075
+ if (isNaN(p[3])) {
1076
+ p[0] = 0;
1077
+ }
1078
+ else {
1079
+ p[0] = 1.0 / p[3];
1080
+ }
1081
+ }
1082
+ else {
1083
+ if (isNaN(p[3])) {
1084
+ p[0] = 0;
1085
+ p[1] = 1.0 / p[2];
1086
+ }
1087
+ else {
1088
+ var d = 1.0 - p[2] * p[3];
1089
+ p[0] = (1.0 - p[2]) / d;
1090
+ p[1] = (1.0 - p[3]) / d;
1091
+ }
1092
+ }
1093
+ };
1094
+ StrangeSurface.prototype.apply = function (pos, newPos) {
1095
+ newPos = newPos || new PIXI.Point();
1096
+ var aleph = this.params[0], bet = this.params[1], A = this.params[2], B = this.params[3];
1097
+ var u = pos.x, v = pos.y;
1098
+ if (aleph === 0.0) {
1099
+ newPos.y = v * (1 + u * bet);
1100
+ newPos.x = u;
1101
+ }
1102
+ else if (bet === 0.0) {
1103
+ newPos.x = u * (1 + v * aleph);
1104
+ newPos.y = v;
1105
+ }
1106
+ else {
1107
+ var D = A * B - v * u;
1108
+ newPos.x = A * u * (B + v) / D;
1109
+ newPos.y = B * v * (A + u) / D;
1110
+ }
1111
+ return newPos;
1112
+ };
1113
+ StrangeSurface.prototype.applyInverse = function (pos, newPos) {
1114
+ newPos = newPos || new PIXI.Point();
1115
+ var aleph = this.params[0], bet = this.params[1], A = this.params[2], B = this.params[3];
1116
+ var x = pos.x, y = pos.y;
1117
+ if (aleph === 0.0) {
1118
+ newPos.y = y / (1 + x * bet);
1119
+ newPos.x = x;
1120
+ }
1121
+ else if (bet === 0.0) {
1122
+ newPos.x = x * (1 + y * aleph);
1123
+ newPos.y = y;
1124
+ }
1125
+ else {
1126
+ newPos.x = x * (bet + 1) / (bet + 1 + y * aleph);
1127
+ newPos.y = y * (aleph + 1) / (aleph + 1 + x * bet);
1128
+ }
1129
+ return newPos;
1130
+ };
1131
+ StrangeSurface.prototype.mapSprite = function (sprite, quad, outTransform) {
1132
+ var tex = sprite.texture;
1133
+ tempRect.x = -sprite.anchor.x * tex.orig.width;
1134
+ tempRect.y = -sprite.anchor.y * tex.orig.height;
1135
+ tempRect.width = tex.orig.width;
1136
+ tempRect.height = tex.orig.height;
1137
+ return this.mapQuad(tempRect, quad, outTransform || sprite.transform);
1138
+ };
1139
+ StrangeSurface.prototype.mapQuad = function (rect, quad, outTransform) {
1140
+ var ax = -rect.x / rect.width;
1141
+ var ay = -rect.y / rect.height;
1142
+ var ax2 = (1.0 - rect.x) / rect.width;
1143
+ var ay2 = (1.0 - rect.y) / rect.height;
1144
+ var up1x = (quad[0].x * (1.0 - ax) + quad[1].x * ax);
1145
+ var up1y = (quad[0].y * (1.0 - ax) + quad[1].y * ax);
1146
+ var up2x = (quad[0].x * (1.0 - ax2) + quad[1].x * ax2);
1147
+ var up2y = (quad[0].y * (1.0 - ax2) + quad[1].y * ax2);
1148
+ var down1x = (quad[3].x * (1.0 - ax) + quad[2].x * ax);
1149
+ var down1y = (quad[3].y * (1.0 - ax) + quad[2].y * ax);
1150
+ var down2x = (quad[3].x * (1.0 - ax2) + quad[2].x * ax2);
1151
+ var down2y = (quad[3].y * (1.0 - ax2) + quad[2].y * ax2);
1152
+ var x00 = up1x * (1.0 - ay) + down1x * ay;
1153
+ var y00 = up1y * (1.0 - ay) + down1y * ay;
1154
+ var x10 = up2x * (1.0 - ay) + down2x * ay;
1155
+ var y10 = up2y * (1.0 - ay) + down2y * ay;
1156
+ var x01 = up1x * (1.0 - ay2) + down1x * ay2;
1157
+ var y01 = up1y * (1.0 - ay2) + down1y * ay2;
1158
+ var x11 = up2x * (1.0 - ay2) + down2x * ay2;
1159
+ var y11 = up2y * (1.0 - ay2) + down2y * ay2;
1160
+ var mat = tempMat;
1161
+ mat.tx = x00;
1162
+ mat.ty = y00;
1163
+ mat.a = x10 - x00;
1164
+ mat.b = y10 - y00;
1165
+ mat.c = x01 - x00;
1166
+ mat.d = y01 - y00;
1167
+ tempPoint.set(x11, y11);
1168
+ mat.applyInverse(tempPoint, tempPoint);
1169
+ outTransform.setFromMatrix(mat);
1170
+ return this;
1171
+ };
1172
+ StrangeSurface.prototype.fillUniforms = function (uniforms) {
1173
+ var params = this.params;
1174
+ var distortion = uniforms.params || new Float32Array([0, 0, 0, 0]);
1175
+ uniforms.params = distortion;
1176
+ distortion[0] = params[0];
1177
+ distortion[1] = params[1];
1178
+ distortion[2] = params[2];
1179
+ distortion[3] = params[3];
1180
+ };
1181
+ return StrangeSurface;
1182
+ }(pixi_projection.Surface));
1183
+ pixi_projection.StrangeSurface = StrangeSurface;
1184
+ })(pixi_projection || (pixi_projection = {}));
1185
+ var pixi_projection;
1186
+ (function (pixi_projection) {
1187
+ var Sprite2s = (function (_super) {
1188
+ __extends(Sprite2s, _super);
1189
+ function Sprite2s(texture) {
1190
+ var _this = _super.call(this, texture) || this;
1191
+ _this.aTrans = new PIXI.Matrix();
1192
+ _this.proj = new pixi_projection.ProjectionSurface(_this.transform);
1193
+ _this.pluginName = 'sprite_bilinear';
1194
+ return _this;
1195
+ }
1196
+ Sprite2s.prototype._calculateBounds = function () {
1197
+ this.calculateTrimmedVertices();
1198
+ this._bounds.addQuad(this.vertexTrimmedData);
1199
+ };
1200
+ Sprite2s.prototype.calculateVertices = function () {
1201
+ var wid = this.transform._worldID;
1202
+ var tuid = this._texture._updateID;
1203
+ if (this._transformID === wid && this._textureID === tuid) {
1204
+ return;
1205
+ }
1206
+ this._transformID = wid;
1207
+ this._textureID = tuid;
1208
+ var texture = this._texture;
1209
+ var vertexData = this.vertexData;
1210
+ var trim = texture.trim;
1211
+ var orig = texture.orig;
1212
+ var anchor = this._anchor;
1213
+ var w0 = 0;
1214
+ var w1 = 0;
1215
+ var h0 = 0;
1216
+ var h1 = 0;
1217
+ if (trim) {
1218
+ w1 = trim.x - (anchor._x * orig.width);
1219
+ w0 = w1 + trim.width;
1220
+ h1 = trim.y - (anchor._y * orig.height);
1221
+ h0 = h1 + trim.height;
1222
+ }
1223
+ else {
1224
+ w1 = -anchor._x * orig.width;
1225
+ w0 = w1 + orig.width;
1226
+ h1 = -anchor._y * orig.height;
1227
+ h0 = h1 + orig.height;
1228
+ }
1229
+ if (this.proj._surface) {
1230
+ vertexData[0] = w1;
1231
+ vertexData[1] = h1;
1232
+ vertexData[2] = w0;
1233
+ vertexData[3] = h1;
1234
+ vertexData[4] = w0;
1235
+ vertexData[5] = h0;
1236
+ vertexData[6] = w1;
1237
+ vertexData[7] = h0;
1238
+ this.proj._surface.boundsQuad(vertexData, vertexData);
1239
+ }
1240
+ else {
1241
+ var wt = this.transform.worldTransform;
1242
+ var a = wt.a;
1243
+ var b = wt.b;
1244
+ var c = wt.c;
1245
+ var d = wt.d;
1246
+ var tx = wt.tx;
1247
+ var ty = wt.ty;
1248
+ vertexData[0] = (a * w1) + (c * h1) + tx;
1249
+ vertexData[1] = (d * h1) + (b * w1) + ty;
1250
+ vertexData[2] = (a * w0) + (c * h1) + tx;
1251
+ vertexData[3] = (d * h1) + (b * w0) + ty;
1252
+ vertexData[4] = (a * w0) + (c * h0) + tx;
1253
+ vertexData[5] = (d * h0) + (b * w0) + ty;
1254
+ vertexData[6] = (a * w1) + (c * h0) + tx;
1255
+ vertexData[7] = (d * h0) + (b * w1) + ty;
1256
+ if (this.proj._activeProjection) {
1257
+ this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData);
1258
+ }
1259
+ }
1260
+ if (!texture.transform) {
1261
+ texture.transform = new PIXI.TextureMatrix(texture);
1262
+ }
1263
+ texture.transform.update();
1264
+ var aTrans = this.aTrans;
1265
+ aTrans.set(orig.width, 0, 0, orig.height, w1, h1);
1266
+ if (this.proj._surface === null) {
1267
+ aTrans.prepend(this.transform.worldTransform);
1268
+ }
1269
+ aTrans.invert();
1270
+ aTrans.prepend(texture.transform.mapCoord);
1271
+ };
1272
+ Sprite2s.prototype.calculateTrimmedVertices = function () {
1273
+ var wid = this.transform._worldID;
1274
+ var tuid = this._texture._updateID;
1275
+ if (!this.vertexTrimmedData) {
1276
+ this.vertexTrimmedData = new Float32Array(8);
1277
+ }
1278
+ else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) {
1279
+ return;
1280
+ }
1281
+ this._transformTrimmedID = wid;
1282
+ this._textureTrimmedID = tuid;
1283
+ var texture = this._texture;
1284
+ var vertexData = this.vertexTrimmedData;
1285
+ var orig = texture.orig;
1286
+ var anchor = this._anchor;
1287
+ var w1 = -anchor._x * orig.width;
1288
+ var w0 = w1 + orig.width;
1289
+ var h1 = -anchor._y * orig.height;
1290
+ var h0 = h1 + orig.height;
1291
+ if (this.proj._surface) {
1292
+ vertexData[0] = w1;
1293
+ vertexData[1] = h1;
1294
+ vertexData[2] = w0;
1295
+ vertexData[3] = h1;
1296
+ vertexData[4] = w0;
1297
+ vertexData[5] = h0;
1298
+ vertexData[6] = w1;
1299
+ vertexData[7] = h0;
1300
+ this.proj._surface.boundsQuad(vertexData, vertexData, this.transform.worldTransform);
1301
+ }
1302
+ else {
1303
+ var wt = this.transform.worldTransform;
1304
+ var a = wt.a;
1305
+ var b = wt.b;
1306
+ var c = wt.c;
1307
+ var d = wt.d;
1308
+ var tx = wt.tx;
1309
+ var ty = wt.ty;
1310
+ vertexData[0] = (a * w1) + (c * h1) + tx;
1311
+ vertexData[1] = (d * h1) + (b * w1) + ty;
1312
+ vertexData[2] = (a * w0) + (c * h1) + tx;
1313
+ vertexData[3] = (d * h1) + (b * w0) + ty;
1314
+ vertexData[4] = (a * w0) + (c * h0) + tx;
1315
+ vertexData[5] = (d * h0) + (b * w0) + ty;
1316
+ vertexData[6] = (a * w1) + (c * h0) + tx;
1317
+ vertexData[7] = (d * h0) + (b * w1) + ty;
1318
+ if (this.proj._activeProjection) {
1319
+ this.proj._activeProjection.surface.boundsQuad(vertexData, vertexData, this.proj._activeProjection.legacy.worldTransform);
1320
+ }
1321
+ }
1322
+ };
1323
+ Object.defineProperty(Sprite2s.prototype, "worldTransform", {
1324
+ get: function () {
1325
+ return this.proj;
1326
+ },
1327
+ enumerable: true,
1328
+ configurable: true
1329
+ });
1330
+ return Sprite2s;
1331
+ }(PIXI.Sprite));
1332
+ pixi_projection.Sprite2s = Sprite2s;
1333
+ })(pixi_projection || (pixi_projection = {}));
1334
+ var pixi_projection;
1335
+ (function (pixi_projection) {
1336
+ var Text2s = (function (_super) {
1337
+ __extends(Text2s, _super);
1338
+ function Text2s(text, style, canvas) {
1339
+ var _this = _super.call(this, text, style, canvas) || this;
1340
+ _this.aTrans = new PIXI.Matrix();
1341
+ _this.proj = new pixi_projection.ProjectionSurface(_this.transform);
1342
+ _this.pluginName = 'sprite_bilinear';
1343
+ return _this;
1344
+ }
1345
+ Object.defineProperty(Text2s.prototype, "worldTransform", {
1346
+ get: function () {
1347
+ return this.proj;
1348
+ },
1349
+ enumerable: true,
1350
+ configurable: true
1351
+ });
1352
+ return Text2s;
1353
+ }(PIXI.Text));
1354
+ pixi_projection.Text2s = Text2s;
1355
+ Text2s.prototype.calculateVertices = pixi_projection.Sprite2s.prototype.calculateVertices;
1356
+ Text2s.prototype.calculateTrimmedVertices = pixi_projection.Sprite2s.prototype.calculateTrimmedVertices;
1357
+ Text2s.prototype._calculateBounds = pixi_projection.Sprite2s.prototype._calculateBounds;
1358
+ })(pixi_projection || (pixi_projection = {}));
1359
+ var pixi_projection;
1360
+ (function (pixi_projection) {
1361
+ PIXI.Sprite.prototype.convertTo2s = function () {
1362
+ if (this.proj)
1363
+ return;
1364
+ this.pluginName = 'sprite_bilinear';
1365
+ this.aTrans = new PIXI.Matrix();
1366
+ this.calculateVertices = pixi_projection.Sprite2s.prototype.calculateVertices;
1367
+ this.calculateTrimmedVertices = pixi_projection.Sprite2s.prototype.calculateTrimmedVertices;
1368
+ this._calculateBounds = pixi_projection.Sprite2s.prototype._calculateBounds;
1369
+ PIXI.Container.prototype.convertTo2s.call(this);
1370
+ };
1371
+ PIXI.Container.prototype.convertTo2s = function () {
1372
+ if (this.proj)
1373
+ return;
1374
+ this.proj = new pixi_projection.Projection2d(this.transform);
1375
+ Object.defineProperty(this, "worldTransform", {
1376
+ get: function () {
1377
+ return this.proj;
1378
+ },
1379
+ enumerable: true,
1380
+ configurable: true
1381
+ });
1382
+ };
1383
+ PIXI.Container.prototype.convertSubtreeTo2s = function () {
1384
+ this.convertTo2s();
1385
+ for (var i = 0; i < this.children.length; i++) {
1386
+ this.children[i].convertSubtreeTo2s();
1387
+ }
1388
+ };
1389
+ })(pixi_projection || (pixi_projection = {}));
1390
+ var pixi_projection;
1391
+ (function (pixi_projection) {
1392
+ function container2dWorldTransform() {
1393
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
1394
+ }
1395
+ pixi_projection.container2dWorldTransform = container2dWorldTransform;
1396
+ var Container2d = (function (_super) {
1397
+ __extends(Container2d, _super);
1398
+ function Container2d() {
1399
+ var _this = _super.call(this) || this;
1400
+ _this.proj = new pixi_projection.Projection2d(_this.transform);
1401
+ return _this;
1402
+ }
1403
+ Container2d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
1404
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
1405
+ if (from) {
1406
+ position = from.toGlobal(position, point, skipUpdate);
1407
+ }
1408
+ if (!skipUpdate) {
1409
+ this._recursivePostUpdateTransform();
1410
+ }
1411
+ if (step >= pixi_projection.TRANSFORM_STEP.PROJ) {
1412
+ if (!skipUpdate) {
1413
+ this.displayObjectUpdateTransform();
1414
+ }
1415
+ if (this.proj.affine) {
1416
+ return this.transform.worldTransform.applyInverse(point, point);
1417
+ }
1418
+ return this.proj.world.applyInverse(point, point);
1419
+ }
1420
+ if (this.parent) {
1421
+ point = this.parent.worldTransform.applyInverse(position, point);
1422
+ }
1423
+ else {
1424
+ point.copy(position);
1425
+ }
1426
+ if (step === pixi_projection.TRANSFORM_STEP.NONE) {
1427
+ return point;
1428
+ }
1429
+ return this.transform.localTransform.applyInverse(point, point);
1430
+ };
1431
+ Object.defineProperty(Container2d.prototype, "worldTransform", {
1432
+ get: function () {
1433
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
1434
+ },
1435
+ enumerable: true,
1436
+ configurable: true
1437
+ });
1438
+ return Container2d;
1439
+ }(PIXI.Container));
1440
+ pixi_projection.Container2d = Container2d;
1441
+ pixi_projection.container2dToLocal = Container2d.prototype.toLocal;
1442
+ })(pixi_projection || (pixi_projection = {}));
1443
+ var pixi_projection;
1444
+ (function (pixi_projection) {
1445
+ var Point = PIXI.Point;
1446
+ var mat3id = [1, 0, 0, 0, 1, 0, 0, 0, 1];
1447
+ var AFFINE;
1448
+ (function (AFFINE) {
1449
+ AFFINE[AFFINE["NONE"] = 0] = "NONE";
1450
+ AFFINE[AFFINE["FREE"] = 1] = "FREE";
1451
+ AFFINE[AFFINE["AXIS_X"] = 2] = "AXIS_X";
1452
+ AFFINE[AFFINE["AXIS_Y"] = 3] = "AXIS_Y";
1453
+ AFFINE[AFFINE["POINT"] = 4] = "POINT";
1454
+ })(AFFINE = pixi_projection.AFFINE || (pixi_projection.AFFINE = {}));
1455
+ var Matrix2d = (function () {
1456
+ function Matrix2d(backingArray) {
1457
+ this.floatArray = null;
1458
+ this.mat3 = new Float64Array(backingArray || mat3id);
1459
+ }
1460
+ Object.defineProperty(Matrix2d.prototype, "a", {
1461
+ get: function () {
1462
+ return this.mat3[0] / this.mat3[8];
1463
+ },
1464
+ set: function (value) {
1465
+ this.mat3[0] = value * this.mat3[8];
1466
+ },
1467
+ enumerable: true,
1468
+ configurable: true
1469
+ });
1470
+ Object.defineProperty(Matrix2d.prototype, "b", {
1471
+ get: function () {
1472
+ return this.mat3[1] / this.mat3[8];
1473
+ },
1474
+ set: function (value) {
1475
+ this.mat3[1] = value * this.mat3[8];
1476
+ },
1477
+ enumerable: true,
1478
+ configurable: true
1479
+ });
1480
+ Object.defineProperty(Matrix2d.prototype, "c", {
1481
+ get: function () {
1482
+ return this.mat3[3] / this.mat3[8];
1483
+ },
1484
+ set: function (value) {
1485
+ this.mat3[3] = value * this.mat3[8];
1486
+ },
1487
+ enumerable: true,
1488
+ configurable: true
1489
+ });
1490
+ Object.defineProperty(Matrix2d.prototype, "d", {
1491
+ get: function () {
1492
+ return this.mat3[4] / this.mat3[8];
1493
+ },
1494
+ set: function (value) {
1495
+ this.mat3[4] = value * this.mat3[8];
1496
+ },
1497
+ enumerable: true,
1498
+ configurable: true
1499
+ });
1500
+ Object.defineProperty(Matrix2d.prototype, "tx", {
1501
+ get: function () {
1502
+ return this.mat3[6] / this.mat3[8];
1503
+ },
1504
+ set: function (value) {
1505
+ this.mat3[6] = value * this.mat3[8];
1506
+ },
1507
+ enumerable: true,
1508
+ configurable: true
1509
+ });
1510
+ Object.defineProperty(Matrix2d.prototype, "ty", {
1511
+ get: function () {
1512
+ return this.mat3[7] / this.mat3[8];
1513
+ },
1514
+ set: function (value) {
1515
+ this.mat3[7] = value * this.mat3[8];
1516
+ },
1517
+ enumerable: true,
1518
+ configurable: true
1519
+ });
1520
+ Matrix2d.prototype.set = function (a, b, c, d, tx, ty) {
1521
+ var mat3 = this.mat3;
1522
+ mat3[0] = a;
1523
+ mat3[1] = b;
1524
+ mat3[2] = 0;
1525
+ mat3[3] = c;
1526
+ mat3[4] = d;
1527
+ mat3[5] = 0;
1528
+ mat3[6] = tx;
1529
+ mat3[7] = ty;
1530
+ mat3[8] = 1;
1531
+ return this;
1532
+ };
1533
+ Matrix2d.prototype.toArray = function (transpose, out) {
1534
+ if (!this.floatArray) {
1535
+ this.floatArray = new Float32Array(9);
1536
+ }
1537
+ var array = out || this.floatArray;
1538
+ var mat3 = this.mat3;
1539
+ if (transpose) {
1540
+ array[0] = mat3[0];
1541
+ array[1] = mat3[1];
1542
+ array[2] = mat3[2];
1543
+ array[3] = mat3[3];
1544
+ array[4] = mat3[4];
1545
+ array[5] = mat3[5];
1546
+ array[6] = mat3[6];
1547
+ array[7] = mat3[7];
1548
+ array[8] = mat3[8];
1549
+ }
1550
+ else {
1551
+ array[0] = mat3[0];
1552
+ array[1] = mat3[3];
1553
+ array[2] = mat3[6];
1554
+ array[3] = mat3[1];
1555
+ array[4] = mat3[4];
1556
+ array[5] = mat3[7];
1557
+ array[6] = mat3[2];
1558
+ array[7] = mat3[5];
1559
+ array[8] = mat3[8];
1560
+ }
1561
+ return array;
1562
+ };
1563
+ Matrix2d.prototype.apply = function (pos, newPos) {
1564
+ newPos = newPos || new PIXI.Point();
1565
+ var mat3 = this.mat3;
1566
+ var x = pos.x;
1567
+ var y = pos.y;
1568
+ var z = 1.0 / (mat3[2] * x + mat3[5] * y + mat3[8]);
1569
+ newPos.x = z * (mat3[0] * x + mat3[3] * y + mat3[6]);
1570
+ newPos.y = z * (mat3[1] * x + mat3[4] * y + mat3[7]);
1571
+ return newPos;
1572
+ };
1573
+ Matrix2d.prototype.translate = function (tx, ty) {
1574
+ var mat3 = this.mat3;
1575
+ mat3[0] += tx * mat3[2];
1576
+ mat3[1] += ty * mat3[2];
1577
+ mat3[3] += tx * mat3[5];
1578
+ mat3[4] += ty * mat3[5];
1579
+ mat3[6] += tx * mat3[8];
1580
+ mat3[7] += ty * mat3[8];
1581
+ return this;
1582
+ };
1583
+ Matrix2d.prototype.scale = function (x, y) {
1584
+ var mat3 = this.mat3;
1585
+ mat3[0] *= x;
1586
+ mat3[1] *= y;
1587
+ mat3[3] *= x;
1588
+ mat3[4] *= y;
1589
+ mat3[6] *= x;
1590
+ mat3[7] *= y;
1591
+ return this;
1592
+ };
1593
+ Matrix2d.prototype.scaleAndTranslate = function (scaleX, scaleY, tx, ty) {
1594
+ var mat3 = this.mat3;
1595
+ mat3[0] = scaleX * mat3[0] + tx * mat3[2];
1596
+ mat3[1] = scaleY * mat3[1] + ty * mat3[2];
1597
+ mat3[3] = scaleX * mat3[3] + tx * mat3[5];
1598
+ mat3[4] = scaleY * mat3[4] + ty * mat3[5];
1599
+ mat3[6] = scaleX * mat3[6] + tx * mat3[8];
1600
+ mat3[7] = scaleY * mat3[7] + ty * mat3[8];
1601
+ };
1602
+ Matrix2d.prototype.applyInverse = function (pos, newPos) {
1603
+ newPos = newPos || new Point();
1604
+ var a = this.mat3;
1605
+ var x = pos.x;
1606
+ var y = pos.y;
1607
+ var a00 = a[0], a01 = a[3], a02 = a[6], a10 = a[1], a11 = a[4], a12 = a[7], a20 = a[2], a21 = a[5], a22 = a[8];
1608
+ var newX = (a22 * a11 - a12 * a21) * x + (-a22 * a01 + a02 * a21) * y + (a12 * a01 - a02 * a11);
1609
+ var newY = (-a22 * a10 + a12 * a20) * x + (a22 * a00 - a02 * a20) * y + (-a12 * a00 + a02 * a10);
1610
+ var newZ = (a21 * a10 - a11 * a20) * x + (-a21 * a00 + a01 * a20) * y + (a11 * a00 - a01 * a10);
1611
+ newPos.x = newX / newZ;
1612
+ newPos.y = newY / newZ;
1613
+ return newPos;
1614
+ };
1615
+ Matrix2d.prototype.invert = function () {
1616
+ var a = this.mat3;
1617
+ var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], b01 = a22 * a11 - a12 * a21, b11 = -a22 * a10 + a12 * a20, b21 = a21 * a10 - a11 * a20;
1618
+ var det = a00 * b01 + a01 * b11 + a02 * b21;
1619
+ if (!det) {
1620
+ return this;
1621
+ }
1622
+ det = 1.0 / det;
1623
+ a[0] = b01 * det;
1624
+ a[1] = (-a22 * a01 + a02 * a21) * det;
1625
+ a[2] = (a12 * a01 - a02 * a11) * det;
1626
+ a[3] = b11 * det;
1627
+ a[4] = (a22 * a00 - a02 * a20) * det;
1628
+ a[5] = (-a12 * a00 + a02 * a10) * det;
1629
+ a[6] = b21 * det;
1630
+ a[7] = (-a21 * a00 + a01 * a20) * det;
1631
+ a[8] = (a11 * a00 - a01 * a10) * det;
1632
+ return this;
1633
+ };
1634
+ Matrix2d.prototype.identity = function () {
1635
+ var mat3 = this.mat3;
1636
+ mat3[0] = 1;
1637
+ mat3[1] = 0;
1638
+ mat3[2] = 0;
1639
+ mat3[3] = 0;
1640
+ mat3[4] = 1;
1641
+ mat3[5] = 0;
1642
+ mat3[6] = 0;
1643
+ mat3[7] = 0;
1644
+ mat3[8] = 1;
1645
+ return this;
1646
+ };
1647
+ Matrix2d.prototype.clone = function () {
1648
+ return new Matrix2d(this.mat3);
1649
+ };
1650
+ Matrix2d.prototype.copyTo = function (matrix) {
1651
+ var mat3 = this.mat3;
1652
+ var ar2 = matrix.mat3;
1653
+ ar2[0] = mat3[0];
1654
+ ar2[1] = mat3[1];
1655
+ ar2[2] = mat3[2];
1656
+ ar2[3] = mat3[3];
1657
+ ar2[4] = mat3[4];
1658
+ ar2[5] = mat3[5];
1659
+ ar2[6] = mat3[6];
1660
+ ar2[7] = mat3[7];
1661
+ ar2[8] = mat3[8];
1662
+ return matrix;
1663
+ };
1664
+ Matrix2d.prototype.copy = function (matrix, affine) {
1665
+ var mat3 = this.mat3;
1666
+ var d = 1.0 / mat3[8];
1667
+ var tx = mat3[6] * d, ty = mat3[7] * d;
1668
+ matrix.a = (mat3[0] - mat3[2] * tx) * d;
1669
+ matrix.b = (mat3[1] - mat3[2] * ty) * d;
1670
+ matrix.c = (mat3[3] - mat3[5] * tx) * d;
1671
+ matrix.d = (mat3[4] - mat3[5] * ty) * d;
1672
+ matrix.tx = tx;
1673
+ matrix.ty = ty;
1674
+ if (affine >= 2) {
1675
+ if (affine === AFFINE.POINT) {
1676
+ matrix.a = 1;
1677
+ matrix.b = 0;
1678
+ matrix.c = 0;
1679
+ matrix.d = 1;
1680
+ }
1681
+ else if (affine === AFFINE.AXIS_X) {
1682
+ matrix.c = -matrix.b;
1683
+ matrix.d = matrix.a;
1684
+ }
1685
+ else if (affine === AFFINE.AXIS_Y) {
1686
+ matrix.a = matrix.d;
1687
+ matrix.c = -matrix.b;
1688
+ }
1689
+ }
1690
+ };
1691
+ Matrix2d.prototype.copyFrom = function (matrix) {
1692
+ var mat3 = this.mat3;
1693
+ mat3[0] = matrix.a;
1694
+ mat3[1] = matrix.b;
1695
+ mat3[2] = 0;
1696
+ mat3[3] = matrix.c;
1697
+ mat3[4] = matrix.d;
1698
+ mat3[5] = 0;
1699
+ mat3[6] = matrix.tx;
1700
+ mat3[7] = matrix.ty;
1701
+ mat3[8] = 1.0;
1702
+ return this;
1703
+ };
1704
+ Matrix2d.prototype.setToMultLegacy = function (pt, lt) {
1705
+ var out = this.mat3;
1706
+ var b = lt.mat3;
1707
+ var a00 = pt.a, a01 = pt.b, a10 = pt.c, a11 = pt.d, a20 = pt.tx, a21 = pt.ty, b00 = b[0], b01 = b[1], b02 = b[2], b10 = b[3], b11 = b[4], b12 = b[5], b20 = b[6], b21 = b[7], b22 = b[8];
1708
+ out[0] = b00 * a00 + b01 * a10 + b02 * a20;
1709
+ out[1] = b00 * a01 + b01 * a11 + b02 * a21;
1710
+ out[2] = b02;
1711
+ out[3] = b10 * a00 + b11 * a10 + b12 * a20;
1712
+ out[4] = b10 * a01 + b11 * a11 + b12 * a21;
1713
+ out[5] = b12;
1714
+ out[6] = b20 * a00 + b21 * a10 + b22 * a20;
1715
+ out[7] = b20 * a01 + b21 * a11 + b22 * a21;
1716
+ out[8] = b22;
1717
+ return this;
1718
+ };
1719
+ Matrix2d.prototype.setToMultLegacy2 = function (pt, lt) {
1720
+ var out = this.mat3;
1721
+ var a = pt.mat3;
1722
+ var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], b00 = lt.a, b01 = lt.b, b10 = lt.c, b11 = lt.d, b20 = lt.tx, b21 = lt.ty;
1723
+ out[0] = b00 * a00 + b01 * a10;
1724
+ out[1] = b00 * a01 + b01 * a11;
1725
+ out[2] = b00 * a02 + b01 * a12;
1726
+ out[3] = b10 * a00 + b11 * a10;
1727
+ out[4] = b10 * a01 + b11 * a11;
1728
+ out[5] = b10 * a02 + b11 * a12;
1729
+ out[6] = b20 * a00 + b21 * a10 + a20;
1730
+ out[7] = b20 * a01 + b21 * a11 + a21;
1731
+ out[8] = b20 * a02 + b21 * a12 + a22;
1732
+ return this;
1733
+ };
1734
+ Matrix2d.prototype.setToMult = function (pt, lt) {
1735
+ var out = this.mat3;
1736
+ var a = pt.mat3, b = lt.mat3;
1737
+ var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], b00 = b[0], b01 = b[1], b02 = b[2], b10 = b[3], b11 = b[4], b12 = b[5], b20 = b[6], b21 = b[7], b22 = b[8];
1738
+ out[0] = b00 * a00 + b01 * a10 + b02 * a20;
1739
+ out[1] = b00 * a01 + b01 * a11 + b02 * a21;
1740
+ out[2] = b00 * a02 + b01 * a12 + b02 * a22;
1741
+ out[3] = b10 * a00 + b11 * a10 + b12 * a20;
1742
+ out[4] = b10 * a01 + b11 * a11 + b12 * a21;
1743
+ out[5] = b10 * a02 + b11 * a12 + b12 * a22;
1744
+ out[6] = b20 * a00 + b21 * a10 + b22 * a20;
1745
+ out[7] = b20 * a01 + b21 * a11 + b22 * a21;
1746
+ out[8] = b20 * a02 + b21 * a12 + b22 * a22;
1747
+ return this;
1748
+ };
1749
+ Matrix2d.prototype.prepend = function (lt) {
1750
+ if (lt.mat3) {
1751
+ this.setToMult(lt, this);
1752
+ }
1753
+ else {
1754
+ this.setToMultLegacy(lt, this);
1755
+ }
1756
+ };
1757
+ Matrix2d.IDENTITY = new Matrix2d();
1758
+ Matrix2d.TEMP_MATRIX = new Matrix2d();
1759
+ return Matrix2d;
1760
+ }());
1761
+ pixi_projection.Matrix2d = Matrix2d;
1762
+ })(pixi_projection || (pixi_projection = {}));
1763
+ var pixi_projection;
1764
+ (function (pixi_projection) {
1765
+ var t0 = new PIXI.Point();
1766
+ var tt = [new PIXI.Point(), new PIXI.Point(), new PIXI.Point(), new PIXI.Point()];
1767
+ var tempRect = new PIXI.Rectangle();
1768
+ var tempMat = new pixi_projection.Matrix2d();
1769
+ var Projection2d = (function (_super) {
1770
+ __extends(Projection2d, _super);
1771
+ function Projection2d(legacy, enable) {
1772
+ var _this = _super.call(this, legacy, enable) || this;
1773
+ _this.matrix = new pixi_projection.Matrix2d();
1774
+ _this.pivot = new PIXI.ObservablePoint(_this.onChange, _this, 0, 0);
1775
+ _this.reverseLocalOrder = false;
1776
+ _this.local = new pixi_projection.Matrix2d();
1777
+ _this.world = new pixi_projection.Matrix2d();
1778
+ return _this;
1779
+ }
1780
+ Projection2d.prototype.onChange = function () {
1781
+ var pivot = this.pivot;
1782
+ var mat3 = this.matrix.mat3;
1783
+ mat3[6] = -(pivot._x * mat3[0] + pivot._y * mat3[3]);
1784
+ mat3[7] = -(pivot._x * mat3[1] + pivot._y * mat3[4]);
1785
+ this._projID++;
1786
+ };
1787
+ Projection2d.prototype.setAxisX = function (p, factor) {
1788
+ if (factor === void 0) { factor = 1; }
1789
+ var x = p.x, y = p.y;
1790
+ var d = Math.sqrt(x * x + y * y);
1791
+ var mat3 = this.matrix.mat3;
1792
+ mat3[0] = x / d;
1793
+ mat3[1] = y / d;
1794
+ mat3[2] = factor / d;
1795
+ this.onChange();
1796
+ };
1797
+ Projection2d.prototype.setAxisY = function (p, factor) {
1798
+ if (factor === void 0) { factor = 1; }
1799
+ var x = p.x, y = p.y;
1800
+ var d = Math.sqrt(x * x + y * y);
1801
+ var mat3 = this.matrix.mat3;
1802
+ mat3[3] = x / d;
1803
+ mat3[4] = y / d;
1804
+ mat3[5] = factor / d;
1805
+ this.onChange();
1806
+ };
1807
+ Projection2d.prototype.mapSprite = function (sprite, quad) {
1808
+ var tex = sprite.texture;
1809
+ tempRect.x = -sprite.anchor.x * tex.orig.width;
1810
+ tempRect.y = -sprite.anchor.y * tex.orig.height;
1811
+ tempRect.width = tex.orig.width;
1812
+ tempRect.height = tex.orig.height;
1813
+ return this.mapQuad(tempRect, quad);
1814
+ };
1815
+ Projection2d.prototype.mapQuad = function (rect, p) {
1816
+ tt[0].set(rect.x, rect.y);
1817
+ tt[1].set(rect.x + rect.width, rect.y);
1818
+ tt[2].set(rect.x + rect.width, rect.y + rect.height);
1819
+ tt[3].set(rect.x, rect.y + rect.height);
1820
+ var k1 = 1, k2 = 2, k3 = 3;
1821
+ var f = pixi_projection.utils.getIntersectionFactor(p[0], p[2], p[1], p[3], t0);
1822
+ if (f !== 0) {
1823
+ k1 = 1;
1824
+ k2 = 3;
1825
+ k3 = 2;
1826
+ }
1827
+ else {
1828
+ return;
1829
+ }
1830
+ var d0 = Math.sqrt((p[0].x - t0.x) * (p[0].x - t0.x) + (p[0].y - t0.y) * (p[0].y - t0.y));
1831
+ var d1 = Math.sqrt((p[k1].x - t0.x) * (p[k1].x - t0.x) + (p[k1].y - t0.y) * (p[k1].y - t0.y));
1832
+ var d2 = Math.sqrt((p[k2].x - t0.x) * (p[k2].x - t0.x) + (p[k2].y - t0.y) * (p[k2].y - t0.y));
1833
+ var d3 = Math.sqrt((p[k3].x - t0.x) * (p[k3].x - t0.x) + (p[k3].y - t0.y) * (p[k3].y - t0.y));
1834
+ var q0 = (d0 + d3) / d3;
1835
+ var q1 = (d1 + d2) / d2;
1836
+ var q2 = (d1 + d2) / d1;
1837
+ var mat3 = this.matrix.mat3;
1838
+ mat3[0] = tt[0].x * q0;
1839
+ mat3[1] = tt[0].y * q0;
1840
+ mat3[2] = q0;
1841
+ mat3[3] = tt[k1].x * q1;
1842
+ mat3[4] = tt[k1].y * q1;
1843
+ mat3[5] = q1;
1844
+ mat3[6] = tt[k2].x * q2;
1845
+ mat3[7] = tt[k2].y * q2;
1846
+ mat3[8] = q2;
1847
+ this.matrix.invert();
1848
+ mat3 = tempMat.mat3;
1849
+ mat3[0] = p[0].x;
1850
+ mat3[1] = p[0].y;
1851
+ mat3[2] = 1;
1852
+ mat3[3] = p[k1].x;
1853
+ mat3[4] = p[k1].y;
1854
+ mat3[5] = 1;
1855
+ mat3[6] = p[k2].x;
1856
+ mat3[7] = p[k2].y;
1857
+ mat3[8] = 1;
1858
+ this.matrix.setToMult(tempMat, this.matrix);
1859
+ this._projID++;
1860
+ };
1861
+ Projection2d.prototype.updateLocalTransform = function (lt) {
1862
+ if (this._projID !== 0) {
1863
+ if (this.reverseLocalOrder) {
1864
+ this.local.setToMultLegacy2(this.matrix, lt);
1865
+ }
1866
+ else {
1867
+ this.local.setToMultLegacy(lt, this.matrix);
1868
+ }
1869
+ }
1870
+ else {
1871
+ this.local.copyFrom(lt);
1872
+ }
1873
+ };
1874
+ Projection2d.prototype.clear = function () {
1875
+ _super.prototype.clear.call(this);
1876
+ this.matrix.identity();
1877
+ this.pivot.set(0, 0);
1878
+ };
1879
+ return Projection2d;
1880
+ }(pixi_projection.LinearProjection));
1881
+ pixi_projection.Projection2d = Projection2d;
1882
+ })(pixi_projection || (pixi_projection = {}));
1883
+ var pixi_projection;
1884
+ (function (pixi_projection) {
1885
+ var Mesh2d = (function (_super) {
1886
+ __extends(Mesh2d, _super);
1887
+ function Mesh2d(texture, vertices, uvs, indices, drawMode) {
1888
+ var _this = _super.call(this, texture, vertices, uvs, indices, drawMode) || this;
1889
+ _this.proj = new pixi_projection.Projection2d(_this.transform);
1890
+ _this.pluginName = 'mesh2d';
1891
+ return _this;
1892
+ }
1893
+ Mesh2d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
1894
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
1895
+ return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step);
1896
+ };
1897
+ Object.defineProperty(Mesh2d.prototype, "worldTransform", {
1898
+ get: function () {
1899
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
1900
+ },
1901
+ enumerable: true,
1902
+ configurable: true
1903
+ });
1904
+ return Mesh2d;
1905
+ }(PIXI.mesh.Mesh));
1906
+ pixi_projection.Mesh2d = Mesh2d;
1907
+ })(pixi_projection || (pixi_projection = {}));
1908
+ var pixi_projection;
1909
+ (function (pixi_projection) {
1910
+ var shaderVert = "precision highp float;\nattribute 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.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\n gl_Position.z = 0.0;\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n";
1911
+ var shaderFrag = "\nvarying vec2 vTextureCoord;\nuniform vec4 uColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\n}";
1912
+ var Mesh2dRenderer = (function (_super) {
1913
+ __extends(Mesh2dRenderer, _super);
1914
+ function Mesh2dRenderer() {
1915
+ return _super !== null && _super.apply(this, arguments) || this;
1916
+ }
1917
+ Mesh2dRenderer.prototype.onContextChange = function () {
1918
+ var gl = this.renderer.gl;
1919
+ this.shader = new PIXI.Shader(gl, shaderVert, shaderFrag);
1920
+ };
1921
+ return Mesh2dRenderer;
1922
+ }(PIXI.mesh.MeshRenderer));
1923
+ pixi_projection.Mesh2dRenderer = Mesh2dRenderer;
1924
+ PIXI.WebGLRenderer.registerPlugin('mesh2d', Mesh2dRenderer);
1925
+ })(pixi_projection || (pixi_projection = {}));
1926
+ var pixi_projection;
1927
+ (function (pixi_projection) {
1928
+ var Sprite2d = (function (_super) {
1929
+ __extends(Sprite2d, _super);
1930
+ function Sprite2d(texture) {
1931
+ var _this = _super.call(this, texture) || this;
1932
+ _this.proj = new pixi_projection.Projection2d(_this.transform);
1933
+ _this.pluginName = 'sprite2d';
1934
+ _this.vertexData = new Float32Array(12);
1935
+ return _this;
1936
+ }
1937
+ Sprite2d.prototype._calculateBounds = function () {
1938
+ this.calculateTrimmedVertices();
1939
+ this._bounds.addQuad(this.vertexTrimmedData);
1940
+ };
1941
+ Sprite2d.prototype.calculateVertices = function () {
1942
+ if (this.proj._affine) {
1943
+ if (this.vertexData.length != 8) {
1944
+ this.vertexData = new Float32Array(8);
1945
+ }
1946
+ _super.prototype.calculateVertices.call(this);
1947
+ return;
1948
+ }
1949
+ if (this.vertexData.length != 12) {
1950
+ this.vertexData = new Float32Array(12);
1951
+ }
1952
+ var wid = this.transform._worldID;
1953
+ var tuid = this._texture._updateID;
1954
+ if (this._transformID === wid && this._textureID === tuid) {
1955
+ return;
1956
+ }
1957
+ this._transformID = wid;
1958
+ this._textureID = tuid;
1959
+ var texture = this._texture;
1960
+ var wt = this.proj.world.mat3;
1961
+ var vertexData = this.vertexData;
1962
+ var trim = texture.trim;
1963
+ var orig = texture.orig;
1964
+ var anchor = this._anchor;
1965
+ var w0 = 0;
1966
+ var w1 = 0;
1967
+ var h0 = 0;
1968
+ var h1 = 0;
1969
+ if (trim) {
1970
+ w1 = trim.x - (anchor._x * orig.width);
1971
+ w0 = w1 + trim.width;
1972
+ h1 = trim.y - (anchor._y * orig.height);
1973
+ h0 = h1 + trim.height;
1974
+ }
1975
+ else {
1976
+ w1 = -anchor._x * orig.width;
1977
+ w0 = w1 + orig.width;
1978
+ h1 = -anchor._y * orig.height;
1979
+ h0 = h1 + orig.height;
1980
+ }
1981
+ vertexData[0] = (wt[0] * w1) + (wt[3] * h1) + wt[6];
1982
+ vertexData[1] = (wt[1] * w1) + (wt[4] * h1) + wt[7];
1983
+ vertexData[2] = (wt[2] * w1) + (wt[5] * h1) + wt[8];
1984
+ vertexData[3] = (wt[0] * w0) + (wt[3] * h1) + wt[6];
1985
+ vertexData[4] = (wt[1] * w0) + (wt[4] * h1) + wt[7];
1986
+ vertexData[5] = (wt[2] * w0) + (wt[5] * h1) + wt[8];
1987
+ vertexData[6] = (wt[0] * w0) + (wt[3] * h0) + wt[6];
1988
+ vertexData[7] = (wt[1] * w0) + (wt[4] * h0) + wt[7];
1989
+ vertexData[8] = (wt[2] * w0) + (wt[5] * h0) + wt[8];
1990
+ vertexData[9] = (wt[0] * w1) + (wt[3] * h0) + wt[6];
1991
+ vertexData[10] = (wt[1] * w1) + (wt[4] * h0) + wt[7];
1992
+ vertexData[11] = (wt[2] * w1) + (wt[5] * h0) + wt[8];
1993
+ };
1994
+ Sprite2d.prototype.calculateTrimmedVertices = function () {
1995
+ if (this.proj._affine) {
1996
+ _super.prototype.calculateTrimmedVertices.call(this);
1997
+ return;
1998
+ }
1999
+ var wid = this.transform._worldID;
2000
+ var tuid = this._texture._updateID;
2001
+ if (!this.vertexTrimmedData) {
2002
+ this.vertexTrimmedData = new Float32Array(8);
2003
+ }
2004
+ else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) {
2005
+ return;
2006
+ }
2007
+ this._transformTrimmedID = wid;
2008
+ this._textureTrimmedID = tuid;
2009
+ var texture = this._texture;
2010
+ var vertexData = this.vertexTrimmedData;
2011
+ var orig = texture.orig;
2012
+ var anchor = this._anchor;
2013
+ var wt = this.proj.world.mat3;
2014
+ var w1 = -anchor._x * orig.width;
2015
+ var w0 = w1 + orig.width;
2016
+ var h1 = -anchor._y * orig.height;
2017
+ var h0 = h1 + orig.height;
2018
+ var z = 1.0 / (wt[2] * w1 + wt[5] * h1 + wt[8]);
2019
+ vertexData[0] = z * ((wt[0] * w1) + (wt[3] * h1) + wt[6]);
2020
+ vertexData[1] = z * ((wt[1] * w1) + (wt[4] * h1) + wt[7]);
2021
+ z = 1.0 / (wt[2] * w0 + wt[5] * h1 + wt[8]);
2022
+ vertexData[2] = z * ((wt[0] * w0) + (wt[3] * h1) + wt[6]);
2023
+ vertexData[3] = z * ((wt[1] * w0) + (wt[4] * h1) + wt[7]);
2024
+ z = 1.0 / (wt[2] * w0 + wt[5] * h0 + wt[8]);
2025
+ vertexData[4] = z * ((wt[0] * w0) + (wt[3] * h0) + wt[6]);
2026
+ vertexData[5] = z * ((wt[1] * w0) + (wt[4] * h0) + wt[7]);
2027
+ z = 1.0 / (wt[2] * w1 + wt[5] * h0 + wt[8]);
2028
+ vertexData[6] = z * ((wt[0] * w1) + (wt[3] * h0) + wt[6]);
2029
+ vertexData[7] = z * ((wt[1] * w1) + (wt[4] * h0) + wt[7]);
2030
+ };
2031
+ Sprite2d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
2032
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
2033
+ return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step);
2034
+ };
2035
+ Object.defineProperty(Sprite2d.prototype, "worldTransform", {
2036
+ get: function () {
2037
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
2038
+ },
2039
+ enumerable: true,
2040
+ configurable: true
2041
+ });
2042
+ return Sprite2d;
2043
+ }(PIXI.Sprite));
2044
+ pixi_projection.Sprite2d = Sprite2d;
2045
+ })(pixi_projection || (pixi_projection = {}));
2046
+ var pixi_projection;
2047
+ (function (pixi_projection) {
2048
+ var MultiTextureSpriteRenderer = pixi_projection.webgl.MultiTextureSpriteRenderer;
2049
+ var Sprite2dRenderer = (function (_super) {
2050
+ __extends(Sprite2dRenderer, _super);
2051
+ function Sprite2dRenderer() {
2052
+ var _this = _super !== null && _super.apply(this, arguments) || this;
2053
+ _this.shaderVert = "precision highp float;\nattribute vec3 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position.xyw = projectionMatrix * aVertexPosition;\n gl_Position.z = 0.0;\n \n vTextureCoord = aTextureCoord;\n vTextureId = aTextureId;\n vColor = aColor;\n}\n";
2054
+ _this.shaderFrag = "\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\nuniform sampler2D uSamplers[%count%];\n\nvoid main(void){\nvec4 color;\nvec2 textureCoord = vTextureCoord;\nfloat textureId = floor(vTextureId+0.5);\n%forloop%\ngl_FragColor = color * vColor;\n}";
2055
+ return _this;
2056
+ }
2057
+ Sprite2dRenderer.prototype.createVao = function (vertexBuffer) {
2058
+ var attrs = this.shader.attributes;
2059
+ this.vertSize = 6;
2060
+ this.vertByteSize = this.vertSize * 4;
2061
+ var gl = this.renderer.gl;
2062
+ var vao = this.renderer.createVao()
2063
+ .addIndex(this.indexBuffer)
2064
+ .addAttribute(vertexBuffer, attrs.aVertexPosition, gl.FLOAT, false, this.vertByteSize, 0)
2065
+ .addAttribute(vertexBuffer, attrs.aTextureCoord, gl.UNSIGNED_SHORT, true, this.vertByteSize, 3 * 4)
2066
+ .addAttribute(vertexBuffer, attrs.aColor, gl.UNSIGNED_BYTE, true, this.vertByteSize, 4 * 4);
2067
+ if (attrs.aTextureId) {
2068
+ vao.addAttribute(vertexBuffer, attrs.aTextureId, gl.FLOAT, false, this.vertByteSize, 5 * 4);
2069
+ }
2070
+ return vao;
2071
+ };
2072
+ Sprite2dRenderer.prototype.fillVertices = function (float32View, uint32View, index, sprite, argb, textureId) {
2073
+ var vertexData = sprite.vertexData;
2074
+ var uvs = sprite._texture._uvs.uvsUint32;
2075
+ if (vertexData.length === 8) {
2076
+ if (this.renderer.roundPixels) {
2077
+ var resolution = this.renderer.resolution;
2078
+ float32View[index] = ((vertexData[0] * resolution) | 0) / resolution;
2079
+ float32View[index + 1] = ((vertexData[1] * resolution) | 0) / resolution;
2080
+ float32View[index + 2] = 1.0;
2081
+ float32View[index + 6] = ((vertexData[2] * resolution) | 0) / resolution;
2082
+ float32View[index + 7] = ((vertexData[3] * resolution) | 0) / resolution;
2083
+ float32View[index + 8] = 1.0;
2084
+ float32View[index + 12] = ((vertexData[4] * resolution) | 0) / resolution;
2085
+ float32View[index + 13] = ((vertexData[5] * resolution) | 0) / resolution;
2086
+ float32View[index + 14] = 1.0;
2087
+ float32View[index + 18] = ((vertexData[6] * resolution) | 0) / resolution;
2088
+ float32View[index + 19] = ((vertexData[7] * resolution) | 0) / resolution;
2089
+ float32View[index + 20] = 1.0;
2090
+ }
2091
+ else {
2092
+ float32View[index] = vertexData[0];
2093
+ float32View[index + 1] = vertexData[1];
2094
+ float32View[index + 2] = 1.0;
2095
+ float32View[index + 6] = vertexData[2];
2096
+ float32View[index + 7] = vertexData[3];
2097
+ float32View[index + 8] = 1.0;
2098
+ float32View[index + 12] = vertexData[4];
2099
+ float32View[index + 13] = vertexData[5];
2100
+ float32View[index + 14] = 1.0;
2101
+ float32View[index + 18] = vertexData[6];
2102
+ float32View[index + 19] = vertexData[7];
2103
+ float32View[index + 20] = 1.0;
2104
+ }
2105
+ }
2106
+ else {
2107
+ float32View[index] = vertexData[0];
2108
+ float32View[index + 1] = vertexData[1];
2109
+ float32View[index + 2] = vertexData[2];
2110
+ float32View[index + 6] = vertexData[3];
2111
+ float32View[index + 7] = vertexData[4];
2112
+ float32View[index + 8] = vertexData[5];
2113
+ float32View[index + 12] = vertexData[6];
2114
+ float32View[index + 13] = vertexData[7];
2115
+ float32View[index + 14] = vertexData[8];
2116
+ float32View[index + 18] = vertexData[9];
2117
+ float32View[index + 19] = vertexData[10];
2118
+ float32View[index + 20] = vertexData[11];
2119
+ }
2120
+ uint32View[index + 3] = uvs[0];
2121
+ uint32View[index + 9] = uvs[1];
2122
+ uint32View[index + 15] = uvs[2];
2123
+ uint32View[index + 21] = uvs[3];
2124
+ uint32View[index + 4] = uint32View[index + 10] = uint32View[index + 16] = uint32View[index + 22] = argb;
2125
+ float32View[index + 5] = float32View[index + 11] = float32View[index + 17] = float32View[index + 23] = textureId;
2126
+ };
2127
+ return Sprite2dRenderer;
2128
+ }(MultiTextureSpriteRenderer));
2129
+ PIXI.WebGLRenderer.registerPlugin('sprite2d', Sprite2dRenderer);
2130
+ })(pixi_projection || (pixi_projection = {}));
2131
+ var pixi_projection;
2132
+ (function (pixi_projection) {
2133
+ var Text2d = (function (_super) {
2134
+ __extends(Text2d, _super);
2135
+ function Text2d(text, style, canvas) {
2136
+ var _this = _super.call(this, text, style, canvas) || this;
2137
+ _this.proj = new pixi_projection.Projection2d(_this.transform);
2138
+ _this.pluginName = 'sprite2d';
2139
+ _this.vertexData = new Float32Array(12);
2140
+ return _this;
2141
+ }
2142
+ Object.defineProperty(Text2d.prototype, "worldTransform", {
2143
+ get: function () {
2144
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
2145
+ },
2146
+ enumerable: true,
2147
+ configurable: true
2148
+ });
2149
+ return Text2d;
2150
+ }(PIXI.Text));
2151
+ pixi_projection.Text2d = Text2d;
2152
+ Text2d.prototype.calculateVertices = pixi_projection.Sprite2d.prototype.calculateVertices;
2153
+ Text2d.prototype.calculateTrimmedVertices = pixi_projection.Sprite2d.prototype.calculateTrimmedVertices;
2154
+ Text2d.prototype._calculateBounds = pixi_projection.Sprite2d.prototype._calculateBounds;
2155
+ })(pixi_projection || (pixi_projection = {}));
2156
+ var pixi_projection;
2157
+ (function (pixi_projection) {
2158
+ function convertTo2d() {
2159
+ if (this.proj)
2160
+ return;
2161
+ this.proj = new pixi_projection.Projection2d(this.transform);
2162
+ this.toLocal = pixi_projection.Container2d.prototype.toLocal;
2163
+ Object.defineProperty(this, "worldTransform", {
2164
+ get: pixi_projection.container2dWorldTransform,
2165
+ enumerable: true,
2166
+ configurable: true
2167
+ });
2168
+ }
2169
+ PIXI.Container.prototype.convertTo2d = convertTo2d;
2170
+ PIXI.Sprite.prototype.convertTo2d = function () {
2171
+ if (this.proj)
2172
+ return;
2173
+ this.calculateVertices = pixi_projection.Sprite2d.prototype.calculateVertices;
2174
+ this.calculateTrimmedVertices = pixi_projection.Sprite2d.prototype.calculateTrimmedVertices;
2175
+ this._calculateBounds = pixi_projection.Sprite2d.prototype._calculateBounds;
2176
+ this.pluginName = 'sprite2d';
2177
+ this.vertexData = new Float32Array(12);
2178
+ convertTo2d.call(this);
2179
+ };
2180
+ PIXI.mesh.Mesh.prototype.convertTo2d = function () {
2181
+ if (this.proj)
2182
+ return;
2183
+ this.pluginName = 'mesh2d';
2184
+ convertTo2d.call(this);
2185
+ };
2186
+ PIXI.Container.prototype.convertSubtreeTo2d = function () {
2187
+ this.convertTo2d();
2188
+ for (var i = 0; i < this.children.length; i++) {
2189
+ this.children[i].convertSubtreeTo2d();
2190
+ }
2191
+ };
2192
+ })(pixi_projection || (pixi_projection = {}));
2193
+ var pixi_projection;
2194
+ (function (pixi_projection) {
2195
+ var tempTransform = new PIXI.TransformStatic();
2196
+ var TilingSprite2d = (function (_super) {
2197
+ __extends(TilingSprite2d, _super);
2198
+ function TilingSprite2d(texture, width, height) {
2199
+ var _this = _super.call(this, texture, width, height) || this;
2200
+ _this.tileProj = new pixi_projection.Projection2d(_this.tileTransform);
2201
+ _this.tileProj.reverseLocalOrder = true;
2202
+ _this.proj = new pixi_projection.Projection2d(_this.transform);
2203
+ _this.pluginName = 'tilingSprite2d';
2204
+ _this.uvRespectAnchor = true;
2205
+ return _this;
2206
+ }
2207
+ Object.defineProperty(TilingSprite2d.prototype, "worldTransform", {
2208
+ get: function () {
2209
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
2210
+ },
2211
+ enumerable: true,
2212
+ configurable: true
2213
+ });
2214
+ TilingSprite2d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
2215
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
2216
+ return pixi_projection.container2dToLocal.call(this, position, from, point, skipUpdate, step);
2217
+ };
2218
+ TilingSprite2d.prototype._renderWebGL = function (renderer) {
2219
+ var texture = this._texture;
2220
+ if (!texture || !texture.valid) {
2221
+ return;
2222
+ }
2223
+ this.tileTransform.updateTransform(tempTransform);
2224
+ this.uvTransform.update();
2225
+ renderer.setObjectRenderer(renderer.plugins[this.pluginName]);
2226
+ renderer.plugins[this.pluginName].render(this);
2227
+ };
2228
+ return TilingSprite2d;
2229
+ }(PIXI.extras.TilingSprite));
2230
+ pixi_projection.TilingSprite2d = TilingSprite2d;
2231
+ })(pixi_projection || (pixi_projection = {}));
2232
+ var pixi_projection;
2233
+ (function (pixi_projection) {
2234
+ var shaderVert = "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec3 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position.xyw = projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0);\n\n vTextureCoord = uTransform * vec3(aTextureCoord, 1.0);\n}\n";
2235
+ var shaderFrag = "\nvarying vec3 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 = mod(vTextureCoord.xy / vTextureCoord.z - uClampOffset, vec2(1.0, 1.0)) + uClampOffset;\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n vec4 sample = texture2D(uSampler, coord);\n gl_FragColor = sample * uColor;\n}\n";
2236
+ var shaderSimpleFrag = "\n\tvarying vec3 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n vec4 sample = texture2D(uSampler, vTextureCoord.xy / vTextureCoord.z);\n gl_FragColor = sample * uColor;\n}\n";
2237
+ var tempMat = new pixi_projection.Matrix2d();
2238
+ var WRAP_MODES = PIXI.WRAP_MODES;
2239
+ var utils = PIXI.utils;
2240
+ var TilingSprite2dRenderer = (function (_super) {
2241
+ __extends(TilingSprite2dRenderer, _super);
2242
+ function TilingSprite2dRenderer() {
2243
+ return _super !== null && _super.apply(this, arguments) || this;
2244
+ }
2245
+ TilingSprite2dRenderer.prototype.onContextChange = function () {
2246
+ var gl = this.renderer.gl;
2247
+ this.shader = new PIXI.Shader(gl, shaderVert, shaderFrag);
2248
+ this.simpleShader = new PIXI.Shader(gl, shaderVert, shaderSimpleFrag);
2249
+ this.renderer.bindVao(null);
2250
+ this.quad = new PIXI.Quad(gl, this.renderer.state.attribState);
2251
+ this.quad.initVao(this.shader);
2252
+ };
2253
+ TilingSprite2dRenderer.prototype.render = function (ts) {
2254
+ var renderer = this.renderer;
2255
+ var quad = this.quad;
2256
+ renderer.bindVao(quad.vao);
2257
+ var vertices = quad.vertices;
2258
+ vertices[0] = vertices[6] = (ts._width) * -ts.anchor.x;
2259
+ vertices[1] = vertices[3] = ts._height * -ts.anchor.y;
2260
+ vertices[2] = vertices[4] = (ts._width) * (1.0 - ts.anchor.x);
2261
+ vertices[5] = vertices[7] = ts._height * (1.0 - ts.anchor.y);
2262
+ if (ts.uvRespectAnchor) {
2263
+ vertices = quad.uvs;
2264
+ vertices[0] = vertices[6] = -ts.anchor.x;
2265
+ vertices[1] = vertices[3] = -ts.anchor.y;
2266
+ vertices[2] = vertices[4] = 1.0 - ts.anchor.x;
2267
+ vertices[5] = vertices[7] = 1.0 - ts.anchor.y;
2268
+ }
2269
+ quad.upload();
2270
+ var tex = ts._texture;
2271
+ var baseTex = tex.baseTexture;
2272
+ var lt = ts.tileProj.world;
2273
+ var uv = ts.uvTransform;
2274
+ var isSimple = baseTex.isPowerOfTwo
2275
+ && tex.frame.width === baseTex.width && tex.frame.height === baseTex.height;
2276
+ if (isSimple) {
2277
+ if (!baseTex._glTextures[renderer.CONTEXT_UID]) {
2278
+ if (baseTex.wrapMode === WRAP_MODES.CLAMP) {
2279
+ baseTex.wrapMode = WRAP_MODES.REPEAT;
2280
+ }
2281
+ }
2282
+ else {
2283
+ isSimple = baseTex.wrapMode !== WRAP_MODES.CLAMP;
2284
+ }
2285
+ }
2286
+ var shader = isSimple ? this.simpleShader : this.shader;
2287
+ renderer.bindShader(shader);
2288
+ tempMat.identity();
2289
+ tempMat.scale(tex.width, tex.height);
2290
+ tempMat.prepend(lt);
2291
+ tempMat.scale(1.0 / ts._width, 1.0 / ts._height);
2292
+ tempMat.invert();
2293
+ if (isSimple) {
2294
+ tempMat.prepend(uv.mapCoord);
2295
+ }
2296
+ else {
2297
+ shader.uniforms.uMapCoord = uv.mapCoord.toArray(true);
2298
+ shader.uniforms.uClampFrame = uv.uClampFrame;
2299
+ shader.uniforms.uClampOffset = uv.uClampOffset;
2300
+ }
2301
+ shader.uniforms.uTransform = tempMat.toArray(true);
2302
+ shader.uniforms.uColor = utils.premultiplyTintToRgba(ts.tint, ts.worldAlpha, shader.uniforms.uColor, baseTex.premultipliedAlpha);
2303
+ shader.uniforms.translationMatrix = ts.proj.world.toArray(true);
2304
+ shader.uniforms.uSampler = renderer.bindTexture(tex);
2305
+ renderer.setBlendMode(utils.correctBlendMode(ts.blendMode, baseTex.premultipliedAlpha));
2306
+ quad.vao.draw(this.renderer.gl.TRIANGLES, 6, 0);
2307
+ };
2308
+ return TilingSprite2dRenderer;
2309
+ }(PIXI.extras.TilingSpriteRenderer));
2310
+ pixi_projection.TilingSprite2dRenderer = TilingSprite2dRenderer;
2311
+ PIXI.WebGLRenderer.registerPlugin('tilingSprite2d', TilingSprite2dRenderer);
2312
+ })(pixi_projection || (pixi_projection = {}));
2313
+ var pixi_projection;
2314
+ (function (pixi_projection) {
2315
+ var ProjectionsManager = (function () {
2316
+ function ProjectionsManager(renderer) {
2317
+ var _this = this;
2318
+ this.onContextChange = function (gl) {
2319
+ _this.gl = gl;
2320
+ _this.renderer.maskManager.pushSpriteMask = pushSpriteMask;
2321
+ };
2322
+ this.renderer = renderer;
2323
+ renderer.on('context', this.onContextChange);
2324
+ }
2325
+ ProjectionsManager.prototype.destroy = function () {
2326
+ this.renderer.off('context', this.onContextChange);
2327
+ };
2328
+ return ProjectionsManager;
2329
+ }());
2330
+ pixi_projection.ProjectionsManager = ProjectionsManager;
2331
+ function pushSpriteMask(target, maskData) {
2332
+ var alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex];
2333
+ if (!alphaMaskFilter) {
2334
+ alphaMaskFilter = this.alphaMaskPool[this.alphaMaskIndex] = [new pixi_projection.SpriteMaskFilter2d(maskData)];
2335
+ }
2336
+ alphaMaskFilter[0].resolution = this.renderer.resolution;
2337
+ alphaMaskFilter[0].maskSprite = maskData;
2338
+ target.filterArea = maskData.getBounds(true);
2339
+ this.renderer.filterManager.pushFilter(target, alphaMaskFilter);
2340
+ this.alphaMaskIndex++;
2341
+ }
2342
+ PIXI.WebGLRenderer.registerPlugin('projections', ProjectionsManager);
2343
+ })(pixi_projection || (pixi_projection = {}));
2344
+ var pixi_projection;
2345
+ (function (pixi_projection) {
2346
+ var spriteMaskVert = "\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec3 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n\tgl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n\tvTextureCoord = aTextureCoord;\n\tvMaskCoord = otherMatrix * vec3( aTextureCoord, 1.0);\n}\n";
2347
+ var spriteMaskFrag = "\nvarying vec3 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float alpha;\nuniform sampler2D mask;\n\nvoid main(void)\n{\n vec2 uv = vMaskCoord.xy / vMaskCoord.z;\n \n vec2 text = abs( uv - 0.5 );\n text = step(0.5, text);\n\n float clip = 1.0 - max(text.y, text.x);\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 masky = texture2D(mask, uv);\n\n original *= (masky.r * masky.a * alpha * clip);\n\n gl_FragColor = original;\n}\n";
2348
+ var tempMat = new pixi_projection.Matrix2d();
2349
+ var SpriteMaskFilter2d = (function (_super) {
2350
+ __extends(SpriteMaskFilter2d, _super);
2351
+ function SpriteMaskFilter2d(sprite) {
2352
+ var _this = _super.call(this, spriteMaskVert, spriteMaskFrag) || this;
2353
+ _this.maskMatrix = new pixi_projection.Matrix2d();
2354
+ sprite.renderable = false;
2355
+ _this.maskSprite = sprite;
2356
+ return _this;
2357
+ }
2358
+ SpriteMaskFilter2d.prototype.apply = function (filterManager, input, output, clear, currentState) {
2359
+ var maskSprite = this.maskSprite;
2360
+ this.uniforms.mask = maskSprite.texture;
2361
+ this.uniforms.otherMatrix = SpriteMaskFilter2d.calculateSpriteMatrix(currentState, this.maskMatrix, maskSprite);
2362
+ this.uniforms.alpha = maskSprite.worldAlpha;
2363
+ filterManager.applyFilter(this, input, output);
2364
+ };
2365
+ SpriteMaskFilter2d.calculateSpriteMatrix = function (currentState, mappedMatrix, sprite) {
2366
+ var proj = sprite.proj;
2367
+ var filterArea = currentState.sourceFrame;
2368
+ var textureSize = currentState.renderTarget.size;
2369
+ var worldTransform = proj && !proj._affine ? proj.world.copyTo(tempMat) : tempMat.copyFrom(sprite.transform.worldTransform);
2370
+ var texture = sprite.texture.orig;
2371
+ mappedMatrix.set(textureSize.width, 0, 0, textureSize.height, filterArea.x, filterArea.y);
2372
+ worldTransform.invert();
2373
+ mappedMatrix.setToMult(worldTransform, mappedMatrix);
2374
+ mappedMatrix.scaleAndTranslate(1.0 / texture.width, 1.0 / texture.height, sprite.anchor.x, sprite.anchor.y);
2375
+ return mappedMatrix;
2376
+ };
2377
+ return SpriteMaskFilter2d;
2378
+ }(PIXI.Filter));
2379
+ pixi_projection.SpriteMaskFilter2d = SpriteMaskFilter2d;
2380
+ })(pixi_projection || (pixi_projection = {}));
2381
+ var pixi_projection;
2382
+ (function (pixi_projection) {
2383
+ function container3dWorldTransform() {
2384
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
2385
+ }
2386
+ pixi_projection.container3dWorldTransform = container3dWorldTransform;
2387
+ var Container3d = (function (_super) {
2388
+ __extends(Container3d, _super);
2389
+ function Container3d() {
2390
+ var _this = _super.call(this) || this;
2391
+ _this.proj = new pixi_projection.Projection3d(_this.transform);
2392
+ return _this;
2393
+ }
2394
+ Container3d.prototype.isFrontFace = function (forceUpdate) {
2395
+ if (forceUpdate === void 0) { forceUpdate = false; }
2396
+ if (forceUpdate) {
2397
+ this._recursivePostUpdateTransform();
2398
+ this.displayObjectUpdateTransform();
2399
+ }
2400
+ var mat = this.proj.world.mat4;
2401
+ var dx1 = mat[0] * mat[15] - mat[3] * mat[12];
2402
+ var dy1 = mat[1] * mat[15] - mat[3] * mat[13];
2403
+ var dx2 = mat[4] * mat[15] - mat[7] * mat[12];
2404
+ var dy2 = mat[5] * mat[15] - mat[7] * mat[13];
2405
+ return dx1 * dy2 - dx2 * dy1 > 0;
2406
+ };
2407
+ Container3d.prototype.getDepth = function (forceUpdate) {
2408
+ if (forceUpdate === void 0) { forceUpdate = false; }
2409
+ if (forceUpdate) {
2410
+ this._recursivePostUpdateTransform();
2411
+ this.displayObjectUpdateTransform();
2412
+ }
2413
+ var mat4 = this.proj.world.mat4;
2414
+ return mat4[14] / mat4[15];
2415
+ };
2416
+ Container3d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
2417
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
2418
+ if (from) {
2419
+ position = from.toGlobal(position, point, skipUpdate);
2420
+ }
2421
+ if (!skipUpdate) {
2422
+ this._recursivePostUpdateTransform();
2423
+ }
2424
+ if (step === pixi_projection.TRANSFORM_STEP.ALL) {
2425
+ if (!skipUpdate) {
2426
+ this.displayObjectUpdateTransform();
2427
+ }
2428
+ if (this.proj.affine) {
2429
+ return this.transform.worldTransform.applyInverse(point, point);
2430
+ }
2431
+ return this.proj.world.applyInverse(point, point);
2432
+ }
2433
+ if (this.parent) {
2434
+ point = this.parent.worldTransform.applyInverse(position, point);
2435
+ }
2436
+ else {
2437
+ point.copy(position);
2438
+ }
2439
+ if (step === pixi_projection.TRANSFORM_STEP.NONE) {
2440
+ return point;
2441
+ }
2442
+ point = this.transform.localTransform.applyInverse(point, point);
2443
+ if (step === pixi_projection.TRANSFORM_STEP.PROJ && this.proj.cameraMode) {
2444
+ point = this.proj.cameraMatrix.applyInverse(point, point);
2445
+ }
2446
+ return point;
2447
+ };
2448
+ Object.defineProperty(Container3d.prototype, "worldTransform", {
2449
+ get: function () {
2450
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
2451
+ },
2452
+ enumerable: true,
2453
+ configurable: true
2454
+ });
2455
+ Object.defineProperty(Container3d.prototype, "position3d", {
2456
+ get: function () {
2457
+ return this.proj.position;
2458
+ },
2459
+ set: function (value) {
2460
+ this.proj.position.copy(value);
2461
+ },
2462
+ enumerable: true,
2463
+ configurable: true
2464
+ });
2465
+ Object.defineProperty(Container3d.prototype, "scale3d", {
2466
+ get: function () {
2467
+ return this.proj.scale;
2468
+ },
2469
+ set: function (value) {
2470
+ this.proj.scale.copy(value);
2471
+ },
2472
+ enumerable: true,
2473
+ configurable: true
2474
+ });
2475
+ Object.defineProperty(Container3d.prototype, "euler", {
2476
+ get: function () {
2477
+ return this.proj.euler;
2478
+ },
2479
+ set: function (value) {
2480
+ this.proj.euler.copy(value);
2481
+ },
2482
+ enumerable: true,
2483
+ configurable: true
2484
+ });
2485
+ Object.defineProperty(Container3d.prototype, "pivot3d", {
2486
+ get: function () {
2487
+ return this.proj.pivot;
2488
+ },
2489
+ set: function (value) {
2490
+ this.proj.pivot.copy(value);
2491
+ },
2492
+ enumerable: true,
2493
+ configurable: true
2494
+ });
2495
+ return Container3d;
2496
+ }(PIXI.Container));
2497
+ pixi_projection.Container3d = Container3d;
2498
+ pixi_projection.container3dToLocal = Container3d.prototype.toLocal;
2499
+ pixi_projection.container3dGetDepth = Container3d.prototype.getDepth;
2500
+ pixi_projection.container3dIsFrontFace = Container3d.prototype.isFrontFace;
2501
+ })(pixi_projection || (pixi_projection = {}));
2502
+ var pixi_projection;
2503
+ (function (pixi_projection) {
2504
+ var Camera3d = (function (_super) {
2505
+ __extends(Camera3d, _super);
2506
+ function Camera3d() {
2507
+ var _this = _super.call(this) || this;
2508
+ _this._far = 0;
2509
+ _this._near = 0;
2510
+ _this._focus = 0;
2511
+ _this._orthographic = false;
2512
+ _this.proj.cameraMode = true;
2513
+ _this.setPlanes(400, 10, 10000, false);
2514
+ return _this;
2515
+ }
2516
+ Object.defineProperty(Camera3d.prototype, "far", {
2517
+ get: function () {
2518
+ return this._far;
2519
+ },
2520
+ enumerable: true,
2521
+ configurable: true
2522
+ });
2523
+ Object.defineProperty(Camera3d.prototype, "near", {
2524
+ get: function () {
2525
+ return this._near;
2526
+ },
2527
+ enumerable: true,
2528
+ configurable: true
2529
+ });
2530
+ Object.defineProperty(Camera3d.prototype, "focus", {
2531
+ get: function () {
2532
+ return this._focus;
2533
+ },
2534
+ enumerable: true,
2535
+ configurable: true
2536
+ });
2537
+ Object.defineProperty(Camera3d.prototype, "ortographic", {
2538
+ get: function () {
2539
+ return this._orthographic;
2540
+ },
2541
+ enumerable: true,
2542
+ configurable: true
2543
+ });
2544
+ Camera3d.prototype.setPlanes = function (focus, near, far, orthographic) {
2545
+ if (near === void 0) { near = 10; }
2546
+ if (far === void 0) { far = 10000; }
2547
+ if (orthographic === void 0) { orthographic = false; }
2548
+ this._focus = focus;
2549
+ this._near = near;
2550
+ this._far = far;
2551
+ this._orthographic = orthographic;
2552
+ var proj = this.proj;
2553
+ var mat4 = proj.cameraMatrix.mat4;
2554
+ proj._projID++;
2555
+ mat4[10] = 1.0 / (far - near);
2556
+ mat4[14] = (focus - near) / (far - near);
2557
+ if (this._orthographic) {
2558
+ mat4[11] = 0;
2559
+ }
2560
+ else {
2561
+ mat4[11] = 1.0 / focus;
2562
+ }
2563
+ };
2564
+ return Camera3d;
2565
+ }(pixi_projection.Container3d));
2566
+ pixi_projection.Camera3d = Camera3d;
2567
+ })(pixi_projection || (pixi_projection = {}));
2568
+ var pixi_projection;
2569
+ (function (pixi_projection) {
2570
+ var Euler = (function () {
2571
+ function Euler(x, y, z) {
2572
+ this._quatUpdateId = -1;
2573
+ this._quatDirtyId = 0;
2574
+ this._sign = 1;
2575
+ this._x = x || 0;
2576
+ this._y = y || 0;
2577
+ this._z = z || 0;
2578
+ this.quaternion = new Float64Array(4);
2579
+ this.quaternion[3] = 1;
2580
+ this.update();
2581
+ }
2582
+ Object.defineProperty(Euler.prototype, "x", {
2583
+ get: function () {
2584
+ return this._x;
2585
+ },
2586
+ set: function (value) {
2587
+ if (this._x !== value) {
2588
+ this._x = value;
2589
+ this._quatDirtyId++;
2590
+ }
2591
+ },
2592
+ enumerable: true,
2593
+ configurable: true
2594
+ });
2595
+ Object.defineProperty(Euler.prototype, "y", {
2596
+ get: function () {
2597
+ return this._y;
2598
+ },
2599
+ set: function (value) {
2600
+ if (this._y !== value) {
2601
+ this._y = value;
2602
+ this._quatDirtyId++;
2603
+ }
2604
+ },
2605
+ enumerable: true,
2606
+ configurable: true
2607
+ });
2608
+ Object.defineProperty(Euler.prototype, "z", {
2609
+ get: function () {
2610
+ return this._z;
2611
+ },
2612
+ set: function (value) {
2613
+ if (this._z !== value) {
2614
+ this._z = value;
2615
+ this._quatDirtyId++;
2616
+ }
2617
+ },
2618
+ enumerable: true,
2619
+ configurable: true
2620
+ });
2621
+ Object.defineProperty(Euler.prototype, "pitch", {
2622
+ get: function () {
2623
+ return this._x;
2624
+ },
2625
+ set: function (value) {
2626
+ if (this._x !== value) {
2627
+ this._x = value;
2628
+ this._quatDirtyId++;
2629
+ }
2630
+ },
2631
+ enumerable: true,
2632
+ configurable: true
2633
+ });
2634
+ Object.defineProperty(Euler.prototype, "yaw", {
2635
+ get: function () {
2636
+ return this._y;
2637
+ },
2638
+ set: function (value) {
2639
+ if (this._y !== value) {
2640
+ this._y = value;
2641
+ this._quatDirtyId++;
2642
+ }
2643
+ },
2644
+ enumerable: true,
2645
+ configurable: true
2646
+ });
2647
+ Object.defineProperty(Euler.prototype, "roll", {
2648
+ get: function () {
2649
+ return this._z;
2650
+ },
2651
+ set: function (value) {
2652
+ if (this._z !== value) {
2653
+ this._z = value;
2654
+ this._quatDirtyId++;
2655
+ }
2656
+ },
2657
+ enumerable: true,
2658
+ configurable: true
2659
+ });
2660
+ Euler.prototype.set = function (x, y, z) {
2661
+ var _x = x || 0;
2662
+ var _y = y || 0;
2663
+ var _z = z || 0;
2664
+ if (this._x !== _x || this._y !== _y || this._z !== _z) {
2665
+ this._x = _x;
2666
+ this._y = _y;
2667
+ this._z = _z;
2668
+ this._quatDirtyId++;
2669
+ }
2670
+ };
2671
+ ;
2672
+ Euler.prototype.copy = function (euler) {
2673
+ var _x = euler.x;
2674
+ var _y = euler.y;
2675
+ var _z = euler.z;
2676
+ if (this._x !== _x || this._y !== _y || this._z !== _z) {
2677
+ this._x = _x;
2678
+ this._y = _y;
2679
+ this._z = _z;
2680
+ this._quatDirtyId++;
2681
+ }
2682
+ };
2683
+ Euler.prototype.clone = function () {
2684
+ return new Euler(this._x, this._y, this._z);
2685
+ };
2686
+ Euler.prototype.update = function () {
2687
+ if (this._quatUpdateId === this._quatDirtyId) {
2688
+ return false;
2689
+ }
2690
+ this._quatUpdateId = this._quatDirtyId;
2691
+ var c1 = Math.cos(this._x / 2);
2692
+ var c2 = Math.cos(this._y / 2);
2693
+ var c3 = Math.cos(this._z / 2);
2694
+ var s = this._sign;
2695
+ var s1 = s * Math.sin(this._x / 2);
2696
+ var s2 = s * Math.sin(this._y / 2);
2697
+ var s3 = s * Math.sin(this._z / 2);
2698
+ var q = this.quaternion;
2699
+ q[0] = s1 * c2 * c3 + c1 * s2 * s3;
2700
+ q[1] = c1 * s2 * c3 - s1 * c2 * s3;
2701
+ q[2] = c1 * c2 * s3 + s1 * s2 * c3;
2702
+ q[3] = c1 * c2 * c3 - s1 * s2 * s3;
2703
+ return true;
2704
+ };
2705
+ return Euler;
2706
+ }());
2707
+ pixi_projection.Euler = Euler;
2708
+ })(pixi_projection || (pixi_projection = {}));
2709
+ var pixi_projection;
2710
+ (function (pixi_projection) {
2711
+ var mat4id = [1, 0, 0, 0,
2712
+ 0, 1, 0, 0,
2713
+ 0, 0, 1, 0,
2714
+ 0, 0, 0, 1];
2715
+ var Matrix3d = (function () {
2716
+ function Matrix3d(backingArray) {
2717
+ this.floatArray = null;
2718
+ this._dirtyId = 0;
2719
+ this._updateId = -1;
2720
+ this._mat4inv = null;
2721
+ this.cacheInverse = false;
2722
+ this.mat4 = new Float64Array(backingArray || mat4id);
2723
+ }
2724
+ Object.defineProperty(Matrix3d.prototype, "a", {
2725
+ get: function () {
2726
+ return this.mat4[0] / this.mat4[15];
2727
+ },
2728
+ set: function (value) {
2729
+ this.mat4[0] = value * this.mat4[15];
2730
+ },
2731
+ enumerable: true,
2732
+ configurable: true
2733
+ });
2734
+ Object.defineProperty(Matrix3d.prototype, "b", {
2735
+ get: function () {
2736
+ return this.mat4[1] / this.mat4[15];
2737
+ },
2738
+ set: function (value) {
2739
+ this.mat4[1] = value * this.mat4[15];
2740
+ },
2741
+ enumerable: true,
2742
+ configurable: true
2743
+ });
2744
+ Object.defineProperty(Matrix3d.prototype, "c", {
2745
+ get: function () {
2746
+ return this.mat4[4] / this.mat4[15];
2747
+ },
2748
+ set: function (value) {
2749
+ this.mat4[4] = value * this.mat4[15];
2750
+ },
2751
+ enumerable: true,
2752
+ configurable: true
2753
+ });
2754
+ Object.defineProperty(Matrix3d.prototype, "d", {
2755
+ get: function () {
2756
+ return this.mat4[5] / this.mat4[15];
2757
+ },
2758
+ set: function (value) {
2759
+ this.mat4[5] = value * this.mat4[15];
2760
+ },
2761
+ enumerable: true,
2762
+ configurable: true
2763
+ });
2764
+ Object.defineProperty(Matrix3d.prototype, "tx", {
2765
+ get: function () {
2766
+ return this.mat4[12] / this.mat4[15];
2767
+ },
2768
+ set: function (value) {
2769
+ this.mat4[12] = value * this.mat4[15];
2770
+ },
2771
+ enumerable: true,
2772
+ configurable: true
2773
+ });
2774
+ Object.defineProperty(Matrix3d.prototype, "ty", {
2775
+ get: function () {
2776
+ return this.mat4[13] / this.mat4[15];
2777
+ },
2778
+ set: function (value) {
2779
+ this.mat4[13] = value * this.mat4[15];
2780
+ },
2781
+ enumerable: true,
2782
+ configurable: true
2783
+ });
2784
+ Matrix3d.prototype.set = function (a, b, c, d, tx, ty) {
2785
+ var mat4 = this.mat4;
2786
+ mat4[0] = a;
2787
+ mat4[1] = b;
2788
+ mat4[2] = 0;
2789
+ mat4[3] = 0;
2790
+ mat4[4] = c;
2791
+ mat4[5] = d;
2792
+ mat4[6] = 0;
2793
+ mat4[7] = 0;
2794
+ mat4[8] = 0;
2795
+ mat4[9] = 0;
2796
+ mat4[10] = 1;
2797
+ mat4[11] = 0;
2798
+ mat4[12] = tx;
2799
+ mat4[13] = ty;
2800
+ mat4[14] = 0;
2801
+ mat4[15] = 1;
2802
+ return this;
2803
+ };
2804
+ Matrix3d.prototype.toArray = function (transpose, out) {
2805
+ if (!this.floatArray) {
2806
+ this.floatArray = new Float32Array(9);
2807
+ }
2808
+ var array = out || this.floatArray;
2809
+ var mat3 = this.mat4;
2810
+ if (transpose) {
2811
+ array[0] = mat3[0];
2812
+ array[1] = mat3[1];
2813
+ array[2] = mat3[3];
2814
+ array[3] = mat3[4];
2815
+ array[4] = mat3[5];
2816
+ array[5] = mat3[7];
2817
+ array[6] = mat3[12];
2818
+ array[7] = mat3[13];
2819
+ array[8] = mat3[15];
2820
+ }
2821
+ else {
2822
+ array[0] = mat3[0];
2823
+ array[1] = mat3[4];
2824
+ array[2] = mat3[12];
2825
+ array[3] = mat3[2];
2826
+ array[4] = mat3[6];
2827
+ array[5] = mat3[13];
2828
+ array[6] = mat3[3];
2829
+ array[7] = mat3[7];
2830
+ array[8] = mat3[15];
2831
+ }
2832
+ return array;
2833
+ };
2834
+ Matrix3d.prototype.setToTranslation = function (tx, ty, tz) {
2835
+ var mat4 = this.mat4;
2836
+ mat4[0] = 1;
2837
+ mat4[1] = 0;
2838
+ mat4[2] = 0;
2839
+ mat4[3] = 0;
2840
+ mat4[4] = 0;
2841
+ mat4[5] = 1;
2842
+ mat4[6] = 0;
2843
+ mat4[7] = 0;
2844
+ mat4[8] = 0;
2845
+ mat4[9] = 0;
2846
+ mat4[10] = 1;
2847
+ mat4[11] = 0;
2848
+ mat4[12] = tx;
2849
+ mat4[13] = ty;
2850
+ mat4[14] = tz;
2851
+ mat4[15] = 1;
2852
+ };
2853
+ Matrix3d.prototype.setToRotationTranslationScale = function (quat, tx, ty, tz, sx, sy, sz) {
2854
+ var out = this.mat4;
2855
+ var x = quat[0], y = quat[1], z = quat[2], w = quat[3];
2856
+ var x2 = x + x;
2857
+ var y2 = y + y;
2858
+ var z2 = z + z;
2859
+ var xx = x * x2;
2860
+ var xy = x * y2;
2861
+ var xz = x * z2;
2862
+ var yy = y * y2;
2863
+ var yz = y * z2;
2864
+ var zz = z * z2;
2865
+ var wx = w * x2;
2866
+ var wy = w * y2;
2867
+ var wz = w * z2;
2868
+ out[0] = (1 - (yy + zz)) * sx;
2869
+ out[1] = (xy + wz) * sx;
2870
+ out[2] = (xz - wy) * sx;
2871
+ out[3] = 0;
2872
+ out[4] = (xy - wz) * sy;
2873
+ out[5] = (1 - (xx + zz)) * sy;
2874
+ out[6] = (yz + wx) * sy;
2875
+ out[7] = 0;
2876
+ out[8] = (xz + wy) * sz;
2877
+ out[9] = (yz - wx) * sz;
2878
+ out[10] = (1 - (xx + yy)) * sz;
2879
+ out[11] = 0;
2880
+ out[12] = tx;
2881
+ out[13] = ty;
2882
+ out[14] = tz;
2883
+ out[15] = 1;
2884
+ return out;
2885
+ };
2886
+ Matrix3d.prototype.apply = function (pos, newPos) {
2887
+ newPos = newPos || new PIXI.Point();
2888
+ var mat4 = this.mat4;
2889
+ var x = pos.x;
2890
+ var y = pos.y;
2891
+ var z = pos.z;
2892
+ var w = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]);
2893
+ newPos.x = w * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]);
2894
+ newPos.y = w * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]);
2895
+ newPos.z = w * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]);
2896
+ return newPos;
2897
+ };
2898
+ Matrix3d.prototype.translate = function (tx, ty, tz) {
2899
+ var a = this.mat4;
2900
+ a[12] = a[0] * tx + a[4] * ty + a[8] * tz + a[12];
2901
+ a[13] = a[1] * tx + a[5] * ty + a[9] * tz + a[13];
2902
+ a[14] = a[2] * tx + a[6] * ty + a[10] * tz + a[14];
2903
+ a[15] = a[3] * tx + a[7] * ty + a[11] * tz + a[15];
2904
+ return this;
2905
+ };
2906
+ Matrix3d.prototype.scale = function (x, y, z) {
2907
+ var mat4 = this.mat4;
2908
+ mat4[0] *= x;
2909
+ mat4[1] *= x;
2910
+ mat4[2] *= x;
2911
+ mat4[3] *= x;
2912
+ mat4[4] *= y;
2913
+ mat4[5] *= y;
2914
+ mat4[6] *= y;
2915
+ mat4[7] *= y;
2916
+ if (z !== undefined) {
2917
+ mat4[8] *= z;
2918
+ mat4[9] *= z;
2919
+ mat4[10] *= z;
2920
+ mat4[11] *= z;
2921
+ }
2922
+ return this;
2923
+ };
2924
+ Matrix3d.prototype.scaleAndTranslate = function (scaleX, scaleY, scaleZ, tx, ty, tz) {
2925
+ var mat4 = this.mat4;
2926
+ mat4[0] = scaleX * mat4[0] + tx * mat4[3];
2927
+ mat4[1] = scaleY * mat4[1] + ty * mat4[3];
2928
+ mat4[2] = scaleZ * mat4[2] + tz * mat4[3];
2929
+ mat4[4] = scaleX * mat4[4] + tx * mat4[7];
2930
+ mat4[5] = scaleY * mat4[5] + ty * mat4[7];
2931
+ mat4[6] = scaleZ * mat4[6] + tz * mat4[7];
2932
+ mat4[8] = scaleX * mat4[8] + tx * mat4[11];
2933
+ mat4[9] = scaleY * mat4[9] + ty * mat4[11];
2934
+ mat4[10] = scaleZ * mat4[10] + tz * mat4[11];
2935
+ mat4[12] = scaleX * mat4[12] + tx * mat4[15];
2936
+ mat4[13] = scaleY * mat4[13] + ty * mat4[15];
2937
+ mat4[14] = scaleZ * mat4[14] + tz * mat4[15];
2938
+ };
2939
+ Matrix3d.prototype.applyInverse = function (pos, newPos) {
2940
+ newPos = newPos || new pixi_projection.Point3d();
2941
+ if (!this._mat4inv) {
2942
+ this._mat4inv = new Float64Array(16);
2943
+ }
2944
+ var mat4 = this._mat4inv;
2945
+ var a = this.mat4;
2946
+ var x = pos.x;
2947
+ var y = pos.y;
2948
+ var z = pos.z;
2949
+ if (!this.cacheInverse || this._updateId !== this._dirtyId) {
2950
+ this._updateId = this._dirtyId;
2951
+ Matrix3d.glMatrixMat4Invert(mat4, a);
2952
+ }
2953
+ var w1 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]);
2954
+ var x1 = w1 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]);
2955
+ var y1 = w1 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]);
2956
+ var z1 = w1 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]);
2957
+ z += 1.0;
2958
+ var w2 = 1.0 / (mat4[3] * x + mat4[7] * y + mat4[11] * z + mat4[15]);
2959
+ var x2 = w2 * (mat4[0] * x + mat4[4] * y + mat4[8] * z + mat4[12]);
2960
+ var y2 = w2 * (mat4[1] * x + mat4[5] * y + mat4[9] * z + mat4[13]);
2961
+ var z2 = w2 * (mat4[2] * x + mat4[6] * y + mat4[10] * z + mat4[14]);
2962
+ if (Math.abs(z1 - z2) < 1e-10) {
2963
+ newPos.set(NaN, NaN, 0);
2964
+ }
2965
+ var alpha = (0 - z1) / (z2 - z1);
2966
+ newPos.set((x2 - x1) * alpha + x1, (y2 - y1) * alpha + y1, 0.0);
2967
+ return newPos;
2968
+ };
2969
+ Matrix3d.prototype.invert = function () {
2970
+ Matrix3d.glMatrixMat4Invert(this.mat4, this.mat4);
2971
+ return this;
2972
+ };
2973
+ Matrix3d.prototype.invertCopyTo = function (matrix) {
2974
+ if (!this._mat4inv) {
2975
+ this._mat4inv = new Float64Array(16);
2976
+ }
2977
+ var mat4 = this._mat4inv;
2978
+ var a = this.mat4;
2979
+ if (!this.cacheInverse || this._updateId !== this._dirtyId) {
2980
+ this._updateId = this._dirtyId;
2981
+ Matrix3d.glMatrixMat4Invert(mat4, a);
2982
+ }
2983
+ matrix.mat4.set(mat4);
2984
+ };
2985
+ Matrix3d.prototype.identity = function () {
2986
+ var mat3 = this.mat4;
2987
+ mat3[0] = 1;
2988
+ mat3[1] = 0;
2989
+ mat3[2] = 0;
2990
+ mat3[3] = 0;
2991
+ mat3[4] = 0;
2992
+ mat3[5] = 1;
2993
+ mat3[6] = 0;
2994
+ mat3[7] = 0;
2995
+ mat3[8] = 0;
2996
+ mat3[9] = 0;
2997
+ mat3[10] = 1;
2998
+ mat3[11] = 0;
2999
+ mat3[12] = 0;
3000
+ mat3[13] = 0;
3001
+ mat3[14] = 0;
3002
+ mat3[15] = 1;
3003
+ return this;
3004
+ };
3005
+ Matrix3d.prototype.clone = function () {
3006
+ return new Matrix3d(this.mat4);
3007
+ };
3008
+ Matrix3d.prototype.copyTo = function (matrix) {
3009
+ var mat3 = this.mat4;
3010
+ var ar2 = matrix.mat4;
3011
+ ar2[0] = mat3[0];
3012
+ ar2[1] = mat3[1];
3013
+ ar2[2] = mat3[2];
3014
+ ar2[3] = mat3[3];
3015
+ ar2[4] = mat3[4];
3016
+ ar2[5] = mat3[5];
3017
+ ar2[6] = mat3[6];
3018
+ ar2[7] = mat3[7];
3019
+ ar2[8] = mat3[8];
3020
+ return matrix;
3021
+ };
3022
+ Matrix3d.prototype.copy = function (matrix, affine) {
3023
+ var mat3 = this.mat4;
3024
+ var d = 1.0 / mat3[15];
3025
+ var tx = mat3[12] * d, ty = mat3[13] * d;
3026
+ matrix.a = (mat3[0] - mat3[3] * tx) * d;
3027
+ matrix.b = (mat3[1] - mat3[3] * ty) * d;
3028
+ matrix.c = (mat3[4] - mat3[7] * tx) * d;
3029
+ matrix.d = (mat3[5] - mat3[7] * ty) * d;
3030
+ matrix.tx = tx;
3031
+ matrix.ty = ty;
3032
+ if (affine >= 2) {
3033
+ if (affine === pixi_projection.AFFINE.POINT) {
3034
+ matrix.a = 1;
3035
+ matrix.b = 0;
3036
+ matrix.c = 0;
3037
+ matrix.d = 1;
3038
+ }
3039
+ else if (affine === pixi_projection.AFFINE.AXIS_X) {
3040
+ matrix.c = -matrix.b;
3041
+ matrix.d = matrix.a;
3042
+ }
3043
+ else if (affine === pixi_projection.AFFINE.AXIS_Y) {
3044
+ matrix.a = matrix.d;
3045
+ matrix.c = -matrix.b;
3046
+ }
3047
+ }
3048
+ };
3049
+ Matrix3d.prototype.copyFrom = function (matrix) {
3050
+ var mat3 = this.mat4;
3051
+ mat3[0] = matrix.a;
3052
+ mat3[1] = matrix.b;
3053
+ mat3[2] = 0;
3054
+ mat3[3] = 0;
3055
+ mat3[4] = matrix.c;
3056
+ mat3[5] = matrix.d;
3057
+ mat3[6] = 0;
3058
+ mat3[7] = 0;
3059
+ mat3[8] = 0;
3060
+ mat3[9] = 0;
3061
+ mat3[10] = 1;
3062
+ mat3[11] = 0;
3063
+ mat3[12] = matrix.tx;
3064
+ mat3[13] = matrix.ty;
3065
+ mat3[14] = 0;
3066
+ mat3[15] = 1;
3067
+ this._dirtyId++;
3068
+ return this;
3069
+ };
3070
+ Matrix3d.prototype.setToMultLegacy = function (pt, lt) {
3071
+ var out = this.mat4;
3072
+ var b = lt.mat4;
3073
+ var a00 = pt.a, a01 = pt.b, a10 = pt.c, a11 = pt.d, a30 = pt.tx, a31 = pt.ty;
3074
+ var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
3075
+ out[0] = b0 * a00 + b1 * a10 + b3 * a30;
3076
+ out[1] = b0 * a01 + b1 * a11 + b3 * a31;
3077
+ out[2] = b2;
3078
+ out[3] = b3;
3079
+ b0 = b[4];
3080
+ b1 = b[5];
3081
+ b2 = b[6];
3082
+ b3 = b[7];
3083
+ out[4] = b0 * a00 + b1 * a10 + b3 * a30;
3084
+ out[5] = b0 * a01 + b1 * a11 + b3 * a31;
3085
+ out[6] = b2;
3086
+ out[7] = b3;
3087
+ b0 = b[8];
3088
+ b1 = b[9];
3089
+ b2 = b[10];
3090
+ b3 = b[11];
3091
+ out[8] = b0 * a00 + b1 * a10 + b3 * a30;
3092
+ out[9] = b0 * a01 + b1 * a11 + b3 * a31;
3093
+ out[10] = b2;
3094
+ out[11] = b3;
3095
+ b0 = b[12];
3096
+ b1 = b[13];
3097
+ b2 = b[14];
3098
+ b3 = b[15];
3099
+ out[12] = b0 * a00 + b1 * a10 + b3 * a30;
3100
+ out[13] = b0 * a01 + b1 * a11 + b3 * a31;
3101
+ out[14] = b2;
3102
+ out[15] = b3;
3103
+ this._dirtyId++;
3104
+ return this;
3105
+ };
3106
+ Matrix3d.prototype.setToMultLegacy2 = function (pt, lt) {
3107
+ var out = this.mat4;
3108
+ var a = pt.mat4;
3109
+ var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
3110
+ var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
3111
+ var b00 = lt.a, b01 = lt.b, b10 = lt.c, b11 = lt.d, b30 = lt.tx, b31 = lt.ty;
3112
+ out[0] = b00 * a00 + b01 * a10;
3113
+ out[1] = b00 * a01 + b01 * a11;
3114
+ out[2] = b00 * a02 + b01 * a12;
3115
+ out[3] = b00 * a03 + b01 * a13;
3116
+ out[4] = b10 * a00 + b11 * a10;
3117
+ out[5] = b10 * a01 + b11 * a11;
3118
+ out[6] = b10 * a02 + b11 * a12;
3119
+ out[7] = b10 * a03 + b11 * a13;
3120
+ out[8] = a[8];
3121
+ out[9] = a[9];
3122
+ out[10] = a[10];
3123
+ out[11] = a[11];
3124
+ out[12] = b30 * a00 + b31 * a10 + a[12];
3125
+ out[13] = b30 * a01 + b31 * a11 + a[13];
3126
+ out[14] = b30 * a02 + b31 * a12 + a[14];
3127
+ out[15] = b30 * a03 + b31 * a13 + a[15];
3128
+ this._dirtyId++;
3129
+ return this;
3130
+ };
3131
+ Matrix3d.prototype.setToMult = function (pt, lt) {
3132
+ Matrix3d.glMatrixMat4Multiply(this.mat4, pt.mat4, lt.mat4);
3133
+ this._dirtyId++;
3134
+ return this;
3135
+ };
3136
+ Matrix3d.prototype.prepend = function (lt) {
3137
+ if (lt.mat4) {
3138
+ this.setToMult(lt, this);
3139
+ }
3140
+ else {
3141
+ this.setToMultLegacy(lt, this);
3142
+ }
3143
+ };
3144
+ Matrix3d.glMatrixMat4Invert = function (out, a) {
3145
+ var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
3146
+ var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
3147
+ var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
3148
+ var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
3149
+ var b00 = a00 * a11 - a01 * a10;
3150
+ var b01 = a00 * a12 - a02 * a10;
3151
+ var b02 = a00 * a13 - a03 * a10;
3152
+ var b03 = a01 * a12 - a02 * a11;
3153
+ var b04 = a01 * a13 - a03 * a11;
3154
+ var b05 = a02 * a13 - a03 * a12;
3155
+ var b06 = a20 * a31 - a21 * a30;
3156
+ var b07 = a20 * a32 - a22 * a30;
3157
+ var b08 = a20 * a33 - a23 * a30;
3158
+ var b09 = a21 * a32 - a22 * a31;
3159
+ var b10 = a21 * a33 - a23 * a31;
3160
+ var b11 = a22 * a33 - a23 * a32;
3161
+ var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
3162
+ if (!det) {
3163
+ return null;
3164
+ }
3165
+ det = 1.0 / det;
3166
+ out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;
3167
+ out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;
3168
+ out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;
3169
+ out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;
3170
+ out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;
3171
+ out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;
3172
+ out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;
3173
+ out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;
3174
+ out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;
3175
+ out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;
3176
+ out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;
3177
+ out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;
3178
+ out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;
3179
+ out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;
3180
+ out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;
3181
+ out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;
3182
+ return out;
3183
+ };
3184
+ Matrix3d.glMatrixMat4Multiply = function (out, a, b) {
3185
+ var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
3186
+ var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
3187
+ var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
3188
+ var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
3189
+ var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
3190
+ out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
3191
+ out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
3192
+ out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
3193
+ out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
3194
+ b0 = b[4];
3195
+ b1 = b[5];
3196
+ b2 = b[6];
3197
+ b3 = b[7];
3198
+ out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
3199
+ out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
3200
+ out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
3201
+ out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
3202
+ b0 = b[8];
3203
+ b1 = b[9];
3204
+ b2 = b[10];
3205
+ b3 = b[11];
3206
+ out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
3207
+ out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
3208
+ out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
3209
+ out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
3210
+ b0 = b[12];
3211
+ b1 = b[13];
3212
+ b2 = b[14];
3213
+ b3 = b[15];
3214
+ out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
3215
+ out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
3216
+ out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
3217
+ out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
3218
+ return out;
3219
+ };
3220
+ Matrix3d.IDENTITY = new Matrix3d();
3221
+ Matrix3d.TEMP_MATRIX = new Matrix3d();
3222
+ return Matrix3d;
3223
+ }());
3224
+ pixi_projection.Matrix3d = Matrix3d;
3225
+ })(pixi_projection || (pixi_projection = {}));
3226
+ var pixi_projection;
3227
+ (function (pixi_projection) {
3228
+ var ObservableEuler = (function () {
3229
+ function ObservableEuler(cb, scope, x, y, z) {
3230
+ this.cb = cb;
3231
+ this.scope = scope;
3232
+ this._quatUpdateId = -1;
3233
+ this._quatDirtyId = 0;
3234
+ this._sign = 1;
3235
+ this._x = x || 0;
3236
+ this._y = y || 0;
3237
+ this._z = z || 0;
3238
+ this.quaternion = new Float64Array(4);
3239
+ this.quaternion[3] = 1;
3240
+ this.update();
3241
+ }
3242
+ Object.defineProperty(ObservableEuler.prototype, "x", {
3243
+ get: function () {
3244
+ return this._x;
3245
+ },
3246
+ set: function (value) {
3247
+ if (this._x !== value) {
3248
+ this._x = value;
3249
+ this._quatDirtyId++;
3250
+ this.cb.call(this.scope);
3251
+ }
3252
+ },
3253
+ enumerable: true,
3254
+ configurable: true
3255
+ });
3256
+ Object.defineProperty(ObservableEuler.prototype, "y", {
3257
+ get: function () {
3258
+ return this._y;
3259
+ },
3260
+ set: function (value) {
3261
+ if (this._y !== value) {
3262
+ this._y = value;
3263
+ this._quatDirtyId++;
3264
+ this.cb.call(this.scope);
3265
+ }
3266
+ },
3267
+ enumerable: true,
3268
+ configurable: true
3269
+ });
3270
+ Object.defineProperty(ObservableEuler.prototype, "z", {
3271
+ get: function () {
3272
+ return this._z;
3273
+ },
3274
+ set: function (value) {
3275
+ if (this._z !== value) {
3276
+ this._z = value;
3277
+ this._quatDirtyId++;
3278
+ this.cb.call(this.scope);
3279
+ }
3280
+ },
3281
+ enumerable: true,
3282
+ configurable: true
3283
+ });
3284
+ Object.defineProperty(ObservableEuler.prototype, "pitch", {
3285
+ get: function () {
3286
+ return this._x;
3287
+ },
3288
+ set: function (value) {
3289
+ if (this._x !== value) {
3290
+ this._x = value;
3291
+ this._quatDirtyId++;
3292
+ this.cb.call(this.scope);
3293
+ }
3294
+ },
3295
+ enumerable: true,
3296
+ configurable: true
3297
+ });
3298
+ Object.defineProperty(ObservableEuler.prototype, "yaw", {
3299
+ get: function () {
3300
+ return this._y;
3301
+ },
3302
+ set: function (value) {
3303
+ if (this._y !== value) {
3304
+ this._y = value;
3305
+ this._quatDirtyId++;
3306
+ this.cb.call(this.scope);
3307
+ }
3308
+ },
3309
+ enumerable: true,
3310
+ configurable: true
3311
+ });
3312
+ Object.defineProperty(ObservableEuler.prototype, "roll", {
3313
+ get: function () {
3314
+ return this._z;
3315
+ },
3316
+ set: function (value) {
3317
+ if (this._z !== value) {
3318
+ this._z = value;
3319
+ this._quatDirtyId++;
3320
+ this.cb.call(this.scope);
3321
+ }
3322
+ },
3323
+ enumerable: true,
3324
+ configurable: true
3325
+ });
3326
+ ObservableEuler.prototype.set = function (x, y, z) {
3327
+ var _x = x || 0;
3328
+ var _y = y || 0;
3329
+ var _z = z || 0;
3330
+ if (this._x !== _x || this._y !== _y || this._z !== _z) {
3331
+ this._x = _x;
3332
+ this._y = _y;
3333
+ this._z = _z;
3334
+ this._quatDirtyId++;
3335
+ this.cb.call(this.scope);
3336
+ }
3337
+ };
3338
+ ;
3339
+ ObservableEuler.prototype.copy = function (euler) {
3340
+ var _x = euler.x;
3341
+ var _y = euler.y;
3342
+ var _z = euler.z;
3343
+ if (this._x !== _x || this._y !== _y || this._z !== _z) {
3344
+ this._x = _x;
3345
+ this._y = _y;
3346
+ this._z = _z;
3347
+ this._quatDirtyId++;
3348
+ this.cb.call(this.scope);
3349
+ }
3350
+ };
3351
+ ObservableEuler.prototype.clone = function () {
3352
+ return new pixi_projection.Euler(this._x, this._y, this._z);
3353
+ };
3354
+ ObservableEuler.prototype.update = function () {
3355
+ if (this._quatUpdateId === this._quatDirtyId) {
3356
+ return false;
3357
+ }
3358
+ this._quatUpdateId = this._quatDirtyId;
3359
+ var c1 = Math.cos(this._x / 2);
3360
+ var c2 = Math.cos(this._y / 2);
3361
+ var c3 = Math.cos(this._z / 2);
3362
+ var s = this._sign;
3363
+ var s1 = s * Math.sin(this._x / 2);
3364
+ var s2 = s * Math.sin(this._y / 2);
3365
+ var s3 = s * Math.sin(this._z / 2);
3366
+ var q = this.quaternion;
3367
+ q[0] = s1 * c2 * c3 + c1 * s2 * s3;
3368
+ q[1] = c1 * s2 * c3 - s1 * c2 * s3;
3369
+ q[2] = c1 * c2 * s3 + s1 * s2 * c3;
3370
+ q[3] = c1 * c2 * c3 - s1 * s2 * s3;
3371
+ return true;
3372
+ };
3373
+ return ObservableEuler;
3374
+ }());
3375
+ pixi_projection.ObservableEuler = ObservableEuler;
3376
+ })(pixi_projection || (pixi_projection = {}));
3377
+ var pixi_projection;
3378
+ (function (pixi_projection) {
3379
+ PIXI.Point.prototype.z = 0;
3380
+ PIXI.Point.prototype.set = function (x, y, z) {
3381
+ this.x = x || 0;
3382
+ this.y = (y === undefined) ? this.x : (y || 0);
3383
+ this.z = (y === undefined) ? this.x : (z || 0);
3384
+ };
3385
+ PIXI.Point.prototype.copy = function (p) {
3386
+ this.set(p.x, p.y, p.z);
3387
+ };
3388
+ PIXI.ObservablePoint.prototype._z = 0;
3389
+ PIXI.ObservablePoint.prototype.set = function (x, y, z) {
3390
+ var _x = x || 0;
3391
+ var _y = (y === undefined) ? _x : (y || 0);
3392
+ var _z = (y === undefined) ? _x : (z || 0);
3393
+ if (this._x !== _x || this._y !== _y || this._z !== _z) {
3394
+ this._x = _x;
3395
+ this._y = _y;
3396
+ this._z = _z;
3397
+ this.cb.call(this.scope);
3398
+ }
3399
+ };
3400
+ Object.defineProperty(PIXI.ObservablePoint.prototype, "z", {
3401
+ get: function () {
3402
+ return this._z;
3403
+ },
3404
+ set: function (value) {
3405
+ if (this._z !== value) {
3406
+ this._z = value;
3407
+ this.cb.call(this.scope);
3408
+ }
3409
+ },
3410
+ enumerable: true,
3411
+ configurable: true
3412
+ });
3413
+ PIXI.ObservablePoint.prototype.copy = function (point) {
3414
+ if (this._x !== point.x || this._y !== point.y || this._z !== point.z) {
3415
+ this._x = point.x;
3416
+ this._y = point.y;
3417
+ this._z = point.z;
3418
+ this.cb.call(this.scope);
3419
+ }
3420
+ };
3421
+ var Point3d = (function (_super) {
3422
+ __extends(Point3d, _super);
3423
+ function Point3d(x, y, z) {
3424
+ var _this = _super.call(this, x, y) || this;
3425
+ _this.z = z;
3426
+ return _this;
3427
+ }
3428
+ return Point3d;
3429
+ }(PIXI.Point));
3430
+ pixi_projection.Point3d = Point3d;
3431
+ PIXI.Point = Point3d;
3432
+ })(pixi_projection || (pixi_projection = {}));
3433
+ var pixi_projection;
3434
+ (function (pixi_projection) {
3435
+ var tempMat = new pixi_projection.Matrix3d();
3436
+ var Projection3d = (function (_super) {
3437
+ __extends(Projection3d, _super);
3438
+ function Projection3d(legacy, enable) {
3439
+ var _this = _super.call(this, legacy, enable) || this;
3440
+ _this.cameraMatrix = null;
3441
+ _this._cameraMode = false;
3442
+ _this.position = new PIXI.ObservablePoint(_this.onChange, _this, 0, 0);
3443
+ _this.scale = new PIXI.ObservablePoint(_this.onChange, _this, 1, 1);
3444
+ _this.euler = new pixi_projection.ObservableEuler(_this.onChange, _this, 0, 0, 0);
3445
+ _this.pivot = new PIXI.ObservablePoint(_this.onChange, _this, 0, 0);
3446
+ _this.local = new pixi_projection.Matrix3d();
3447
+ _this.world = new pixi_projection.Matrix3d();
3448
+ _this.local.cacheInverse = true;
3449
+ _this.world.cacheInverse = true;
3450
+ _this.position._z = 0;
3451
+ _this.scale._z = 1;
3452
+ _this.pivot._z = 0;
3453
+ return _this;
3454
+ }
3455
+ Object.defineProperty(Projection3d.prototype, "cameraMode", {
3456
+ get: function () {
3457
+ return this._cameraMode;
3458
+ },
3459
+ set: function (value) {
3460
+ if (this._cameraMode === value) {
3461
+ return;
3462
+ }
3463
+ this._cameraMode = value;
3464
+ this.euler._sign = this._cameraMode ? -1 : 1;
3465
+ this.euler._quatDirtyId++;
3466
+ if (value) {
3467
+ this.cameraMatrix = new pixi_projection.Matrix3d();
3468
+ }
3469
+ },
3470
+ enumerable: true,
3471
+ configurable: true
3472
+ });
3473
+ Projection3d.prototype.onChange = function () {
3474
+ this._projID++;
3475
+ };
3476
+ Projection3d.prototype.clear = function () {
3477
+ if (this.cameraMatrix) {
3478
+ this.cameraMatrix.identity();
3479
+ }
3480
+ this.position.set(0, 0, 0);
3481
+ this.scale.set(1, 1, 1);
3482
+ this.euler.set(0, 0, 0);
3483
+ this.pivot.set(0, 0, 0);
3484
+ _super.prototype.clear.call(this);
3485
+ };
3486
+ Projection3d.prototype.updateLocalTransform = function (lt) {
3487
+ if (this._projID === 0) {
3488
+ this.local.copyFrom(lt);
3489
+ return;
3490
+ }
3491
+ var matrix = this.local;
3492
+ var euler = this.euler;
3493
+ var pos = this.position;
3494
+ var scale = this.scale;
3495
+ var pivot = this.pivot;
3496
+ euler.update();
3497
+ if (!this.cameraMode) {
3498
+ matrix.setToRotationTranslationScale(euler.quaternion, pos._x, pos._y, pos._z, scale._x, scale._y, scale._z);
3499
+ matrix.translate(-pivot._x, -pivot._y, -pivot._z);
3500
+ matrix.setToMultLegacy(lt, matrix);
3501
+ return;
3502
+ }
3503
+ matrix.setToMultLegacy(lt, this.cameraMatrix);
3504
+ matrix.translate(pivot._x, pivot._y, pivot._z);
3505
+ matrix.scale(1.0 / scale._x, 1.0 / scale._y, 1.0 / scale._z);
3506
+ tempMat.setToRotationTranslationScale(euler.quaternion, 0, 0, 0, 1, 1, 1);
3507
+ matrix.setToMult(matrix, tempMat);
3508
+ matrix.translate(-pos._x, -pos._y, -pos._z);
3509
+ this.local._dirtyId++;
3510
+ };
3511
+ return Projection3d;
3512
+ }(pixi_projection.LinearProjection));
3513
+ pixi_projection.Projection3d = Projection3d;
3514
+ })(pixi_projection || (pixi_projection = {}));
3515
+ var pixi_projection;
3516
+ (function (pixi_projection) {
3517
+ var Mesh3d = (function (_super) {
3518
+ __extends(Mesh3d, _super);
3519
+ function Mesh3d(texture, vertices, uvs, indices, drawMode) {
3520
+ var _this = _super.call(this, texture, vertices, uvs, indices, drawMode) || this;
3521
+ _this.proj = new pixi_projection.Projection3d(_this.transform);
3522
+ _this.pluginName = 'mesh2d';
3523
+ return _this;
3524
+ }
3525
+ Object.defineProperty(Mesh3d.prototype, "worldTransform", {
3526
+ get: function () {
3527
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
3528
+ },
3529
+ enumerable: true,
3530
+ configurable: true
3531
+ });
3532
+ Mesh3d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
3533
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
3534
+ return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step);
3535
+ };
3536
+ Mesh3d.prototype.isFrontFace = function (forceUpdate) {
3537
+ return pixi_projection.container3dIsFrontFace.call(this, forceUpdate);
3538
+ };
3539
+ Mesh3d.prototype.getDepth = function (forceUpdate) {
3540
+ return pixi_projection.container3dGetDepth.call(this, forceUpdate);
3541
+ };
3542
+ Object.defineProperty(Mesh3d.prototype, "position3d", {
3543
+ get: function () {
3544
+ return this.proj.position;
3545
+ },
3546
+ set: function (value) {
3547
+ this.proj.position.copy(value);
3548
+ },
3549
+ enumerable: true,
3550
+ configurable: true
3551
+ });
3552
+ Object.defineProperty(Mesh3d.prototype, "scale3d", {
3553
+ get: function () {
3554
+ return this.proj.scale;
3555
+ },
3556
+ set: function (value) {
3557
+ this.proj.scale.copy(value);
3558
+ },
3559
+ enumerable: true,
3560
+ configurable: true
3561
+ });
3562
+ Object.defineProperty(Mesh3d.prototype, "euler", {
3563
+ get: function () {
3564
+ return this.proj.euler;
3565
+ },
3566
+ set: function (value) {
3567
+ this.proj.euler.copy(value);
3568
+ },
3569
+ enumerable: true,
3570
+ configurable: true
3571
+ });
3572
+ Object.defineProperty(Mesh3d.prototype, "pivot3d", {
3573
+ get: function () {
3574
+ return this.proj.pivot;
3575
+ },
3576
+ set: function (value) {
3577
+ this.proj.pivot.copy(value);
3578
+ },
3579
+ enumerable: true,
3580
+ configurable: true
3581
+ });
3582
+ return Mesh3d;
3583
+ }(PIXI.mesh.Mesh));
3584
+ pixi_projection.Mesh3d = Mesh3d;
3585
+ })(pixi_projection || (pixi_projection = {}));
3586
+ var pixi_projection;
3587
+ (function (pixi_projection) {
3588
+ var Sprite3d = (function (_super) {
3589
+ __extends(Sprite3d, _super);
3590
+ function Sprite3d(texture) {
3591
+ var _this = _super.call(this, texture) || this;
3592
+ _this.culledByFrustrum = false;
3593
+ _this.trimmedCulledByFrustrum = false;
3594
+ _this.proj = new pixi_projection.Projection3d(_this.transform);
3595
+ _this.pluginName = 'sprite2d';
3596
+ _this.vertexData = new Float32Array(12);
3597
+ return _this;
3598
+ }
3599
+ Sprite3d.prototype._calculateBounds = function () {
3600
+ this.calculateVertices();
3601
+ if (this.culledByFrustrum) {
3602
+ return;
3603
+ }
3604
+ this.calculateTrimmedVertices();
3605
+ if (!this.trimmedCulledByFrustrum) {
3606
+ this._bounds.addQuad(this.vertexTrimmedData);
3607
+ }
3608
+ };
3609
+ Sprite3d.prototype.calculateVertices = function () {
3610
+ if (this.proj._affine) {
3611
+ if (this.vertexData.length != 8) {
3612
+ this.vertexData = new Float32Array(8);
3613
+ }
3614
+ _super.prototype.calculateVertices.call(this);
3615
+ return;
3616
+ }
3617
+ if (this.vertexData.length != 12) {
3618
+ this.vertexData = new Float32Array(12);
3619
+ }
3620
+ var wid = this.transform._worldID;
3621
+ var tuid = this._texture._updateID;
3622
+ if (this._transformID === wid && this._textureID === tuid) {
3623
+ return;
3624
+ }
3625
+ this._transformID = wid;
3626
+ this._textureID = tuid;
3627
+ var texture = this._texture;
3628
+ var wt = this.proj.world.mat4;
3629
+ var vertexData = this.vertexData;
3630
+ var trim = texture.trim;
3631
+ var orig = texture.orig;
3632
+ var anchor = this._anchor;
3633
+ var w0 = 0;
3634
+ var w1 = 0;
3635
+ var h0 = 0;
3636
+ var h1 = 0;
3637
+ if (trim) {
3638
+ w1 = trim.x - (anchor._x * orig.width);
3639
+ w0 = w1 + trim.width;
3640
+ h1 = trim.y - (anchor._y * orig.height);
3641
+ h0 = h1 + trim.height;
3642
+ }
3643
+ else {
3644
+ w1 = -anchor._x * orig.width;
3645
+ w0 = w1 + orig.width;
3646
+ h1 = -anchor._y * orig.height;
3647
+ h0 = h1 + orig.height;
3648
+ }
3649
+ var culled = false;
3650
+ var z;
3651
+ vertexData[0] = (wt[0] * w1) + (wt[4] * h1) + wt[12];
3652
+ vertexData[1] = (wt[1] * w1) + (wt[5] * h1) + wt[13];
3653
+ z = (wt[2] * w1) + (wt[6] * h1) + wt[14];
3654
+ vertexData[2] = (wt[3] * w1) + (wt[7] * h1) + wt[15];
3655
+ culled = culled || z < 0;
3656
+ vertexData[3] = (wt[0] * w0) + (wt[4] * h1) + wt[12];
3657
+ vertexData[4] = (wt[1] * w0) + (wt[5] * h1) + wt[13];
3658
+ z = (wt[2] * w0) + (wt[6] * h1) + wt[14];
3659
+ vertexData[5] = (wt[3] * w0) + (wt[7] * h1) + wt[15];
3660
+ culled = culled || z < 0;
3661
+ vertexData[6] = (wt[0] * w0) + (wt[4] * h0) + wt[12];
3662
+ vertexData[7] = (wt[1] * w0) + (wt[5] * h0) + wt[13];
3663
+ z = (wt[2] * w0) + (wt[6] * h0) + wt[14];
3664
+ vertexData[8] = (wt[3] * w0) + (wt[7] * h0) + wt[15];
3665
+ culled = culled || z < 0;
3666
+ vertexData[9] = (wt[0] * w1) + (wt[4] * h0) + wt[12];
3667
+ vertexData[10] = (wt[1] * w1) + (wt[5] * h0) + wt[13];
3668
+ z = (wt[2] * w1) + (wt[6] * h0) + wt[14];
3669
+ vertexData[11] = (wt[3] * w1) + (wt[7] * h0) + wt[15];
3670
+ culled = culled || z < 0;
3671
+ this.culledByFrustrum = culled;
3672
+ };
3673
+ Sprite3d.prototype.calculateTrimmedVertices = function () {
3674
+ if (this.proj._affine) {
3675
+ _super.prototype.calculateTrimmedVertices.call(this);
3676
+ return;
3677
+ }
3678
+ var wid = this.transform._worldID;
3679
+ var tuid = this._texture._updateID;
3680
+ if (!this.vertexTrimmedData) {
3681
+ this.vertexTrimmedData = new Float32Array(8);
3682
+ }
3683
+ else if (this._transformTrimmedID === wid && this._textureTrimmedID === tuid) {
3684
+ return;
3685
+ }
3686
+ this._transformTrimmedID = wid;
3687
+ this._textureTrimmedID = tuid;
3688
+ var texture = this._texture;
3689
+ var vertexData = this.vertexTrimmedData;
3690
+ var orig = texture.orig;
3691
+ var anchor = this._anchor;
3692
+ var wt = this.proj.world.mat4;
3693
+ var w1 = -anchor._x * orig.width;
3694
+ var w0 = w1 + orig.width;
3695
+ var h1 = -anchor._y * orig.height;
3696
+ var h0 = h1 + orig.height;
3697
+ var culled = false;
3698
+ var w = 1.0 / (wt[3] * w1 + wt[7] * h1 + wt[15]);
3699
+ vertexData[0] = w * ((wt[0] * w1) + (wt[4] * h1) + wt[12]);
3700
+ vertexData[1] = w * ((wt[1] * w1) + (wt[5] * h1) + wt[13]);
3701
+ var z = (wt[2] * w1) + (wt[6] * h1) + wt[14];
3702
+ culled = culled || z < 0;
3703
+ w = 1.0 / (wt[3] * w0 + wt[7] * h1 + wt[15]);
3704
+ vertexData[2] = w * ((wt[0] * w0) + (wt[4] * h1) + wt[12]);
3705
+ vertexData[3] = w * ((wt[1] * w0) + (wt[5] * h1) + wt[13]);
3706
+ z = (wt[2] * w0) + (wt[6] * h1) + wt[14];
3707
+ culled = culled || z < 0;
3708
+ w = 1.0 / (wt[3] * w0 + wt[7] * h0 + wt[15]);
3709
+ vertexData[4] = w * ((wt[0] * w0) + (wt[4] * h0) + wt[12]);
3710
+ vertexData[5] = w * ((wt[1] * w0) + (wt[5] * h0) + wt[13]);
3711
+ z = (wt[2] * w0) + (wt[6] * h0) + wt[14];
3712
+ culled = culled || z < 0;
3713
+ w = 1.0 / (wt[3] * w1 + wt[7] * h0 + wt[15]);
3714
+ vertexData[6] = w * ((wt[0] * w1) + (wt[4] * h0) + wt[12]);
3715
+ vertexData[7] = w * ((wt[1] * w1) + (wt[5] * h0) + wt[13]);
3716
+ z = (wt[2] * w1) + (wt[6] * h0) + wt[14];
3717
+ culled = culled || z < 0;
3718
+ this.trimmedCulledByFrustrum = culled;
3719
+ };
3720
+ Sprite3d.prototype._renderWebGL = function (renderer) {
3721
+ this.calculateVertices();
3722
+ if (this.culledByFrustrum) {
3723
+ return;
3724
+ }
3725
+ renderer.setObjectRenderer(renderer.plugins[this.pluginName]);
3726
+ renderer.plugins[this.pluginName].render(this);
3727
+ };
3728
+ Sprite3d.prototype.containsPoint = function (point) {
3729
+ if (this.culledByFrustrum) {
3730
+ return false;
3731
+ }
3732
+ return _super.prototype.containsPoint.call(this, point);
3733
+ };
3734
+ Object.defineProperty(Sprite3d.prototype, "worldTransform", {
3735
+ get: function () {
3736
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
3737
+ },
3738
+ enumerable: true,
3739
+ configurable: true
3740
+ });
3741
+ Sprite3d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
3742
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
3743
+ return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step);
3744
+ };
3745
+ Sprite3d.prototype.isFrontFace = function (forceUpdate) {
3746
+ return pixi_projection.container3dIsFrontFace.call(this, forceUpdate);
3747
+ };
3748
+ Sprite3d.prototype.getDepth = function (forceUpdate) {
3749
+ return pixi_projection.container3dGetDepth.call(this, forceUpdate);
3750
+ };
3751
+ Object.defineProperty(Sprite3d.prototype, "position3d", {
3752
+ get: function () {
3753
+ return this.proj.position;
3754
+ },
3755
+ set: function (value) {
3756
+ this.proj.position.copy(value);
3757
+ },
3758
+ enumerable: true,
3759
+ configurable: true
3760
+ });
3761
+ Object.defineProperty(Sprite3d.prototype, "scale3d", {
3762
+ get: function () {
3763
+ return this.proj.scale;
3764
+ },
3765
+ set: function (value) {
3766
+ this.proj.scale.copy(value);
3767
+ },
3768
+ enumerable: true,
3769
+ configurable: true
3770
+ });
3771
+ Object.defineProperty(Sprite3d.prototype, "euler", {
3772
+ get: function () {
3773
+ return this.proj.euler;
3774
+ },
3775
+ set: function (value) {
3776
+ this.proj.euler.copy(value);
3777
+ },
3778
+ enumerable: true,
3779
+ configurable: true
3780
+ });
3781
+ Object.defineProperty(Sprite3d.prototype, "pivot3d", {
3782
+ get: function () {
3783
+ return this.proj.pivot;
3784
+ },
3785
+ set: function (value) {
3786
+ this.proj.pivot.copy(value);
3787
+ },
3788
+ enumerable: true,
3789
+ configurable: true
3790
+ });
3791
+ return Sprite3d;
3792
+ }(PIXI.Sprite));
3793
+ pixi_projection.Sprite3d = Sprite3d;
3794
+ })(pixi_projection || (pixi_projection = {}));
3795
+ var pixi_projection;
3796
+ (function (pixi_projection) {
3797
+ var Text3d = (function (_super) {
3798
+ __extends(Text3d, _super);
3799
+ function Text3d(text, style, canvas) {
3800
+ var _this = _super.call(this, text, style, canvas) || this;
3801
+ _this.proj = new pixi_projection.Projection3d(_this.transform);
3802
+ _this.pluginName = 'sprite2d';
3803
+ _this.vertexData = new Float32Array(12);
3804
+ return _this;
3805
+ }
3806
+ Object.defineProperty(Text3d.prototype, "worldTransform", {
3807
+ get: function () {
3808
+ return this.proj.affine ? this.transform.worldTransform : this.proj.world;
3809
+ },
3810
+ enumerable: true,
3811
+ configurable: true
3812
+ });
3813
+ Text3d.prototype.toLocal = function (position, from, point, skipUpdate, step) {
3814
+ if (step === void 0) { step = pixi_projection.TRANSFORM_STEP.ALL; }
3815
+ return pixi_projection.container3dToLocal.call(this, position, from, point, skipUpdate, step);
3816
+ };
3817
+ Text3d.prototype.isFrontFace = function (forceUpdate) {
3818
+ return pixi_projection.container3dIsFrontFace.call(this, forceUpdate);
3819
+ };
3820
+ Text3d.prototype.getDepth = function (forceUpdate) {
3821
+ return pixi_projection.container3dGetDepth.call(this, forceUpdate);
3822
+ };
3823
+ Object.defineProperty(Text3d.prototype, "position3d", {
3824
+ get: function () {
3825
+ return this.proj.position;
3826
+ },
3827
+ set: function (value) {
3828
+ this.proj.position.copy(value);
3829
+ },
3830
+ enumerable: true,
3831
+ configurable: true
3832
+ });
3833
+ Object.defineProperty(Text3d.prototype, "scale3d", {
3834
+ get: function () {
3835
+ return this.proj.scale;
3836
+ },
3837
+ set: function (value) {
3838
+ this.proj.scale.copy(value);
3839
+ },
3840
+ enumerable: true,
3841
+ configurable: true
3842
+ });
3843
+ Object.defineProperty(Text3d.prototype, "euler", {
3844
+ get: function () {
3845
+ return this.proj.euler;
3846
+ },
3847
+ set: function (value) {
3848
+ this.proj.euler.copy(value);
3849
+ },
3850
+ enumerable: true,
3851
+ configurable: true
3852
+ });
3853
+ Object.defineProperty(Text3d.prototype, "pivot3d", {
3854
+ get: function () {
3855
+ return this.proj.pivot;
3856
+ },
3857
+ set: function (value) {
3858
+ this.proj.pivot.copy(value);
3859
+ },
3860
+ enumerable: true,
3861
+ configurable: true
3862
+ });
3863
+ return Text3d;
3864
+ }(PIXI.Text));
3865
+ pixi_projection.Text3d = Text3d;
3866
+ Text3d.prototype.calculateVertices = pixi_projection.Sprite3d.prototype.calculateVertices;
3867
+ Text3d.prototype.calculateTrimmedVertices = pixi_projection.Sprite3d.prototype.calculateTrimmedVertices;
3868
+ Text3d.prototype._calculateBounds = pixi_projection.Sprite3d.prototype._calculateBounds;
3869
+ Text3d.prototype.containsPoint = pixi_projection.Sprite3d.prototype.containsPoint;
3870
+ Text3d.prototype._renderWebGL = pixi_projection.Sprite3d.prototype._renderWebGL;
3871
+ })(pixi_projection || (pixi_projection = {}));
3872
+ var pixi_projection;
3873
+ (function (pixi_projection) {
3874
+ var containerProps = {
3875
+ worldTransform: {
3876
+ get: pixi_projection.container3dWorldTransform,
3877
+ enumerable: true,
3878
+ configurable: true
3879
+ },
3880
+ position3d: {
3881
+ get: function () { return this.proj.position; },
3882
+ set: function (value) { this.proj.position.copy(value); }
3883
+ },
3884
+ scale3d: {
3885
+ get: function () { return this.proj.scale; },
3886
+ set: function (value) { this.proj.scale.copy(value); }
3887
+ },
3888
+ pivot3d: {
3889
+ get: function () { return this.proj.pivot; },
3890
+ set: function (value) { this.proj.pivot.copy(value); }
3891
+ },
3892
+ euler: {
3893
+ get: function () { return this.proj.euler; },
3894
+ set: function (value) { this.proj.euler.copy(value); }
3895
+ }
3896
+ };
3897
+ function convertTo3d() {
3898
+ if (this.proj)
3899
+ return;
3900
+ this.proj = new pixi_projection.Projection3d(this.transform);
3901
+ this.toLocal = pixi_projection.Container3d.prototype.toLocal;
3902
+ this.isFrontFace = pixi_projection.Container3d.prototype.isFrontFace;
3903
+ this.getDepth = pixi_projection.Container3d.prototype.getDepth;
3904
+ Object.defineProperties(this, containerProps);
3905
+ }
3906
+ PIXI.Container.prototype.convertTo3d = convertTo3d;
3907
+ PIXI.Sprite.prototype.convertTo3d = function () {
3908
+ if (this.proj)
3909
+ return;
3910
+ this.calculateVertices = pixi_projection.Sprite3d.prototype.calculateVertices;
3911
+ this.calculateTrimmedVertices = pixi_projection.Sprite3d.prototype.calculateTrimmedVertices;
3912
+ this._calculateBounds = pixi_projection.Sprite3d.prototype._calculateBounds;
3913
+ this.containsPoint = pixi_projection.Sprite3d.prototype.containsPoint;
3914
+ this.pluginName = 'sprite2d';
3915
+ this.vertexData = new Float32Array(12);
3916
+ convertTo3d.call(this);
3917
+ };
3918
+ PIXI.mesh.Mesh.prototype.convertTo3d = function () {
3919
+ if (this.proj)
3920
+ return;
3921
+ this.pluginName = 'mesh2d';
3922
+ convertTo3d.call(this);
3923
+ };
3924
+ PIXI.Container.prototype.convertSubtreeTo3d = function () {
3925
+ this.convertTo3d();
3926
+ for (var i = 0; i < this.children.length; i++) {
3927
+ this.children[i].convertSubtreeTo3d();
3928
+ }
3929
+ };
3930
+ })(pixi_projection || (pixi_projection = {}));
3931
+ var pixi_projection;
3932
+ (function (pixi_projection) {
3933
+ var Spine2d = (function (_super) {
3934
+ __extends(Spine2d, _super);
3935
+ function Spine2d(spineData) {
3936
+ var _this = _super.call(this, spineData) || this;
3937
+ _this.convertTo2d();
3938
+ return _this;
3939
+ }
3940
+ Spine2d.prototype.newContainer = function () {
3941
+ return new pixi_projection.Container2d();
3942
+ };
3943
+ Spine2d.prototype.newSprite = function (tex) {
3944
+ return new pixi_projection.Sprite2d(tex);
3945
+ };
3946
+ Spine2d.prototype.newGraphics = function () {
3947
+ return new PIXI.Graphics();
3948
+ };
3949
+ Spine2d.prototype.newMesh = function (texture, vertices, uvs, indices, drawMode) {
3950
+ return new pixi_projection.Mesh2d(texture, vertices, uvs, indices, drawMode);
3951
+ };
3952
+ Spine2d.prototype.transformHack = function () {
3953
+ return 2;
3954
+ };
3955
+ return Spine2d;
3956
+ }(PIXI.spine.Spine));
3957
+ pixi_projection.Spine2d = Spine2d;
3958
+ })(pixi_projection || (pixi_projection = {}));
3959
+ var pixi_projection;
3960
+ (function (pixi_projection) {
3961
+ var Spine3d = (function (_super) {
3962
+ __extends(Spine3d, _super);
3963
+ function Spine3d(spineData) {
3964
+ var _this = _super.call(this, spineData) || this;
3965
+ _this.convertTo3d();
3966
+ return _this;
3967
+ }
3968
+ Spine3d.prototype.newContainer = function () {
3969
+ return new pixi_projection.Container3d();
3970
+ };
3971
+ Spine3d.prototype.newSprite = function (tex) {
3972
+ return new pixi_projection.Sprite3d(tex);
3973
+ };
3974
+ Spine3d.prototype.newGraphics = function () {
3975
+ return new PIXI.Graphics();
3976
+ };
3977
+ Spine3d.prototype.newMesh = function (texture, vertices, uvs, indices, drawMode) {
3978
+ return new pixi_projection.Mesh3d(texture, vertices, uvs, indices, drawMode);
3979
+ };
3980
+ Spine3d.prototype.transformHack = function () {
3981
+ return 3;
3982
+ };
3983
+ return Spine3d;
3984
+ }(PIXI.spine.Spine));
3985
+ pixi_projection.Spine3d = Spine3d;
3986
+ })(pixi_projection || (pixi_projection = {}));
3987
+ //# sourceMappingURL=pixi-projection-spine.js.map