@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.cjs
CHANGED
|
@@ -15,11 +15,11 @@ class AsyncElement extends HTMLElement {
|
|
|
15
15
|
}
|
|
16
16
|
get closestApp() {
|
|
17
17
|
var _a;
|
|
18
|
-
return (_a = this.parentElement) === null || _a ===
|
|
18
|
+
return (_a = this.parentElement) === null || _a === void 0 ? void 0 : _a.closest('pc-app');
|
|
19
19
|
}
|
|
20
20
|
get closestEntity() {
|
|
21
21
|
var _a;
|
|
22
|
-
return (_a = this.parentElement) === null || _a ===
|
|
22
|
+
return (_a = this.parentElement) === null || _a === void 0 ? void 0 : _a.closest('pc-entity');
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Called when the element is fully initialized and ready.
|
|
@@ -101,7 +101,7 @@ class AppElement extends AsyncElement {
|
|
|
101
101
|
this._antialias = true;
|
|
102
102
|
this._depth = true;
|
|
103
103
|
this._stencil = true;
|
|
104
|
-
this._highResolution =
|
|
104
|
+
this._highResolution = true;
|
|
105
105
|
this._hierarchyReady = false;
|
|
106
106
|
this._picker = null;
|
|
107
107
|
this._hasPointerListeners = {
|
|
@@ -228,15 +228,26 @@ class AppElement extends AsyncElement {
|
|
|
228
228
|
pointerup: null
|
|
229
229
|
};
|
|
230
230
|
}
|
|
231
|
+
// New helper to convert CSS coordinates to canvas (picker) coordinates
|
|
232
|
+
_getPickerCoordinates(event) {
|
|
233
|
+
// Get the canvas' bounding rectangle in CSS pixels.
|
|
234
|
+
const canvasRect = this._canvas.getBoundingClientRect();
|
|
235
|
+
// Compute scale factors based on canvas actual resolution vs. its CSS display size.
|
|
236
|
+
const scaleX = this._canvas.width / canvasRect.width;
|
|
237
|
+
const scaleY = this._canvas.height / canvasRect.height;
|
|
238
|
+
// Convert the client coordinates accordingly.
|
|
239
|
+
const x = (event.clientX - canvasRect.left) * scaleX;
|
|
240
|
+
const y = (event.clientY - canvasRect.top) * scaleY;
|
|
241
|
+
return { x, y };
|
|
242
|
+
}
|
|
231
243
|
_onPointerMove(event) {
|
|
232
244
|
if (!this._picker || !this.app)
|
|
233
245
|
return;
|
|
234
246
|
const camera = this.app.root.findComponent('camera');
|
|
235
247
|
if (!camera)
|
|
236
248
|
return;
|
|
237
|
-
|
|
238
|
-
const x
|
|
239
|
-
const y = event.clientY - canvasRect.top;
|
|
249
|
+
// Use the helper to convert event coordinates into canvas/picker coordinates.
|
|
250
|
+
const { x, y } = this._getPickerCoordinates(event);
|
|
240
251
|
this._picker.prepare(camera, this.app.scene);
|
|
241
252
|
const selection = this._picker.getSelection(x, y);
|
|
242
253
|
// Get the currently hovered entity by walking up the hierarchy
|
|
@@ -274,9 +285,8 @@ class AppElement extends AsyncElement {
|
|
|
274
285
|
const camera = this.app.root.findComponent('camera');
|
|
275
286
|
if (!camera)
|
|
276
287
|
return;
|
|
277
|
-
|
|
278
|
-
const x
|
|
279
|
-
const y = event.clientY - canvasRect.top;
|
|
288
|
+
// Convert the event's pointer coordinates
|
|
289
|
+
const { x, y } = this._getPickerCoordinates(event);
|
|
280
290
|
this._picker.prepare(camera, this.app.scene);
|
|
281
291
|
const selection = this._picker.getSelection(x, y);
|
|
282
292
|
if (selection.length > 0) {
|
|
@@ -297,9 +307,8 @@ class AppElement extends AsyncElement {
|
|
|
297
307
|
const camera = this.app.root.findComponent('camera');
|
|
298
308
|
if (!camera)
|
|
299
309
|
return;
|
|
300
|
-
|
|
301
|
-
const x
|
|
302
|
-
const y = event.clientY - canvasRect.top;
|
|
310
|
+
// Convert CSS coordinates to picker coordinates
|
|
311
|
+
const { x, y } = this._getPickerCoordinates(event);
|
|
303
312
|
this._picker.prepare(camera, this.app.scene);
|
|
304
313
|
const selection = this._picker.getSelection(x, y);
|
|
305
314
|
if (selection.length > 0) {
|
|
@@ -748,7 +757,7 @@ class EntityElement extends AsyncElement {
|
|
|
748
757
|
if (!this.entity)
|
|
749
758
|
return;
|
|
750
759
|
const closestEntity = this.closestEntity;
|
|
751
|
-
if (closestEntity === null || closestEntity ===
|
|
760
|
+
if (closestEntity === null || closestEntity === void 0 ? void 0 : closestEntity.entity) {
|
|
752
761
|
closestEntity.entity.addChild(this.entity);
|
|
753
762
|
}
|
|
754
763
|
else {
|
|
@@ -970,11 +979,187 @@ class EntityElement extends AsyncElement {
|
|
|
970
979
|
}
|
|
971
980
|
hasListeners(type) {
|
|
972
981
|
var _a;
|
|
973
|
-
return Boolean((_a = this._listeners[type]) === null || _a ===
|
|
982
|
+
return Boolean((_a = this._listeners[type]) === null || _a === void 0 ? void 0 : _a.length);
|
|
974
983
|
}
|
|
975
984
|
}
|
|
976
985
|
customElements.define('pc-entity', EntityElement);
|
|
977
986
|
|
|
987
|
+
// This file is part of meshoptimizer library and is distributed under the terms of MIT License.
|
|
988
|
+
// Copyright (C) 2016-2022, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
|
989
|
+
var MeshoptDecoder = (function() {
|
|
990
|
+
|
|
991
|
+
// Built with clang version 14.0.4
|
|
992
|
+
// Built from meshoptimizer 0.18
|
|
993
|
+
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";
|
|
994
|
+
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";
|
|
995
|
+
|
|
996
|
+
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]);
|
|
997
|
+
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]);
|
|
998
|
+
|
|
999
|
+
if (typeof WebAssembly !== 'object') {
|
|
1000
|
+
return {
|
|
1001
|
+
supported: false,
|
|
1002
|
+
};
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
var wasm = WebAssembly.validate(detector) ? wasm_simd : wasm_base;
|
|
1006
|
+
|
|
1007
|
+
var instance;
|
|
1008
|
+
|
|
1009
|
+
var ready =
|
|
1010
|
+
WebAssembly.instantiate(unpack(wasm), {})
|
|
1011
|
+
.then(function(result) {
|
|
1012
|
+
instance = result.instance;
|
|
1013
|
+
instance.exports.__wasm_call_ctors();
|
|
1014
|
+
});
|
|
1015
|
+
|
|
1016
|
+
function unpack(data) {
|
|
1017
|
+
var result = new Uint8Array(data.length);
|
|
1018
|
+
for (var i = 0; i < data.length; ++i) {
|
|
1019
|
+
var ch = data.charCodeAt(i);
|
|
1020
|
+
result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
|
|
1021
|
+
}
|
|
1022
|
+
var write = 0;
|
|
1023
|
+
for (var i = 0; i < data.length; ++i) {
|
|
1024
|
+
result[write++] = (result[i] < 60) ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];
|
|
1025
|
+
}
|
|
1026
|
+
return result.buffer.slice(0, write);
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
function decode(fun, target, count, size, source, filter) {
|
|
1030
|
+
var sbrk = instance.exports.sbrk;
|
|
1031
|
+
var count4 = (count + 3) & -4;
|
|
1032
|
+
var tp = sbrk(count4 * size);
|
|
1033
|
+
var sp = sbrk(source.length);
|
|
1034
|
+
var heap = new Uint8Array(instance.exports.memory.buffer);
|
|
1035
|
+
heap.set(source, sp);
|
|
1036
|
+
var res = fun(tp, count, size, sp, source.length);
|
|
1037
|
+
if (res == 0 && filter) {
|
|
1038
|
+
filter(tp, count4, size);
|
|
1039
|
+
}
|
|
1040
|
+
target.set(heap.subarray(tp, tp + count * size));
|
|
1041
|
+
sbrk(tp - sbrk(0));
|
|
1042
|
+
if (res != 0) {
|
|
1043
|
+
throw new Error("Malformed buffer data: " + res);
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
var filters = {
|
|
1048
|
+
NONE: "",
|
|
1049
|
+
OCTAHEDRAL: "meshopt_decodeFilterOct",
|
|
1050
|
+
QUATERNION: "meshopt_decodeFilterQuat",
|
|
1051
|
+
EXPONENTIAL: "meshopt_decodeFilterExp",
|
|
1052
|
+
};
|
|
1053
|
+
|
|
1054
|
+
var decoders = {
|
|
1055
|
+
ATTRIBUTES: "meshopt_decodeVertexBuffer",
|
|
1056
|
+
TRIANGLES: "meshopt_decodeIndexBuffer",
|
|
1057
|
+
INDICES: "meshopt_decodeIndexSequence",
|
|
1058
|
+
};
|
|
1059
|
+
|
|
1060
|
+
var workers = [];
|
|
1061
|
+
var requestId = 0;
|
|
1062
|
+
|
|
1063
|
+
function createWorker(url) {
|
|
1064
|
+
var worker = {
|
|
1065
|
+
object: new Worker(url),
|
|
1066
|
+
pending: 0,
|
|
1067
|
+
requests: {}
|
|
1068
|
+
};
|
|
1069
|
+
|
|
1070
|
+
worker.object.onmessage = function(event) {
|
|
1071
|
+
var data = event.data;
|
|
1072
|
+
|
|
1073
|
+
worker.pending -= data.count;
|
|
1074
|
+
worker.requests[data.id][data.action](data.value);
|
|
1075
|
+
|
|
1076
|
+
delete worker.requests[data.id];
|
|
1077
|
+
};
|
|
1078
|
+
|
|
1079
|
+
return worker;
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
function initWorkers(count) {
|
|
1083
|
+
var source =
|
|
1084
|
+
"var instance; var ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(unpack(wasm)) + "]), {})" +
|
|
1085
|
+
".then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });" +
|
|
1086
|
+
"self.onmessage = workerProcess;" +
|
|
1087
|
+
decode.toString() + workerProcess.toString();
|
|
1088
|
+
|
|
1089
|
+
var blob = new Blob([source], {type: 'text/javascript'});
|
|
1090
|
+
var url = URL.createObjectURL(blob);
|
|
1091
|
+
|
|
1092
|
+
for (var i = 0; i < count; ++i) {
|
|
1093
|
+
workers[i] = createWorker(url);
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
URL.revokeObjectURL(url);
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
function decodeWorker(count, size, source, mode, filter) {
|
|
1100
|
+
var worker = workers[0];
|
|
1101
|
+
|
|
1102
|
+
for (var i = 1; i < workers.length; ++i) {
|
|
1103
|
+
if (workers[i].pending < worker.pending) {
|
|
1104
|
+
worker = workers[i];
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
return new Promise(function (resolve, reject) {
|
|
1109
|
+
var data = new Uint8Array(source);
|
|
1110
|
+
var id = requestId++;
|
|
1111
|
+
|
|
1112
|
+
worker.pending += count;
|
|
1113
|
+
worker.requests[id] = { resolve: resolve, reject: reject };
|
|
1114
|
+
worker.object.postMessage({ id: id, count: count, size: size, source: data, mode: mode, filter: filter }, [ data.buffer ]);
|
|
1115
|
+
});
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
function workerProcess(event) {
|
|
1119
|
+
ready.then(function() {
|
|
1120
|
+
var data = event.data;
|
|
1121
|
+
try {
|
|
1122
|
+
var target = new Uint8Array(data.count * data.size);
|
|
1123
|
+
decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);
|
|
1124
|
+
self.postMessage({ id: data.id, count: data.count, action: "resolve", value: target }, [ target.buffer ]);
|
|
1125
|
+
} catch (error) {
|
|
1126
|
+
self.postMessage({ id: data.id, count: data.count, action: "reject", value: error });
|
|
1127
|
+
}
|
|
1128
|
+
});
|
|
1129
|
+
}
|
|
1130
|
+
|
|
1131
|
+
return {
|
|
1132
|
+
ready: ready,
|
|
1133
|
+
supported: true,
|
|
1134
|
+
useWorkers: function(count) {
|
|
1135
|
+
initWorkers(count);
|
|
1136
|
+
},
|
|
1137
|
+
decodeVertexBuffer: function(target, count, size, source, filter) {
|
|
1138
|
+
decode(instance.exports.meshopt_decodeVertexBuffer, target, count, size, source, instance.exports[filters[filter]]);
|
|
1139
|
+
},
|
|
1140
|
+
decodeIndexBuffer: function(target, count, size, source) {
|
|
1141
|
+
decode(instance.exports.meshopt_decodeIndexBuffer, target, count, size, source);
|
|
1142
|
+
},
|
|
1143
|
+
decodeIndexSequence: function(target, count, size, source) {
|
|
1144
|
+
decode(instance.exports.meshopt_decodeIndexSequence, target, count, size, source);
|
|
1145
|
+
},
|
|
1146
|
+
decodeGltfBuffer: function(target, count, size, source, mode, filter) {
|
|
1147
|
+
decode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);
|
|
1148
|
+
},
|
|
1149
|
+
decodeGltfBufferAsync: function(count, size, source, mode, filter) {
|
|
1150
|
+
if (workers.length > 0) {
|
|
1151
|
+
return decodeWorker(count, size, source, decoders[mode], filters[filter]);
|
|
1152
|
+
}
|
|
1153
|
+
|
|
1154
|
+
return ready.then(function() {
|
|
1155
|
+
var target = new Uint8Array(count * size);
|
|
1156
|
+
decode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);
|
|
1157
|
+
return target;
|
|
1158
|
+
});
|
|
1159
|
+
}
|
|
1160
|
+
};
|
|
1161
|
+
})();
|
|
1162
|
+
|
|
978
1163
|
const extToType = new Map([
|
|
979
1164
|
['bin', 'binary'],
|
|
980
1165
|
['css', 'css'],
|
|
@@ -994,6 +1179,27 @@ const extToType = new Map([
|
|
|
994
1179
|
['vert', 'shader'],
|
|
995
1180
|
['webp', 'texture']
|
|
996
1181
|
]);
|
|
1182
|
+
// provide buffer view callback so we can handle models compressed with MeshOptimizer
|
|
1183
|
+
// https://github.com/zeux/meshoptimizer
|
|
1184
|
+
const processBufferView = (gltfBuffer, buffers, continuation) => {
|
|
1185
|
+
if (gltfBuffer.extensions && gltfBuffer.extensions.EXT_meshopt_compression) {
|
|
1186
|
+
const extensionDef = gltfBuffer.extensions.EXT_meshopt_compression;
|
|
1187
|
+
Promise.all([MeshoptDecoder.ready, buffers[extensionDef.buffer]]).then((promiseResult) => {
|
|
1188
|
+
const buffer = promiseResult[1];
|
|
1189
|
+
const byteOffset = extensionDef.byteOffset || 0;
|
|
1190
|
+
const byteLength = extensionDef.byteLength || 0;
|
|
1191
|
+
const count = extensionDef.count;
|
|
1192
|
+
const stride = extensionDef.byteStride;
|
|
1193
|
+
const result = new Uint8Array(count * stride);
|
|
1194
|
+
const source = new Uint8Array(buffer.buffer, buffer.byteOffset + byteOffset, byteLength);
|
|
1195
|
+
MeshoptDecoder.decodeGltfBuffer(result, count, stride, source, extensionDef.mode, extensionDef.filter);
|
|
1196
|
+
continuation(null, result);
|
|
1197
|
+
});
|
|
1198
|
+
}
|
|
1199
|
+
else {
|
|
1200
|
+
continuation(null, null);
|
|
1201
|
+
}
|
|
1202
|
+
};
|
|
997
1203
|
/**
|
|
998
1204
|
* The AssetElement interface provides properties and methods for manipulating
|
|
999
1205
|
* {@link https://developer.playcanvas.com/user-manual/engine/web-components/tags/pc-asset/ | `<pc-asset>`} elements.
|
|
@@ -1020,13 +1226,23 @@ class AssetElement extends HTMLElement {
|
|
|
1020
1226
|
// If no type is specified, try to infer it from the file extension.
|
|
1021
1227
|
if (!type) {
|
|
1022
1228
|
const ext = src.split('.').pop();
|
|
1023
|
-
type = (_a = extToType.get(ext || '')) !== null && _a !==
|
|
1229
|
+
type = (_a = extToType.get(ext || '')) !== null && _a !== void 0 ? _a : null;
|
|
1024
1230
|
}
|
|
1025
1231
|
if (!type) {
|
|
1026
1232
|
console.warn(`Unsupported asset type: ${src}`);
|
|
1027
1233
|
return;
|
|
1028
1234
|
}
|
|
1029
|
-
|
|
1235
|
+
if (type === 'container') {
|
|
1236
|
+
this.asset = new playcanvas.Asset(id, type, { url: src }, undefined, {
|
|
1237
|
+
// @ts-ignore TODO no definition in pc
|
|
1238
|
+
bufferView: {
|
|
1239
|
+
processAsync: processBufferView.bind(this)
|
|
1240
|
+
}
|
|
1241
|
+
});
|
|
1242
|
+
}
|
|
1243
|
+
else {
|
|
1244
|
+
this.asset = new playcanvas.Asset(id, type, { url: src });
|
|
1245
|
+
}
|
|
1030
1246
|
this.asset.preload = !this._lazy;
|
|
1031
1247
|
}
|
|
1032
1248
|
destroyAsset() {
|
|
@@ -1054,7 +1270,7 @@ class AssetElement extends HTMLElement {
|
|
|
1054
1270
|
}
|
|
1055
1271
|
static get(id) {
|
|
1056
1272
|
const assetElement = document.querySelector(`pc-asset[id="${id}"]`);
|
|
1057
|
-
return assetElement === null || assetElement ===
|
|
1273
|
+
return assetElement === null || assetElement === void 0 ? void 0 : assetElement.asset;
|
|
1058
1274
|
}
|
|
1059
1275
|
static get observedAttributes() {
|
|
1060
1276
|
return ['lazy'];
|
|
@@ -1101,7 +1317,7 @@ class ComponentElement extends AsyncElement {
|
|
|
1101
1317
|
initComponent() { }
|
|
1102
1318
|
async connectedCallback() {
|
|
1103
1319
|
var _a;
|
|
1104
|
-
await ((_a = this.closestApp) === null || _a ===
|
|
1320
|
+
await ((_a = this.closestApp) === null || _a === void 0 ? void 0 : _a.ready());
|
|
1105
1321
|
await this.addComponent();
|
|
1106
1322
|
this.initComponent();
|
|
1107
1323
|
this._onReady();
|
|
@@ -1232,7 +1448,7 @@ class CameraComponentElement extends ComponentElement {
|
|
|
1232
1448
|
}
|
|
1233
1449
|
get xrAvailable() {
|
|
1234
1450
|
var _a;
|
|
1235
|
-
const xrManager = (_a = this.component) === null || _a ===
|
|
1451
|
+
const xrManager = (_a = this.component) === null || _a === void 0 ? void 0 : _a.system.app.xr;
|
|
1236
1452
|
return xrManager && xrManager.supported && xrManager.isAvailable(playcanvas.XRTYPE_VR);
|
|
1237
1453
|
}
|
|
1238
1454
|
/**
|
|
@@ -1563,7 +1779,7 @@ class CameraComponentElement extends ComponentElement {
|
|
|
1563
1779
|
var _a;
|
|
1564
1780
|
this._tonemap = value;
|
|
1565
1781
|
if (this.component) {
|
|
1566
|
-
this.component.toneMapping = (_a = tonemaps.get(value)) !== null && _a !==
|
|
1782
|
+
this.component.toneMapping = (_a = tonemaps.get(value)) !== null && _a !== void 0 ? _a : playcanvas.TONEMAP_NONE;
|
|
1567
1783
|
}
|
|
1568
1784
|
}
|
|
1569
1785
|
/**
|
|
@@ -2099,64 +2315,6 @@ class ElementComponentElement extends ComponentElement {
|
|
|
2099
2315
|
}
|
|
2100
2316
|
customElements.define('pc-element', ElementComponentElement);
|
|
2101
2317
|
|
|
2102
|
-
/**
|
|
2103
|
-
* The SplatComponentElement interface provides properties and methods for manipulating
|
|
2104
|
-
* {@link https://developer.playcanvas.com/user-manual/engine/web-components/tags/pc-splat/ | `<pc-splat>`} elements.
|
|
2105
|
-
* The SplatComponentElement interface also inherits the properties and methods of the
|
|
2106
|
-
* {@link HTMLElement} interface.
|
|
2107
|
-
*
|
|
2108
|
-
* @category Components
|
|
2109
|
-
*/
|
|
2110
|
-
class SplatComponentElement extends ComponentElement {
|
|
2111
|
-
/** @ignore */
|
|
2112
|
-
constructor() {
|
|
2113
|
-
super('gsplat');
|
|
2114
|
-
this._asset = '';
|
|
2115
|
-
}
|
|
2116
|
-
getInitialComponentData() {
|
|
2117
|
-
return {
|
|
2118
|
-
asset: AssetElement.get(this._asset)
|
|
2119
|
-
};
|
|
2120
|
-
}
|
|
2121
|
-
/**
|
|
2122
|
-
* Gets the underlying PlayCanvas splat component.
|
|
2123
|
-
* @returns The splat component.
|
|
2124
|
-
*/
|
|
2125
|
-
get component() {
|
|
2126
|
-
return super.component;
|
|
2127
|
-
}
|
|
2128
|
-
/**
|
|
2129
|
-
* Sets id of the `pc-asset` to use for the splat.
|
|
2130
|
-
* @param value - The asset ID.
|
|
2131
|
-
*/
|
|
2132
|
-
set asset(value) {
|
|
2133
|
-
this._asset = value;
|
|
2134
|
-
const asset = AssetElement.get(value);
|
|
2135
|
-
if (this.component && asset) {
|
|
2136
|
-
this.component.asset = asset;
|
|
2137
|
-
}
|
|
2138
|
-
}
|
|
2139
|
-
/**
|
|
2140
|
-
* Gets the id of the `pc-asset` to use for the splat.
|
|
2141
|
-
* @returns The asset ID.
|
|
2142
|
-
*/
|
|
2143
|
-
get asset() {
|
|
2144
|
-
return this._asset;
|
|
2145
|
-
}
|
|
2146
|
-
static get observedAttributes() {
|
|
2147
|
-
return [...super.observedAttributes, 'asset'];
|
|
2148
|
-
}
|
|
2149
|
-
attributeChangedCallback(name, _oldValue, newValue) {
|
|
2150
|
-
super.attributeChangedCallback(name, _oldValue, newValue);
|
|
2151
|
-
switch (name) {
|
|
2152
|
-
case 'asset':
|
|
2153
|
-
this.asset = newValue;
|
|
2154
|
-
break;
|
|
2155
|
-
}
|
|
2156
|
-
}
|
|
2157
|
-
}
|
|
2158
|
-
customElements.define('pc-splat', SplatComponentElement);
|
|
2159
|
-
|
|
2160
2318
|
const shadowTypes = new Map([
|
|
2161
2319
|
['pcf1-16f', playcanvas.SHADOW_PCF1_16F],
|
|
2162
2320
|
['pcf1-32f', playcanvas.SHADOW_PCF1_32F],
|
|
@@ -2425,7 +2583,7 @@ class LightComponentElement extends ComponentElement {
|
|
|
2425
2583
|
var _a;
|
|
2426
2584
|
this._shadowType = value;
|
|
2427
2585
|
if (this.component) {
|
|
2428
|
-
this.component.shadowType = (_a = shadowTypes.get(value)) !== null && _a !==
|
|
2586
|
+
this.component.shadowType = (_a = shadowTypes.get(value)) !== null && _a !== void 0 ? _a : playcanvas.SHADOW_PCF3_32F;
|
|
2429
2587
|
}
|
|
2430
2588
|
}
|
|
2431
2589
|
/**
|
|
@@ -2542,6 +2700,138 @@ class LightComponentElement extends ComponentElement {
|
|
|
2542
2700
|
}
|
|
2543
2701
|
customElements.define('pc-light', LightComponentElement);
|
|
2544
2702
|
|
|
2703
|
+
/**
|
|
2704
|
+
* The ParticleSystemComponentElement interface provides properties and methods for manipulating
|
|
2705
|
+
* {@link https://developer.playcanvas.com/user-manual/engine/web-components/tags/pc-particles/ | `<pc-particles>`} elements.
|
|
2706
|
+
* The ParticleSystemComponentElement interface also inherits the properties and methods of the
|
|
2707
|
+
* {@link HTMLElement} interface.
|
|
2708
|
+
*
|
|
2709
|
+
* @category Components
|
|
2710
|
+
*/
|
|
2711
|
+
class ParticleSystemComponentElement extends ComponentElement {
|
|
2712
|
+
/** @ignore */
|
|
2713
|
+
constructor() {
|
|
2714
|
+
super('particlesystem');
|
|
2715
|
+
this._asset = '';
|
|
2716
|
+
}
|
|
2717
|
+
getInitialComponentData() {
|
|
2718
|
+
var _a;
|
|
2719
|
+
const asset = AssetElement.get(this._asset);
|
|
2720
|
+
if (!asset) {
|
|
2721
|
+
return {};
|
|
2722
|
+
}
|
|
2723
|
+
if (asset.resource.colorMapAsset) {
|
|
2724
|
+
const id = asset.resource.colorMapAsset;
|
|
2725
|
+
const colorMapAsset = (_a = AssetElement.get(id)) === null || _a === void 0 ? void 0 : _a.id;
|
|
2726
|
+
if (colorMapAsset) {
|
|
2727
|
+
asset.resource.colorMapAsset = colorMapAsset;
|
|
2728
|
+
}
|
|
2729
|
+
}
|
|
2730
|
+
return asset.resource;
|
|
2731
|
+
}
|
|
2732
|
+
/**
|
|
2733
|
+
* Gets the underlying PlayCanvas particle system component.
|
|
2734
|
+
* @returns The particle system component.
|
|
2735
|
+
*/
|
|
2736
|
+
get component() {
|
|
2737
|
+
return super.component;
|
|
2738
|
+
}
|
|
2739
|
+
applyConfig(resource) {
|
|
2740
|
+
if (!this.component) {
|
|
2741
|
+
return;
|
|
2742
|
+
}
|
|
2743
|
+
// Set all the config properties on the component
|
|
2744
|
+
for (const key in resource) {
|
|
2745
|
+
if (resource.hasOwnProperty(key)) {
|
|
2746
|
+
this.component[key] = resource[key];
|
|
2747
|
+
}
|
|
2748
|
+
}
|
|
2749
|
+
}
|
|
2750
|
+
async _loadAsset() {
|
|
2751
|
+
var _a;
|
|
2752
|
+
const appElement = await ((_a = this.closestApp) === null || _a === void 0 ? void 0 : _a.ready());
|
|
2753
|
+
const app = appElement === null || appElement === void 0 ? void 0 : appElement.app;
|
|
2754
|
+
const asset = AssetElement.get(this._asset);
|
|
2755
|
+
if (!asset) {
|
|
2756
|
+
return;
|
|
2757
|
+
}
|
|
2758
|
+
if (asset.loaded) {
|
|
2759
|
+
this.applyConfig(asset.resource);
|
|
2760
|
+
}
|
|
2761
|
+
else {
|
|
2762
|
+
asset.once('load', () => {
|
|
2763
|
+
this.applyConfig(asset.resource);
|
|
2764
|
+
});
|
|
2765
|
+
app.assets.load(asset);
|
|
2766
|
+
}
|
|
2767
|
+
}
|
|
2768
|
+
/**
|
|
2769
|
+
* Sets the id of the `pc-asset` to use for the model.
|
|
2770
|
+
* @param value - The asset ID.
|
|
2771
|
+
*/
|
|
2772
|
+
set asset(value) {
|
|
2773
|
+
this._asset = value;
|
|
2774
|
+
if (this.isConnected) {
|
|
2775
|
+
this._loadAsset();
|
|
2776
|
+
}
|
|
2777
|
+
}
|
|
2778
|
+
/**
|
|
2779
|
+
* Gets the id of the `pc-asset` to use for the model.
|
|
2780
|
+
* @returns The asset ID.
|
|
2781
|
+
*/
|
|
2782
|
+
get asset() {
|
|
2783
|
+
return this._asset;
|
|
2784
|
+
}
|
|
2785
|
+
// Control methods
|
|
2786
|
+
/**
|
|
2787
|
+
* Starts playing the particle system
|
|
2788
|
+
*/
|
|
2789
|
+
play() {
|
|
2790
|
+
if (this.component) {
|
|
2791
|
+
this.component.play();
|
|
2792
|
+
}
|
|
2793
|
+
}
|
|
2794
|
+
/**
|
|
2795
|
+
* Pauses the particle system
|
|
2796
|
+
*/
|
|
2797
|
+
pause() {
|
|
2798
|
+
if (this.component) {
|
|
2799
|
+
this.component.pause();
|
|
2800
|
+
}
|
|
2801
|
+
}
|
|
2802
|
+
/**
|
|
2803
|
+
* Resets the particle system
|
|
2804
|
+
*/
|
|
2805
|
+
reset() {
|
|
2806
|
+
if (this.component) {
|
|
2807
|
+
this.component.reset();
|
|
2808
|
+
}
|
|
2809
|
+
}
|
|
2810
|
+
/**
|
|
2811
|
+
* Stops the particle system
|
|
2812
|
+
*/
|
|
2813
|
+
stop() {
|
|
2814
|
+
if (this.component) {
|
|
2815
|
+
this.component.stop();
|
|
2816
|
+
}
|
|
2817
|
+
}
|
|
2818
|
+
static get observedAttributes() {
|
|
2819
|
+
return [
|
|
2820
|
+
...super.observedAttributes,
|
|
2821
|
+
'asset'
|
|
2822
|
+
];
|
|
2823
|
+
}
|
|
2824
|
+
attributeChangedCallback(name, _oldValue, newValue) {
|
|
2825
|
+
super.attributeChangedCallback(name, _oldValue, newValue);
|
|
2826
|
+
switch (name) {
|
|
2827
|
+
case 'asset':
|
|
2828
|
+
this.asset = newValue;
|
|
2829
|
+
break;
|
|
2830
|
+
}
|
|
2831
|
+
}
|
|
2832
|
+
}
|
|
2833
|
+
customElements.define('pc-particles', ParticleSystemComponentElement);
|
|
2834
|
+
|
|
2545
2835
|
/**
|
|
2546
2836
|
* The MaterialElement interface provides properties and methods for manipulating
|
|
2547
2837
|
* {@link https://developer.playcanvas.com/user-manual/engine/web-components/tags/pc-material/ | `<pc-material>`} elements.
|
|
@@ -2632,7 +2922,7 @@ class MaterialElement extends HTMLElement {
|
|
|
2632
2922
|
}
|
|
2633
2923
|
static get(id) {
|
|
2634
2924
|
const materialElement = document.querySelector(`pc-material[id="${id}"]`);
|
|
2635
|
-
return materialElement === null || materialElement ===
|
|
2925
|
+
return materialElement === null || materialElement === void 0 ? void 0 : materialElement.material;
|
|
2636
2926
|
}
|
|
2637
2927
|
static get observedAttributes() {
|
|
2638
2928
|
return ['diffuse', 'diffuse-map', 'metalness-map', 'normal-map', 'roughness-map'];
|
|
@@ -3312,7 +3602,7 @@ class ScriptComponentElement extends ComponentElement {
|
|
|
3312
3602
|
disconnectedCallback() {
|
|
3313
3603
|
var _a;
|
|
3314
3604
|
this.observer.disconnect();
|
|
3315
|
-
(_a = super.disconnectedCallback) === null || _a ===
|
|
3605
|
+
(_a = super.disconnectedCallback) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
3316
3606
|
}
|
|
3317
3607
|
/**
|
|
3318
3608
|
* Gets the underlying PlayCanvas script component.
|
|
@@ -3627,7 +3917,7 @@ class SoundSlotElement extends AsyncElement {
|
|
|
3627
3917
|
}
|
|
3628
3918
|
async connectedCallback() {
|
|
3629
3919
|
var _a;
|
|
3630
|
-
await ((_a = this.soundElement) === null || _a ===
|
|
3920
|
+
await ((_a = this.soundElement) === null || _a === void 0 ? void 0 : _a.ready());
|
|
3631
3921
|
const options = {
|
|
3632
3922
|
autoPlay: this._autoPlay,
|
|
3633
3923
|
loop: this._loop,
|
|
@@ -3663,7 +3953,7 @@ class SoundSlotElement extends AsyncElement {
|
|
|
3663
3953
|
var _a;
|
|
3664
3954
|
this._asset = value;
|
|
3665
3955
|
if (this.soundSlot) {
|
|
3666
|
-
const id = (_a = AssetElement.get(value)) === null || _a ===
|
|
3956
|
+
const id = (_a = AssetElement.get(value)) === null || _a === void 0 ? void 0 : _a.id;
|
|
3667
3957
|
if (id) {
|
|
3668
3958
|
this.soundSlot.asset = id;
|
|
3669
3959
|
}
|
|
@@ -3846,6 +4136,64 @@ class SoundSlotElement extends AsyncElement {
|
|
|
3846
4136
|
}
|
|
3847
4137
|
customElements.define('pc-sound', SoundSlotElement);
|
|
3848
4138
|
|
|
4139
|
+
/**
|
|
4140
|
+
* The SplatComponentElement interface provides properties and methods for manipulating
|
|
4141
|
+
* {@link https://developer.playcanvas.com/user-manual/engine/web-components/tags/pc-splat/ | `<pc-splat>`} elements.
|
|
4142
|
+
* The SplatComponentElement interface also inherits the properties and methods of the
|
|
4143
|
+
* {@link HTMLElement} interface.
|
|
4144
|
+
*
|
|
4145
|
+
* @category Components
|
|
4146
|
+
*/
|
|
4147
|
+
class SplatComponentElement extends ComponentElement {
|
|
4148
|
+
/** @ignore */
|
|
4149
|
+
constructor() {
|
|
4150
|
+
super('gsplat');
|
|
4151
|
+
this._asset = '';
|
|
4152
|
+
}
|
|
4153
|
+
getInitialComponentData() {
|
|
4154
|
+
return {
|
|
4155
|
+
asset: AssetElement.get(this._asset)
|
|
4156
|
+
};
|
|
4157
|
+
}
|
|
4158
|
+
/**
|
|
4159
|
+
* Gets the underlying PlayCanvas splat component.
|
|
4160
|
+
* @returns The splat component.
|
|
4161
|
+
*/
|
|
4162
|
+
get component() {
|
|
4163
|
+
return super.component;
|
|
4164
|
+
}
|
|
4165
|
+
/**
|
|
4166
|
+
* Sets id of the `pc-asset` to use for the splat.
|
|
4167
|
+
* @param value - The asset ID.
|
|
4168
|
+
*/
|
|
4169
|
+
set asset(value) {
|
|
4170
|
+
this._asset = value;
|
|
4171
|
+
const asset = AssetElement.get(value);
|
|
4172
|
+
if (this.component && asset) {
|
|
4173
|
+
this.component.asset = asset;
|
|
4174
|
+
}
|
|
4175
|
+
}
|
|
4176
|
+
/**
|
|
4177
|
+
* Gets the id of the `pc-asset` to use for the splat.
|
|
4178
|
+
* @returns The asset ID.
|
|
4179
|
+
*/
|
|
4180
|
+
get asset() {
|
|
4181
|
+
return this._asset;
|
|
4182
|
+
}
|
|
4183
|
+
static get observedAttributes() {
|
|
4184
|
+
return [...super.observedAttributes, 'asset'];
|
|
4185
|
+
}
|
|
4186
|
+
attributeChangedCallback(name, _oldValue, newValue) {
|
|
4187
|
+
super.attributeChangedCallback(name, _oldValue, newValue);
|
|
4188
|
+
switch (name) {
|
|
4189
|
+
case 'asset':
|
|
4190
|
+
this.asset = newValue;
|
|
4191
|
+
break;
|
|
4192
|
+
}
|
|
4193
|
+
}
|
|
4194
|
+
}
|
|
4195
|
+
customElements.define('pc-splat', SplatComponentElement);
|
|
4196
|
+
|
|
3849
4197
|
/**
|
|
3850
4198
|
* The ModelElement interface provides properties and methods for manipulating
|
|
3851
4199
|
* {@link https://developer.playcanvas.com/user-manual/engine/web-components/tags/pc-model/ | `<pc-model>`} elements.
|
|
@@ -3891,8 +4239,8 @@ class ModelElement extends AsyncElement {
|
|
|
3891
4239
|
async _loadModel() {
|
|
3892
4240
|
var _a;
|
|
3893
4241
|
this._unloadModel();
|
|
3894
|
-
const appElement = await ((_a = this.closestApp) === null || _a ===
|
|
3895
|
-
const app = appElement === null || appElement ===
|
|
4242
|
+
const appElement = await ((_a = this.closestApp) === null || _a === void 0 ? void 0 : _a.ready());
|
|
4243
|
+
const app = appElement === null || appElement === void 0 ? void 0 : appElement.app;
|
|
3896
4244
|
const asset = AssetElement.get(this._asset);
|
|
3897
4245
|
if (!asset) {
|
|
3898
4246
|
return;
|
|
@@ -3909,7 +4257,7 @@ class ModelElement extends AsyncElement {
|
|
|
3909
4257
|
}
|
|
3910
4258
|
_unloadModel() {
|
|
3911
4259
|
var _a;
|
|
3912
|
-
(_a = this._entity) === null || _a ===
|
|
4260
|
+
(_a = this._entity) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
3913
4261
|
this._entity = null;
|
|
3914
4262
|
}
|
|
3915
4263
|
/**
|
|
@@ -3971,6 +4319,10 @@ class SceneElement extends AsyncElement {
|
|
|
3971
4319
|
* The end distance of the fog.
|
|
3972
4320
|
*/
|
|
3973
4321
|
this._fogEnd = 1000;
|
|
4322
|
+
/**
|
|
4323
|
+
* The gravity of the scene.
|
|
4324
|
+
*/
|
|
4325
|
+
this._gravity = new playcanvas.Vec3(0, -9.81, 0);
|
|
3974
4326
|
/**
|
|
3975
4327
|
* The PlayCanvas scene instance.
|
|
3976
4328
|
*/
|
|
@@ -3978,7 +4330,7 @@ class SceneElement extends AsyncElement {
|
|
|
3978
4330
|
}
|
|
3979
4331
|
async connectedCallback() {
|
|
3980
4332
|
var _a;
|
|
3981
|
-
await ((_a = this.closestApp) === null || _a ===
|
|
4333
|
+
await ((_a = this.closestApp) === null || _a === void 0 ? void 0 : _a.ready());
|
|
3982
4334
|
this.scene = this.closestApp.app.scene;
|
|
3983
4335
|
this.updateSceneSettings();
|
|
3984
4336
|
this._onReady();
|
|
@@ -3990,7 +4342,8 @@ class SceneElement extends AsyncElement {
|
|
|
3990
4342
|
this.scene.fog.density = this._fogDensity;
|
|
3991
4343
|
this.scene.fog.start = this._fogStart;
|
|
3992
4344
|
this.scene.fog.end = this._fogEnd;
|
|
3993
|
-
|
|
4345
|
+
const appElement = this.parentElement;
|
|
4346
|
+
appElement.app.systems.rigidbody.gravity.copy(this._gravity);
|
|
3994
4347
|
}
|
|
3995
4348
|
}
|
|
3996
4349
|
/**
|
|
@@ -4078,8 +4431,26 @@ class SceneElement extends AsyncElement {
|
|
|
4078
4431
|
get fogEnd() {
|
|
4079
4432
|
return this._fogEnd;
|
|
4080
4433
|
}
|
|
4434
|
+
/**
|
|
4435
|
+
* Sets the gravity of the scene.
|
|
4436
|
+
* @param value - The gravity.
|
|
4437
|
+
*/
|
|
4438
|
+
set gravity(value) {
|
|
4439
|
+
this._gravity = value;
|
|
4440
|
+
if (this.scene) {
|
|
4441
|
+
const appElement = this.parentElement;
|
|
4442
|
+
appElement.app.systems.rigidbody.gravity.copy(value);
|
|
4443
|
+
}
|
|
4444
|
+
}
|
|
4445
|
+
/**
|
|
4446
|
+
* Gets the gravity of the scene.
|
|
4447
|
+
* @returns The gravity.
|
|
4448
|
+
*/
|
|
4449
|
+
get gravity() {
|
|
4450
|
+
return this._gravity;
|
|
4451
|
+
}
|
|
4081
4452
|
static get observedAttributes() {
|
|
4082
|
-
return ['fog', 'fog-color', 'fog-density', 'fog-start', 'fog-end'];
|
|
4453
|
+
return ['fog', 'fog-color', 'fog-density', 'fog-start', 'fog-end', 'gravity'];
|
|
4083
4454
|
}
|
|
4084
4455
|
attributeChangedCallback(name, _oldValue, newValue) {
|
|
4085
4456
|
switch (name) {
|
|
@@ -4098,6 +4469,9 @@ class SceneElement extends AsyncElement {
|
|
|
4098
4469
|
case 'fog-end':
|
|
4099
4470
|
this.fogEnd = parseFloat(newValue);
|
|
4100
4471
|
break;
|
|
4472
|
+
case 'gravity':
|
|
4473
|
+
this.gravity = parseVec3(newValue);
|
|
4474
|
+
break;
|
|
4101
4475
|
// ... handle other attributes as well
|
|
4102
4476
|
}
|
|
4103
4477
|
}
|
|
@@ -4152,8 +4526,8 @@ class SkyElement extends AsyncElement {
|
|
|
4152
4526
|
}
|
|
4153
4527
|
async _loadSkybox() {
|
|
4154
4528
|
var _a;
|
|
4155
|
-
const appElement = await ((_a = this.closestApp) === null || _a ===
|
|
4156
|
-
const app = appElement === null || appElement ===
|
|
4529
|
+
const appElement = await ((_a = this.closestApp) === null || _a === void 0 ? void 0 : _a.ready());
|
|
4530
|
+
const app = appElement === null || appElement === void 0 ? void 0 : appElement.app;
|
|
4157
4531
|
if (!app) {
|
|
4158
4532
|
return;
|
|
4159
4533
|
}
|
|
@@ -4176,10 +4550,10 @@ class SkyElement extends AsyncElement {
|
|
|
4176
4550
|
var _a, _b;
|
|
4177
4551
|
if (!this._scene)
|
|
4178
4552
|
return;
|
|
4179
|
-
(_a = this._scene.skybox) === null || _a ===
|
|
4553
|
+
(_a = this._scene.skybox) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
4180
4554
|
// @ts-ignore
|
|
4181
4555
|
this._scene.skybox = null;
|
|
4182
|
-
(_b = this._scene.envAtlas) === null || _b ===
|
|
4556
|
+
(_b = this._scene.envAtlas) === null || _b === void 0 ? void 0 : _b.destroy();
|
|
4183
4557
|
// @ts-ignore
|
|
4184
4558
|
this._scene.envAtlas = null;
|
|
4185
4559
|
this._scene = null;
|
|
@@ -4368,6 +4742,7 @@ exports.ListenerComponentElement = ListenerComponentElement;
|
|
|
4368
4742
|
exports.MaterialElement = MaterialElement;
|
|
4369
4743
|
exports.ModelElement = ModelElement;
|
|
4370
4744
|
exports.ModuleElement = ModuleElement;
|
|
4745
|
+
exports.ParticleSystemComponentElement = ParticleSystemComponentElement;
|
|
4371
4746
|
exports.RenderComponentElement = RenderComponentElement;
|
|
4372
4747
|
exports.RigidBodyComponentElement = RigidBodyComponentElement;
|
|
4373
4748
|
exports.SceneElement = SceneElement;
|