1 | "use strict";
|
2 | var constants = require("@pixi/constants"), AbstractMultiResource = require("./AbstractMultiResource.js");
|
3 | const _CubeResource = class _CubeResource2 extends AbstractMultiResource.AbstractMultiResource {
|
4 | |
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | constructor(source, options) {
|
15 | const { width, height, autoLoad, linkBaseTexture } = options || {};
|
16 | if (source && source.length !== _CubeResource2.SIDES)
|
17 | throw new Error(`Invalid length. Got ${source.length}, expected 6`);
|
18 | super(6, { width, height });
|
19 | for (let i = 0; i < _CubeResource2.SIDES; i++)
|
20 | this.items[i].target = constants.TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + i;
|
21 | this.linkBaseTexture = linkBaseTexture !== !1, source && this.initFromArray(source, options), autoLoad !== !1 && this.load();
|
22 | }
|
23 | |
24 |
|
25 |
|
26 |
|
27 | bind(baseTexture) {
|
28 | super.bind(baseTexture), baseTexture.target = constants.TARGETS.TEXTURE_CUBE_MAP;
|
29 | }
|
30 | addBaseTextureAt(baseTexture, index, linkBaseTexture) {
|
31 | if (linkBaseTexture === void 0 && (linkBaseTexture = this.linkBaseTexture), !this.items[index])
|
32 | throw new Error(`Index ${index} is out of bounds`);
|
33 | if (!this.linkBaseTexture || baseTexture.parentTextureArray || Object.keys(baseTexture._glTextures).length > 0)
|
34 | if (baseTexture.resource)
|
35 | this.addResourceAt(baseTexture.resource, index);
|
36 | else
|
37 | throw new Error("CubeResource does not support copying of renderTexture.");
|
38 | else
|
39 | baseTexture.target = constants.TARGETS.TEXTURE_CUBE_MAP_POSITIVE_X + index, baseTexture.parentTextureArray = this.baseTexture, this.items[index] = baseTexture;
|
40 | return baseTexture.valid && !this.valid && this.resize(baseTexture.realWidth, baseTexture.realHeight), this.items[index] = baseTexture, this;
|
41 | }
|
42 | |
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 | upload(renderer, _baseTexture, glTexture) {
|
50 | const dirty = this.itemDirtyIds;
|
51 | for (let i = 0; i < _CubeResource2.SIDES; i++) {
|
52 | const side = this.items[i];
|
53 | (dirty[i] < side.dirtyId || glTexture.dirtyId < _baseTexture.dirtyId) && (side.valid && side.resource ? (side.resource.upload(renderer, side, glTexture), dirty[i] = side.dirtyId) : dirty[i] < -1 && (renderer.gl.texImage2D(
|
54 | side.target,
|
55 | 0,
|
56 | glTexture.internalFormat,
|
57 | _baseTexture.realWidth,
|
58 | _baseTexture.realHeight,
|
59 | 0,
|
60 | _baseTexture.format,
|
61 | glTexture.type,
|
62 | null
|
63 | ), dirty[i] = -1));
|
64 | }
|
65 | return !0;
|
66 | }
|
67 | |
68 |
|
69 |
|
70 |
|
71 |
|
72 | static test(source) {
|
73 | return Array.isArray(source) && source.length === _CubeResource2.SIDES;
|
74 | }
|
75 | };
|
76 | _CubeResource.SIDES = 6;
|
77 | let CubeResource = _CubeResource;
|
78 | exports.CubeResource = CubeResource;
|
79 |
|