@playcanvas/web-components 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/app.d.ts +1 -0
- package/dist/components/particlesystem-component.d.ts +52 -0
- package/dist/index.d.ts +3 -2
- package/dist/pwc.cjs +468 -93
- package/dist/pwc.cjs.map +1 -1
- package/dist/pwc.js +468 -93
- package/dist/pwc.js.map +1 -1
- package/dist/pwc.min.js +1 -1
- package/dist/pwc.min.js.map +1 -1
- package/dist/pwc.mjs +468 -94
- package/dist/pwc.mjs.map +1 -1
- package/dist/scene.d.ts +15 -1
- package/package.json +13 -12
- package/src/app.ts +21 -11
- package/src/asset.ts +53 -1
- package/src/components/particlesystem-component.ts +155 -0
- package/src/index.ts +4 -2
- package/src/scene.ts +35 -4
package/dist/pwc.mjs
CHANGED
|
@@ -13,11 +13,11 @@ class AsyncElement extends HTMLElement {
|
|
|
13
13
|
}
|
|
14
14
|
get closestApp() {
|
|
15
15
|
var _a;
|
|
16
|
-
return (_a = this.parentElement) === null || _a ===
|
|
16
|
+
return (_a = this.parentElement) === null || _a === void 0 ? void 0 : _a.closest('pc-app');
|
|
17
17
|
}
|
|
18
18
|
get closestEntity() {
|
|
19
19
|
var _a;
|
|
20
|
-
return (_a = this.parentElement) === null || _a ===
|
|
20
|
+
return (_a = this.parentElement) === null || _a === void 0 ? void 0 : _a.closest('pc-entity');
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* Called when the element is fully initialized and ready.
|
|
@@ -99,7 +99,7 @@ class AppElement extends AsyncElement {
|
|
|
99
99
|
this._antialias = true;
|
|
100
100
|
this._depth = true;
|
|
101
101
|
this._stencil = true;
|
|
102
|
-
this._highResolution =
|
|
102
|
+
this._highResolution = true;
|
|
103
103
|
this._hierarchyReady = false;
|
|
104
104
|
this._picker = null;
|
|
105
105
|
this._hasPointerListeners = {
|
|
@@ -226,15 +226,26 @@ class AppElement extends AsyncElement {
|
|
|
226
226
|
pointerup: null
|
|
227
227
|
};
|
|
228
228
|
}
|
|
229
|
+
// New helper to convert CSS coordinates to canvas (picker) coordinates
|
|
230
|
+
_getPickerCoordinates(event) {
|
|
231
|
+
// Get the canvas' bounding rectangle in CSS pixels.
|
|
232
|
+
const canvasRect = this._canvas.getBoundingClientRect();
|
|
233
|
+
// Compute scale factors based on canvas actual resolution vs. its CSS display size.
|
|
234
|
+
const scaleX = this._canvas.width / canvasRect.width;
|
|
235
|
+
const scaleY = this._canvas.height / canvasRect.height;
|
|
236
|
+
// Convert the client coordinates accordingly.
|
|
237
|
+
const x = (event.clientX - canvasRect.left) * scaleX;
|
|
238
|
+
const y = (event.clientY - canvasRect.top) * scaleY;
|
|
239
|
+
return { x, y };
|
|
240
|
+
}
|
|
229
241
|
_onPointerMove(event) {
|
|
230
242
|
if (!this._picker || !this.app)
|
|
231
243
|
return;
|
|
232
244
|
const camera = this.app.root.findComponent('camera');
|
|
233
245
|
if (!camera)
|
|
234
246
|
return;
|
|
235
|
-
|
|
236
|
-
const x
|
|
237
|
-
const y = event.clientY - canvasRect.top;
|
|
247
|
+
// Use the helper to convert event coordinates into canvas/picker coordinates.
|
|
248
|
+
const { x, y } = this._getPickerCoordinates(event);
|
|
238
249
|
this._picker.prepare(camera, this.app.scene);
|
|
239
250
|
const selection = this._picker.getSelection(x, y);
|
|
240
251
|
// Get the currently hovered entity by walking up the hierarchy
|
|
@@ -272,9 +283,8 @@ class AppElement extends AsyncElement {
|
|
|
272
283
|
const camera = this.app.root.findComponent('camera');
|
|
273
284
|
if (!camera)
|
|
274
285
|
return;
|
|
275
|
-
|
|
276
|
-
const x
|
|
277
|
-
const y = event.clientY - canvasRect.top;
|
|
286
|
+
// Convert the event's pointer coordinates
|
|
287
|
+
const { x, y } = this._getPickerCoordinates(event);
|
|
278
288
|
this._picker.prepare(camera, this.app.scene);
|
|
279
289
|
const selection = this._picker.getSelection(x, y);
|
|
280
290
|
if (selection.length > 0) {
|
|
@@ -295,9 +305,8 @@ class AppElement extends AsyncElement {
|
|
|
295
305
|
const camera = this.app.root.findComponent('camera');
|
|
296
306
|
if (!camera)
|
|
297
307
|
return;
|
|
298
|
-
|
|
299
|
-
const x
|
|
300
|
-
const y = event.clientY - canvasRect.top;
|
|
308
|
+
// Convert CSS coordinates to picker coordinates
|
|
309
|
+
const { x, y } = this._getPickerCoordinates(event);
|
|
301
310
|
this._picker.prepare(camera, this.app.scene);
|
|
302
311
|
const selection = this._picker.getSelection(x, y);
|
|
303
312
|
if (selection.length > 0) {
|
|
@@ -746,7 +755,7 @@ class EntityElement extends AsyncElement {
|
|
|
746
755
|
if (!this.entity)
|
|
747
756
|
return;
|
|
748
757
|
const closestEntity = this.closestEntity;
|
|
749
|
-
if (closestEntity === null || closestEntity ===
|
|
758
|
+
if (closestEntity === null || closestEntity === void 0 ? void 0 : closestEntity.entity) {
|
|
750
759
|
closestEntity.entity.addChild(this.entity);
|
|
751
760
|
}
|
|
752
761
|
else {
|
|
@@ -968,11 +977,187 @@ class EntityElement extends AsyncElement {
|
|
|
968
977
|
}
|
|
969
978
|
hasListeners(type) {
|
|
970
979
|
var _a;
|
|
971
|
-
return Boolean((_a = this._listeners[type]) === null || _a ===
|
|
980
|
+
return Boolean((_a = this._listeners[type]) === null || _a === void 0 ? void 0 : _a.length);
|
|
972
981
|
}
|
|
973
982
|
}
|
|
974
983
|
customElements.define('pc-entity', EntityElement);
|
|
975
984
|
|
|
985
|
+
// This file is part of meshoptimizer library and is distributed under the terms of MIT License.
|
|
986
|
+
// Copyright (C) 2016-2022, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
|
987
|
+
var MeshoptDecoder = (function() {
|
|
988
|
+
|
|
989
|
+
// Built with clang version 14.0.4
|
|
990
|
+
// Built from meshoptimizer 0.18
|
|
991
|
+
var wasm_base = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb";
|
|
992
|
+
var wasm_simd = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb";
|
|
993
|
+
|
|
994
|
+
var detector = new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]);
|
|
995
|
+
var wasmpack = new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);
|
|
996
|
+
|
|
997
|
+
if (typeof WebAssembly !== 'object') {
|
|
998
|
+
return {
|
|
999
|
+
supported: false,
|
|
1000
|
+
};
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
var wasm = WebAssembly.validate(detector) ? wasm_simd : wasm_base;
|
|
1004
|
+
|
|
1005
|
+
var instance;
|
|
1006
|
+
|
|
1007
|
+
var ready =
|
|
1008
|
+
WebAssembly.instantiate(unpack(wasm), {})
|
|
1009
|
+
.then(function(result) {
|
|
1010
|
+
instance = result.instance;
|
|
1011
|
+
instance.exports.__wasm_call_ctors();
|
|
1012
|
+
});
|
|
1013
|
+
|
|
1014
|
+
function unpack(data) {
|
|
1015
|
+
var result = new Uint8Array(data.length);
|
|
1016
|
+
for (var i = 0; i < data.length; ++i) {
|
|
1017
|
+
var ch = data.charCodeAt(i);
|
|
1018
|
+
result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
|
|
1019
|
+
}
|
|
1020
|
+
var write = 0;
|
|
1021
|
+
for (var i = 0; i < data.length; ++i) {
|
|
1022
|
+
result[write++] = (result[i] < 60) ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];
|
|
1023
|
+
}
|
|
1024
|
+
return result.buffer.slice(0, write);
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
function decode(fun, target, count, size, source, filter) {
|
|
1028
|
+
var sbrk = instance.exports.sbrk;
|
|
1029
|
+
var count4 = (count + 3) & -4;
|
|
1030
|
+
var tp = sbrk(count4 * size);
|
|
1031
|
+
var sp = sbrk(source.length);
|
|
1032
|
+
var heap = new Uint8Array(instance.exports.memory.buffer);
|
|
1033
|
+
heap.set(source, sp);
|
|
1034
|
+
var res = fun(tp, count, size, sp, source.length);
|
|
1035
|
+
if (res == 0 && filter) {
|
|
1036
|
+
filter(tp, count4, size);
|
|
1037
|
+
}
|
|
1038
|
+
target.set(heap.subarray(tp, tp + count * size));
|
|
1039
|
+
sbrk(tp - sbrk(0));
|
|
1040
|
+
if (res != 0) {
|
|
1041
|
+
throw new Error("Malformed buffer data: " + res);
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
var filters = {
|
|
1046
|
+
NONE: "",
|
|
1047
|
+
OCTAHEDRAL: "meshopt_decodeFilterOct",
|
|
1048
|
+
QUATERNION: "meshopt_decodeFilterQuat",
|
|
1049
|
+
EXPONENTIAL: "meshopt_decodeFilterExp",
|
|
1050
|
+
};
|
|
1051
|
+
|
|
1052
|
+
var decoders = {
|
|
1053
|
+
ATTRIBUTES: "meshopt_decodeVertexBuffer",
|
|
1054
|
+
TRIANGLES: "meshopt_decodeIndexBuffer",
|
|
1055
|
+
INDICES: "meshopt_decodeIndexSequence",
|
|
1056
|
+
};
|
|
1057
|
+
|
|
1058
|
+
var workers = [];
|
|
1059
|
+
var requestId = 0;
|
|
1060
|
+
|
|
1061
|
+
function createWorker(url) {
|
|
1062
|
+
var worker = {
|
|
1063
|
+
object: new Worker(url),
|
|
1064
|
+
pending: 0,
|
|
1065
|
+
requests: {}
|
|
1066
|
+
};
|
|
1067
|
+
|
|
1068
|
+
worker.object.onmessage = function(event) {
|
|
1069
|
+
var data = event.data;
|
|
1070
|
+
|
|
1071
|
+
worker.pending -= data.count;
|
|
1072
|
+
worker.requests[data.id][data.action](data.value);
|
|
1073
|
+
|
|
1074
|
+
delete worker.requests[data.id];
|
|
1075
|
+
};
|
|
1076
|
+
|
|
1077
|
+
return worker;
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
function initWorkers(count) {
|
|
1081
|
+
var source =
|
|
1082
|
+
"var instance; var ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(unpack(wasm)) + "]), {})" +
|
|
1083
|
+
".then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });" +
|
|
1084
|
+
"self.onmessage = workerProcess;" +
|
|
1085
|
+
decode.toString() + workerProcess.toString();
|
|
1086
|
+
|
|
1087
|
+
var blob = new Blob([source], {type: 'text/javascript'});
|
|
1088
|
+
var url = URL.createObjectURL(blob);
|
|
1089
|
+
|
|
1090
|
+
for (var i = 0; i < count; ++i) {
|
|
1091
|
+
workers[i] = createWorker(url);
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1094
|
+
URL.revokeObjectURL(url);
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
function decodeWorker(count, size, source, mode, filter) {
|
|
1098
|
+
var worker = workers[0];
|
|
1099
|
+
|
|
1100
|
+
for (var i = 1; i < workers.length; ++i) {
|
|
1101
|
+
if (workers[i].pending < worker.pending) {
|
|
1102
|
+
worker = workers[i];
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
return new Promise(function (resolve, reject) {
|
|
1107
|
+
var data = new Uint8Array(source);
|
|
1108
|
+
var id = requestId++;
|
|
1109
|
+
|
|
1110
|
+
worker.pending += count;
|
|
1111
|
+
worker.requests[id] = { resolve: resolve, reject: reject };
|
|
1112
|
+
worker.object.postMessage({ id: id, count: count, size: size, source: data, mode: mode, filter: filter }, [ data.buffer ]);
|
|
1113
|
+
});
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
function workerProcess(event) {
|
|
1117
|
+
ready.then(function() {
|
|
1118
|
+
var data = event.data;
|
|
1119
|
+
try {
|
|
1120
|
+
var target = new Uint8Array(data.count * data.size);
|
|
1121
|
+
decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);
|
|
1122
|
+
self.postMessage({ id: data.id, count: data.count, action: "resolve", value: target }, [ target.buffer ]);
|
|
1123
|
+
} catch (error) {
|
|
1124
|
+
self.postMessage({ id: data.id, count: data.count, action: "reject", value: error });
|
|
1125
|
+
}
|
|
1126
|
+
});
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
return {
|
|
1130
|
+
ready: ready,
|
|
1131
|
+
supported: true,
|
|
1132
|
+
useWorkers: function(count) {
|
|
1133
|
+
initWorkers(count);
|
|
1134
|
+
},
|
|
1135
|
+
decodeVertexBuffer: function(target, count, size, source, filter) {
|
|
1136
|
+
decode(instance.exports.meshopt_decodeVertexBuffer, target, count, size, source, instance.exports[filters[filter]]);
|
|
1137
|
+
},
|
|
1138
|
+
decodeIndexBuffer: function(target, count, size, source) {
|
|
1139
|
+
decode(instance.exports.meshopt_decodeIndexBuffer, target, count, size, source);
|
|
1140
|
+
},
|
|
1141
|
+
decodeIndexSequence: function(target, count, size, source) {
|
|
1142
|
+
decode(instance.exports.meshopt_decodeIndexSequence, target, count, size, source);
|
|
1143
|
+
},
|
|
1144
|
+
decodeGltfBuffer: function(target, count, size, source, mode, filter) {
|
|
1145
|
+
decode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);
|
|
1146
|
+
},
|
|
1147
|
+
decodeGltfBufferAsync: function(count, size, source, mode, filter) {
|
|
1148
|
+
if (workers.length > 0) {
|
|
1149
|
+
return decodeWorker(count, size, source, decoders[mode], filters[filter]);
|
|
1150
|
+
}
|
|
1151
|
+
|
|
1152
|
+
return ready.then(function() {
|
|
1153
|
+
var target = new Uint8Array(count * size);
|
|
1154
|
+
decode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);
|
|
1155
|
+
return target;
|
|
1156
|
+
});
|
|
1157
|
+
}
|
|
1158
|
+
};
|
|
1159
|
+
})();
|
|
1160
|
+
|
|
976
1161
|
const extToType = new Map([
|
|
977
1162
|
['bin', 'binary'],
|
|
978
1163
|
['css', 'css'],
|
|
@@ -992,6 +1177,27 @@ const extToType = new Map([
|
|
|
992
1177
|
['vert', 'shader'],
|
|
993
1178
|
['webp', 'texture']
|
|
994
1179
|
]);
|
|
1180
|
+
// provide buffer view callback so we can handle models compressed with MeshOptimizer
|
|
1181
|
+
// https://github.com/zeux/meshoptimizer
|
|
1182
|
+
const processBufferView = (gltfBuffer, buffers, continuation) => {
|
|
1183
|
+
if (gltfBuffer.extensions && gltfBuffer.extensions.EXT_meshopt_compression) {
|
|
1184
|
+
const extensionDef = gltfBuffer.extensions.EXT_meshopt_compression;
|
|
1185
|
+
Promise.all([MeshoptDecoder.ready, buffers[extensionDef.buffer]]).then((promiseResult) => {
|
|
1186
|
+
const buffer = promiseResult[1];
|
|
1187
|
+
const byteOffset = extensionDef.byteOffset || 0;
|
|
1188
|
+
const byteLength = extensionDef.byteLength || 0;
|
|
1189
|
+
const count = extensionDef.count;
|
|
1190
|
+
const stride = extensionDef.byteStride;
|
|
1191
|
+
const result = new Uint8Array(count * stride);
|
|
1192
|
+
const source = new Uint8Array(buffer.buffer, buffer.byteOffset + byteOffset, byteLength);
|
|
1193
|
+
MeshoptDecoder.decodeGltfBuffer(result, count, stride, source, extensionDef.mode, extensionDef.filter);
|
|
1194
|
+
continuation(null, result);
|
|
1195
|
+
});
|
|
1196
|
+
}
|
|
1197
|
+
else {
|
|
1198
|
+
continuation(null, null);
|
|
1199
|
+
}
|
|
1200
|
+
};
|
|
995
1201
|
/**
|
|
996
1202
|
* The AssetElement interface provides properties and methods for manipulating
|
|
997
1203
|
* {@link https://developer.playcanvas.com/user-manual/engine/web-components/tags/pc-asset/ | `<pc-asset>`} elements.
|
|
@@ -1018,13 +1224,23 @@ class AssetElement extends HTMLElement {
|
|
|
1018
1224
|
// If no type is specified, try to infer it from the file extension.
|
|
1019
1225
|
if (!type) {
|
|
1020
1226
|
const ext = src.split('.').pop();
|
|
1021
|
-
type = (_a = extToType.get(ext || '')) !== null && _a !==
|
|
1227
|
+
type = (_a = extToType.get(ext || '')) !== null && _a !== void 0 ? _a : null;
|
|
1022
1228
|
}
|
|
1023
1229
|
if (!type) {
|
|
1024
1230
|
console.warn(`Unsupported asset type: ${src}`);
|
|
1025
1231
|
return;
|
|
1026
1232
|
}
|
|
1027
|
-
|
|
1233
|
+
if (type === 'container') {
|
|
1234
|
+
this.asset = new Asset(id, type, { url: src }, undefined, {
|
|
1235
|
+
// @ts-ignore TODO no definition in pc
|
|
1236
|
+
bufferView: {
|
|
1237
|
+
processAsync: processBufferView.bind(this)
|
|
1238
|
+
}
|
|
1239
|
+
});
|
|
1240
|
+
}
|
|
1241
|
+
else {
|
|
1242
|
+
this.asset = new Asset(id, type, { url: src });
|
|
1243
|
+
}
|
|
1028
1244
|
this.asset.preload = !this._lazy;
|
|
1029
1245
|
}
|
|
1030
1246
|
destroyAsset() {
|
|
@@ -1052,7 +1268,7 @@ class AssetElement extends HTMLElement {
|
|
|
1052
1268
|
}
|
|
1053
1269
|
static get(id) {
|
|
1054
1270
|
const assetElement = document.querySelector(`pc-asset[id="${id}"]`);
|
|
1055
|
-
return assetElement === null || assetElement ===
|
|
1271
|
+
return assetElement === null || assetElement === void 0 ? void 0 : assetElement.asset;
|
|
1056
1272
|
}
|
|
1057
1273
|
static get observedAttributes() {
|
|
1058
1274
|
return ['lazy'];
|
|
@@ -1099,7 +1315,7 @@ class ComponentElement extends AsyncElement {
|
|
|
1099
1315
|
initComponent() { }
|
|
1100
1316
|
async connectedCallback() {
|
|
1101
1317
|
var _a;
|
|
1102
|
-
await ((_a = this.closestApp) === null || _a ===
|
|
1318
|
+
await ((_a = this.closestApp) === null || _a === void 0 ? void 0 : _a.ready());
|
|
1103
1319
|
await this.addComponent();
|
|
1104
1320
|
this.initComponent();
|
|
1105
1321
|
this._onReady();
|
|
@@ -1230,7 +1446,7 @@ class CameraComponentElement extends ComponentElement {
|
|
|
1230
1446
|
}
|
|
1231
1447
|
get xrAvailable() {
|
|
1232
1448
|
var _a;
|
|
1233
|
-
const xrManager = (_a = this.component) === null || _a ===
|
|
1449
|
+
const xrManager = (_a = this.component) === null || _a === void 0 ? void 0 : _a.system.app.xr;
|
|
1234
1450
|
return xrManager && xrManager.supported && xrManager.isAvailable(XRTYPE_VR);
|
|
1235
1451
|
}
|
|
1236
1452
|
/**
|
|
@@ -1561,7 +1777,7 @@ class CameraComponentElement extends ComponentElement {
|
|
|
1561
1777
|
var _a;
|
|
1562
1778
|
this._tonemap = value;
|
|
1563
1779
|
if (this.component) {
|
|
1564
|
-
this.component.toneMapping = (_a = tonemaps.get(value)) !== null && _a !==
|
|
1780
|
+
this.component.toneMapping = (_a = tonemaps.get(value)) !== null && _a !== void 0 ? _a : TONEMAP_NONE;
|
|
1565
1781
|
}
|
|
1566
1782
|
}
|
|
1567
1783
|
/**
|
|
@@ -2097,64 +2313,6 @@ class ElementComponentElement extends ComponentElement {
|
|
|
2097
2313
|
}
|
|
2098
2314
|
customElements.define('pc-element', ElementComponentElement);
|
|
2099
2315
|
|
|
2100
|
-
/**
|
|
2101
|
-
* The SplatComponentElement interface provides properties and methods for manipulating
|
|
2102
|
-
* {@link https://developer.playcanvas.com/user-manual/engine/web-components/tags/pc-splat/ | `<pc-splat>`} elements.
|
|
2103
|
-
* The SplatComponentElement interface also inherits the properties and methods of the
|
|
2104
|
-
* {@link HTMLElement} interface.
|
|
2105
|
-
*
|
|
2106
|
-
* @category Components
|
|
2107
|
-
*/
|
|
2108
|
-
class SplatComponentElement extends ComponentElement {
|
|
2109
|
-
/** @ignore */
|
|
2110
|
-
constructor() {
|
|
2111
|
-
super('gsplat');
|
|
2112
|
-
this._asset = '';
|
|
2113
|
-
}
|
|
2114
|
-
getInitialComponentData() {
|
|
2115
|
-
return {
|
|
2116
|
-
asset: AssetElement.get(this._asset)
|
|
2117
|
-
};
|
|
2118
|
-
}
|
|
2119
|
-
/**
|
|
2120
|
-
* Gets the underlying PlayCanvas splat component.
|
|
2121
|
-
* @returns The splat component.
|
|
2122
|
-
*/
|
|
2123
|
-
get component() {
|
|
2124
|
-
return super.component;
|
|
2125
|
-
}
|
|
2126
|
-
/**
|
|
2127
|
-
* Sets id of the `pc-asset` to use for the splat.
|
|
2128
|
-
* @param value - The asset ID.
|
|
2129
|
-
*/
|
|
2130
|
-
set asset(value) {
|
|
2131
|
-
this._asset = value;
|
|
2132
|
-
const asset = AssetElement.get(value);
|
|
2133
|
-
if (this.component && asset) {
|
|
2134
|
-
this.component.asset = asset;
|
|
2135
|
-
}
|
|
2136
|
-
}
|
|
2137
|
-
/**
|
|
2138
|
-
* Gets the id of the `pc-asset` to use for the splat.
|
|
2139
|
-
* @returns The asset ID.
|
|
2140
|
-
*/
|
|
2141
|
-
get asset() {
|
|
2142
|
-
return this._asset;
|
|
2143
|
-
}
|
|
2144
|
-
static get observedAttributes() {
|
|
2145
|
-
return [...super.observedAttributes, 'asset'];
|
|
2146
|
-
}
|
|
2147
|
-
attributeChangedCallback(name, _oldValue, newValue) {
|
|
2148
|
-
super.attributeChangedCallback(name, _oldValue, newValue);
|
|
2149
|
-
switch (name) {
|
|
2150
|
-
case 'asset':
|
|
2151
|
-
this.asset = newValue;
|
|
2152
|
-
break;
|
|
2153
|
-
}
|
|
2154
|
-
}
|
|
2155
|
-
}
|
|
2156
|
-
customElements.define('pc-splat', SplatComponentElement);
|
|
2157
|
-
|
|
2158
2316
|
const shadowTypes = new Map([
|
|
2159
2317
|
['pcf1-16f', SHADOW_PCF1_16F],
|
|
2160
2318
|
['pcf1-32f', SHADOW_PCF1_32F],
|
|
@@ -2423,7 +2581,7 @@ class LightComponentElement extends ComponentElement {
|
|
|
2423
2581
|
var _a;
|
|
2424
2582
|
this._shadowType = value;
|
|
2425
2583
|
if (this.component) {
|
|
2426
|
-
this.component.shadowType = (_a = shadowTypes.get(value)) !== null && _a !==
|
|
2584
|
+
this.component.shadowType = (_a = shadowTypes.get(value)) !== null && _a !== void 0 ? _a : SHADOW_PCF3_32F;
|
|
2427
2585
|
}
|
|
2428
2586
|
}
|
|
2429
2587
|
/**
|
|
@@ -2540,6 +2698,138 @@ class LightComponentElement extends ComponentElement {
|
|
|
2540
2698
|
}
|
|
2541
2699
|
customElements.define('pc-light', LightComponentElement);
|
|
2542
2700
|
|
|
2701
|
+
/**
|
|
2702
|
+
* The ParticleSystemComponentElement interface provides properties and methods for manipulating
|
|
2703
|
+
* {@link https://developer.playcanvas.com/user-manual/engine/web-components/tags/pc-particles/ | `<pc-particles>`} elements.
|
|
2704
|
+
* The ParticleSystemComponentElement interface also inherits the properties and methods of the
|
|
2705
|
+
* {@link HTMLElement} interface.
|
|
2706
|
+
*
|
|
2707
|
+
* @category Components
|
|
2708
|
+
*/
|
|
2709
|
+
class ParticleSystemComponentElement extends ComponentElement {
|
|
2710
|
+
/** @ignore */
|
|
2711
|
+
constructor() {
|
|
2712
|
+
super('particlesystem');
|
|
2713
|
+
this._asset = '';
|
|
2714
|
+
}
|
|
2715
|
+
getInitialComponentData() {
|
|
2716
|
+
var _a;
|
|
2717
|
+
const asset = AssetElement.get(this._asset);
|
|
2718
|
+
if (!asset) {
|
|
2719
|
+
return {};
|
|
2720
|
+
}
|
|
2721
|
+
if (asset.resource.colorMapAsset) {
|
|
2722
|
+
const id = asset.resource.colorMapAsset;
|
|
2723
|
+
const colorMapAsset = (_a = AssetElement.get(id)) === null || _a === void 0 ? void 0 : _a.id;
|
|
2724
|
+
if (colorMapAsset) {
|
|
2725
|
+
asset.resource.colorMapAsset = colorMapAsset;
|
|
2726
|
+
}
|
|
2727
|
+
}
|
|
2728
|
+
return asset.resource;
|
|
2729
|
+
}
|
|
2730
|
+
/**
|
|
2731
|
+
* Gets the underlying PlayCanvas particle system component.
|
|
2732
|
+
* @returns The particle system component.
|
|
2733
|
+
*/
|
|
2734
|
+
get component() {
|
|
2735
|
+
return super.component;
|
|
2736
|
+
}
|
|
2737
|
+
applyConfig(resource) {
|
|
2738
|
+
if (!this.component) {
|
|
2739
|
+
return;
|
|
2740
|
+
}
|
|
2741
|
+
// Set all the config properties on the component
|
|
2742
|
+
for (const key in resource) {
|
|
2743
|
+
if (resource.hasOwnProperty(key)) {
|
|
2744
|
+
this.component[key] = resource[key];
|
|
2745
|
+
}
|
|
2746
|
+
}
|
|
2747
|
+
}
|
|
2748
|
+
async _loadAsset() {
|
|
2749
|
+
var _a;
|
|
2750
|
+
const appElement = await ((_a = this.closestApp) === null || _a === void 0 ? void 0 : _a.ready());
|
|
2751
|
+
const app = appElement === null || appElement === void 0 ? void 0 : appElement.app;
|
|
2752
|
+
const asset = AssetElement.get(this._asset);
|
|
2753
|
+
if (!asset) {
|
|
2754
|
+
return;
|
|
2755
|
+
}
|
|
2756
|
+
if (asset.loaded) {
|
|
2757
|
+
this.applyConfig(asset.resource);
|
|
2758
|
+
}
|
|
2759
|
+
else {
|
|
2760
|
+
asset.once('load', () => {
|
|
2761
|
+
this.applyConfig(asset.resource);
|
|
2762
|
+
});
|
|
2763
|
+
app.assets.load(asset);
|
|
2764
|
+
}
|
|
2765
|
+
}
|
|
2766
|
+
/**
|
|
2767
|
+
* Sets the id of the `pc-asset` to use for the model.
|
|
2768
|
+
* @param value - The asset ID.
|
|
2769
|
+
*/
|
|
2770
|
+
set asset(value) {
|
|
2771
|
+
this._asset = value;
|
|
2772
|
+
if (this.isConnected) {
|
|
2773
|
+
this._loadAsset();
|
|
2774
|
+
}
|
|
2775
|
+
}
|
|
2776
|
+
/**
|
|
2777
|
+
* Gets the id of the `pc-asset` to use for the model.
|
|
2778
|
+
* @returns The asset ID.
|
|
2779
|
+
*/
|
|
2780
|
+
get asset() {
|
|
2781
|
+
return this._asset;
|
|
2782
|
+
}
|
|
2783
|
+
// Control methods
|
|
2784
|
+
/**
|
|
2785
|
+
* Starts playing the particle system
|
|
2786
|
+
*/
|
|
2787
|
+
play() {
|
|
2788
|
+
if (this.component) {
|
|
2789
|
+
this.component.play();
|
|
2790
|
+
}
|
|
2791
|
+
}
|
|
2792
|
+
/**
|
|
2793
|
+
* Pauses the particle system
|
|
2794
|
+
*/
|
|
2795
|
+
pause() {
|
|
2796
|
+
if (this.component) {
|
|
2797
|
+
this.component.pause();
|
|
2798
|
+
}
|
|
2799
|
+
}
|
|
2800
|
+
/**
|
|
2801
|
+
* Resets the particle system
|
|
2802
|
+
*/
|
|
2803
|
+
reset() {
|
|
2804
|
+
if (this.component) {
|
|
2805
|
+
this.component.reset();
|
|
2806
|
+
}
|
|
2807
|
+
}
|
|
2808
|
+
/**
|
|
2809
|
+
* Stops the particle system
|
|
2810
|
+
*/
|
|
2811
|
+
stop() {
|
|
2812
|
+
if (this.component) {
|
|
2813
|
+
this.component.stop();
|
|
2814
|
+
}
|
|
2815
|
+
}
|
|
2816
|
+
static get observedAttributes() {
|
|
2817
|
+
return [
|
|
2818
|
+
...super.observedAttributes,
|
|
2819
|
+
'asset'
|
|
2820
|
+
];
|
|
2821
|
+
}
|
|
2822
|
+
attributeChangedCallback(name, _oldValue, newValue) {
|
|
2823
|
+
super.attributeChangedCallback(name, _oldValue, newValue);
|
|
2824
|
+
switch (name) {
|
|
2825
|
+
case 'asset':
|
|
2826
|
+
this.asset = newValue;
|
|
2827
|
+
break;
|
|
2828
|
+
}
|
|
2829
|
+
}
|
|
2830
|
+
}
|
|
2831
|
+
customElements.define('pc-particles', ParticleSystemComponentElement);
|
|
2832
|
+
|
|
2543
2833
|
/**
|
|
2544
2834
|
* The MaterialElement interface provides properties and methods for manipulating
|
|
2545
2835
|
* {@link https://developer.playcanvas.com/user-manual/engine/web-components/tags/pc-material/ | `<pc-material>`} elements.
|
|
@@ -2630,7 +2920,7 @@ class MaterialElement extends HTMLElement {
|
|
|
2630
2920
|
}
|
|
2631
2921
|
static get(id) {
|
|
2632
2922
|
const materialElement = document.querySelector(`pc-material[id="${id}"]`);
|
|
2633
|
-
return materialElement === null || materialElement ===
|
|
2923
|
+
return materialElement === null || materialElement === void 0 ? void 0 : materialElement.material;
|
|
2634
2924
|
}
|
|
2635
2925
|
static get observedAttributes() {
|
|
2636
2926
|
return ['diffuse', 'diffuse-map', 'metalness-map', 'normal-map', 'roughness-map'];
|
|
@@ -3310,7 +3600,7 @@ class ScriptComponentElement extends ComponentElement {
|
|
|
3310
3600
|
disconnectedCallback() {
|
|
3311
3601
|
var _a;
|
|
3312
3602
|
this.observer.disconnect();
|
|
3313
|
-
(_a = super.disconnectedCallback) === null || _a ===
|
|
3603
|
+
(_a = super.disconnectedCallback) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
3314
3604
|
}
|
|
3315
3605
|
/**
|
|
3316
3606
|
* Gets the underlying PlayCanvas script component.
|
|
@@ -3625,7 +3915,7 @@ class SoundSlotElement extends AsyncElement {
|
|
|
3625
3915
|
}
|
|
3626
3916
|
async connectedCallback() {
|
|
3627
3917
|
var _a;
|
|
3628
|
-
await ((_a = this.soundElement) === null || _a ===
|
|
3918
|
+
await ((_a = this.soundElement) === null || _a === void 0 ? void 0 : _a.ready());
|
|
3629
3919
|
const options = {
|
|
3630
3920
|
autoPlay: this._autoPlay,
|
|
3631
3921
|
loop: this._loop,
|
|
@@ -3661,7 +3951,7 @@ class SoundSlotElement extends AsyncElement {
|
|
|
3661
3951
|
var _a;
|
|
3662
3952
|
this._asset = value;
|
|
3663
3953
|
if (this.soundSlot) {
|
|
3664
|
-
const id = (_a = AssetElement.get(value)) === null || _a ===
|
|
3954
|
+
const id = (_a = AssetElement.get(value)) === null || _a === void 0 ? void 0 : _a.id;
|
|
3665
3955
|
if (id) {
|
|
3666
3956
|
this.soundSlot.asset = id;
|
|
3667
3957
|
}
|
|
@@ -3844,6 +4134,64 @@ class SoundSlotElement extends AsyncElement {
|
|
|
3844
4134
|
}
|
|
3845
4135
|
customElements.define('pc-sound', SoundSlotElement);
|
|
3846
4136
|
|
|
4137
|
+
/**
|
|
4138
|
+
* The SplatComponentElement interface provides properties and methods for manipulating
|
|
4139
|
+
* {@link https://developer.playcanvas.com/user-manual/engine/web-components/tags/pc-splat/ | `<pc-splat>`} elements.
|
|
4140
|
+
* The SplatComponentElement interface also inherits the properties and methods of the
|
|
4141
|
+
* {@link HTMLElement} interface.
|
|
4142
|
+
*
|
|
4143
|
+
* @category Components
|
|
4144
|
+
*/
|
|
4145
|
+
class SplatComponentElement extends ComponentElement {
|
|
4146
|
+
/** @ignore */
|
|
4147
|
+
constructor() {
|
|
4148
|
+
super('gsplat');
|
|
4149
|
+
this._asset = '';
|
|
4150
|
+
}
|
|
4151
|
+
getInitialComponentData() {
|
|
4152
|
+
return {
|
|
4153
|
+
asset: AssetElement.get(this._asset)
|
|
4154
|
+
};
|
|
4155
|
+
}
|
|
4156
|
+
/**
|
|
4157
|
+
* Gets the underlying PlayCanvas splat component.
|
|
4158
|
+
* @returns The splat component.
|
|
4159
|
+
*/
|
|
4160
|
+
get component() {
|
|
4161
|
+
return super.component;
|
|
4162
|
+
}
|
|
4163
|
+
/**
|
|
4164
|
+
* Sets id of the `pc-asset` to use for the splat.
|
|
4165
|
+
* @param value - The asset ID.
|
|
4166
|
+
*/
|
|
4167
|
+
set asset(value) {
|
|
4168
|
+
this._asset = value;
|
|
4169
|
+
const asset = AssetElement.get(value);
|
|
4170
|
+
if (this.component && asset) {
|
|
4171
|
+
this.component.asset = asset;
|
|
4172
|
+
}
|
|
4173
|
+
}
|
|
4174
|
+
/**
|
|
4175
|
+
* Gets the id of the `pc-asset` to use for the splat.
|
|
4176
|
+
* @returns The asset ID.
|
|
4177
|
+
*/
|
|
4178
|
+
get asset() {
|
|
4179
|
+
return this._asset;
|
|
4180
|
+
}
|
|
4181
|
+
static get observedAttributes() {
|
|
4182
|
+
return [...super.observedAttributes, 'asset'];
|
|
4183
|
+
}
|
|
4184
|
+
attributeChangedCallback(name, _oldValue, newValue) {
|
|
4185
|
+
super.attributeChangedCallback(name, _oldValue, newValue);
|
|
4186
|
+
switch (name) {
|
|
4187
|
+
case 'asset':
|
|
4188
|
+
this.asset = newValue;
|
|
4189
|
+
break;
|
|
4190
|
+
}
|
|
4191
|
+
}
|
|
4192
|
+
}
|
|
4193
|
+
customElements.define('pc-splat', SplatComponentElement);
|
|
4194
|
+
|
|
3847
4195
|
/**
|
|
3848
4196
|
* The ModelElement interface provides properties and methods for manipulating
|
|
3849
4197
|
* {@link https://developer.playcanvas.com/user-manual/engine/web-components/tags/pc-model/ | `<pc-model>`} elements.
|
|
@@ -3889,8 +4237,8 @@ class ModelElement extends AsyncElement {
|
|
|
3889
4237
|
async _loadModel() {
|
|
3890
4238
|
var _a;
|
|
3891
4239
|
this._unloadModel();
|
|
3892
|
-
const appElement = await ((_a = this.closestApp) === null || _a ===
|
|
3893
|
-
const app = appElement === null || appElement ===
|
|
4240
|
+
const appElement = await ((_a = this.closestApp) === null || _a === void 0 ? void 0 : _a.ready());
|
|
4241
|
+
const app = appElement === null || appElement === void 0 ? void 0 : appElement.app;
|
|
3894
4242
|
const asset = AssetElement.get(this._asset);
|
|
3895
4243
|
if (!asset) {
|
|
3896
4244
|
return;
|
|
@@ -3907,7 +4255,7 @@ class ModelElement extends AsyncElement {
|
|
|
3907
4255
|
}
|
|
3908
4256
|
_unloadModel() {
|
|
3909
4257
|
var _a;
|
|
3910
|
-
(_a = this._entity) === null || _a ===
|
|
4258
|
+
(_a = this._entity) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
3911
4259
|
this._entity = null;
|
|
3912
4260
|
}
|
|
3913
4261
|
/**
|
|
@@ -3969,6 +4317,10 @@ class SceneElement extends AsyncElement {
|
|
|
3969
4317
|
* The end distance of the fog.
|
|
3970
4318
|
*/
|
|
3971
4319
|
this._fogEnd = 1000;
|
|
4320
|
+
/**
|
|
4321
|
+
* The gravity of the scene.
|
|
4322
|
+
*/
|
|
4323
|
+
this._gravity = new Vec3(0, -9.81, 0);
|
|
3972
4324
|
/**
|
|
3973
4325
|
* The PlayCanvas scene instance.
|
|
3974
4326
|
*/
|
|
@@ -3976,7 +4328,7 @@ class SceneElement extends AsyncElement {
|
|
|
3976
4328
|
}
|
|
3977
4329
|
async connectedCallback() {
|
|
3978
4330
|
var _a;
|
|
3979
|
-
await ((_a = this.closestApp) === null || _a ===
|
|
4331
|
+
await ((_a = this.closestApp) === null || _a === void 0 ? void 0 : _a.ready());
|
|
3980
4332
|
this.scene = this.closestApp.app.scene;
|
|
3981
4333
|
this.updateSceneSettings();
|
|
3982
4334
|
this._onReady();
|
|
@@ -3988,7 +4340,8 @@ class SceneElement extends AsyncElement {
|
|
|
3988
4340
|
this.scene.fog.density = this._fogDensity;
|
|
3989
4341
|
this.scene.fog.start = this._fogStart;
|
|
3990
4342
|
this.scene.fog.end = this._fogEnd;
|
|
3991
|
-
|
|
4343
|
+
const appElement = this.parentElement;
|
|
4344
|
+
appElement.app.systems.rigidbody.gravity.copy(this._gravity);
|
|
3992
4345
|
}
|
|
3993
4346
|
}
|
|
3994
4347
|
/**
|
|
@@ -4076,8 +4429,26 @@ class SceneElement extends AsyncElement {
|
|
|
4076
4429
|
get fogEnd() {
|
|
4077
4430
|
return this._fogEnd;
|
|
4078
4431
|
}
|
|
4432
|
+
/**
|
|
4433
|
+
* Sets the gravity of the scene.
|
|
4434
|
+
* @param value - The gravity.
|
|
4435
|
+
*/
|
|
4436
|
+
set gravity(value) {
|
|
4437
|
+
this._gravity = value;
|
|
4438
|
+
if (this.scene) {
|
|
4439
|
+
const appElement = this.parentElement;
|
|
4440
|
+
appElement.app.systems.rigidbody.gravity.copy(value);
|
|
4441
|
+
}
|
|
4442
|
+
}
|
|
4443
|
+
/**
|
|
4444
|
+
* Gets the gravity of the scene.
|
|
4445
|
+
* @returns The gravity.
|
|
4446
|
+
*/
|
|
4447
|
+
get gravity() {
|
|
4448
|
+
return this._gravity;
|
|
4449
|
+
}
|
|
4079
4450
|
static get observedAttributes() {
|
|
4080
|
-
return ['fog', 'fog-color', 'fog-density', 'fog-start', 'fog-end'];
|
|
4451
|
+
return ['fog', 'fog-color', 'fog-density', 'fog-start', 'fog-end', 'gravity'];
|
|
4081
4452
|
}
|
|
4082
4453
|
attributeChangedCallback(name, _oldValue, newValue) {
|
|
4083
4454
|
switch (name) {
|
|
@@ -4096,6 +4467,9 @@ class SceneElement extends AsyncElement {
|
|
|
4096
4467
|
case 'fog-end':
|
|
4097
4468
|
this.fogEnd = parseFloat(newValue);
|
|
4098
4469
|
break;
|
|
4470
|
+
case 'gravity':
|
|
4471
|
+
this.gravity = parseVec3(newValue);
|
|
4472
|
+
break;
|
|
4099
4473
|
// ... handle other attributes as well
|
|
4100
4474
|
}
|
|
4101
4475
|
}
|
|
@@ -4150,8 +4524,8 @@ class SkyElement extends AsyncElement {
|
|
|
4150
4524
|
}
|
|
4151
4525
|
async _loadSkybox() {
|
|
4152
4526
|
var _a;
|
|
4153
|
-
const appElement = await ((_a = this.closestApp) === null || _a ===
|
|
4154
|
-
const app = appElement === null || appElement ===
|
|
4527
|
+
const appElement = await ((_a = this.closestApp) === null || _a === void 0 ? void 0 : _a.ready());
|
|
4528
|
+
const app = appElement === null || appElement === void 0 ? void 0 : appElement.app;
|
|
4155
4529
|
if (!app) {
|
|
4156
4530
|
return;
|
|
4157
4531
|
}
|
|
@@ -4174,10 +4548,10 @@ class SkyElement extends AsyncElement {
|
|
|
4174
4548
|
var _a, _b;
|
|
4175
4549
|
if (!this._scene)
|
|
4176
4550
|
return;
|
|
4177
|
-
(_a = this._scene.skybox) === null || _a ===
|
|
4551
|
+
(_a = this._scene.skybox) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
4178
4552
|
// @ts-ignore
|
|
4179
4553
|
this._scene.skybox = null;
|
|
4180
|
-
(_b = this._scene.envAtlas) === null || _b ===
|
|
4554
|
+
(_b = this._scene.envAtlas) === null || _b === void 0 ? void 0 : _b.destroy();
|
|
4181
4555
|
// @ts-ignore
|
|
4182
4556
|
this._scene.envAtlas = null;
|
|
4183
4557
|
this._scene = null;
|
|
@@ -4353,5 +4727,5 @@ class SkyElement extends AsyncElement {
|
|
|
4353
4727
|
}
|
|
4354
4728
|
customElements.define('pc-sky', SkyElement);
|
|
4355
4729
|
|
|
4356
|
-
export { AppElement, AssetElement, AsyncElement, CameraComponentElement, CollisionComponentElement, ComponentElement, ElementComponentElement, EntityElement, LightComponentElement, ListenerComponentElement, MaterialElement, ModelElement, ModuleElement, RenderComponentElement, RigidBodyComponentElement, SceneElement, ScreenComponentElement, ScriptComponentElement, ScriptElement, SkyElement, SoundComponentElement, SoundSlotElement, SplatComponentElement };
|
|
4730
|
+
export { AppElement, AssetElement, AsyncElement, CameraComponentElement, CollisionComponentElement, ComponentElement, ElementComponentElement, EntityElement, LightComponentElement, ListenerComponentElement, MaterialElement, ModelElement, ModuleElement, ParticleSystemComponentElement, RenderComponentElement, RigidBodyComponentElement, SceneElement, ScreenComponentElement, ScriptComponentElement, ScriptElement, SkyElement, SoundComponentElement, SoundSlotElement, SplatComponentElement };
|
|
4357
4731
|
//# sourceMappingURL=pwc.mjs.map
|