@dcl/sdk 7.1.10-4831521012.commit-a2ec881 → 7.1.10-4833748310.commit-e77b3d0

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.
@@ -1,2 +1,2 @@
1
1
  import { Composite } from '@dcl/ecs';
2
- export declare function createContentFetchCompositeProvider(): Promise<Composite.Provider>;
2
+ export declare const compositeProvider: Composite.Provider;
@@ -1,38 +1,26 @@
1
+ import { compositeFromLoader } from '~sdk/all-composites';
1
2
  import { Composite } from '@dcl/ecs';
2
- import { getSceneInfo } from '~system/Scene';
3
- export async function createContentFetchCompositeProvider() {
4
- const scene = await getSceneInfo({});
5
- const compositesContent = scene.contents.filter((item) => {
6
- const path = item.file.toLowerCase();
7
- return path.endsWith('.composite') || path.endsWith('.composite.bin');
8
- });
9
- async function fetchComposite(item) {
10
- const src = item.file.toLowerCase();
11
- const compositeUrl = `${scene.baseUrl}${item.hash}`;
12
- try {
13
- const response = await fetch(compositeUrl);
14
- if (item.file.endsWith('.bin')) {
15
- const compositeBinaryData = await response.arrayBuffer();
16
- const composite = Composite.fromBinary(compositeBinaryData);
17
- return { src, composite };
3
+ const composites = [];
4
+ export const compositeProvider = {
5
+ getCompositeOrNull(src, _currentPath) {
6
+ const fromLoader = compositeFromLoader[src];
7
+ if (fromLoader) {
8
+ try {
9
+ if (src.endsWith('.bin') && fromLoader instanceof Uint8Array) {
10
+ const composite = Composite.fromBinary(fromLoader);
11
+ composites.push({ src, composite });
12
+ }
13
+ else if (typeof fromLoader === 'string') {
14
+ const composite = Composite.fromJson(JSON.parse(fromLoader));
15
+ composites.push({ src, composite });
16
+ }
18
17
  }
19
- else {
20
- const compositeJson = await response.json();
21
- const composite = Composite.fromJson(compositeJson);
22
- return { src, composite };
18
+ catch (err) {
19
+ console.error(err);
23
20
  }
21
+ delete compositeFromLoader[src];
24
22
  }
25
- catch (err) {
26
- console.error(`Error loading composite ${compositeUrl}: ${err.toString()}`);
27
- return null;
28
- }
23
+ return composites.find((item) => item.src === src) || null;
29
24
  }
30
- const compositePromises = compositesContent.map(fetchComposite);
31
- const composites = (await Promise.all(compositePromises)).filter((item) => !!item);
32
- return {
33
- getCompositeOrNull(src, _currentPath) {
34
- return composites.find((item) => item.src === src) || null;
35
- }
36
- };
37
- }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2NvbXBvc2l0ZS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFHNUMsTUFBTSxDQUFDLEtBQUssVUFBVSxtQ0FBbUM7SUFDdkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDcEMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3ZELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDcEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUN2RSxDQUFDLENBQUMsQ0FBQTtJQUVGLEtBQUssVUFBVSxjQUFjLENBQUMsSUFBb0M7UUFDaEUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNuQyxNQUFNLFlBQVksR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ25ELElBQUk7WUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUMxQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUM5QixNQUFNLG1CQUFtQixHQUFlLE1BQU8sUUFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtnQkFDN0UsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO2dCQUMzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFBO2FBQzFCO2lCQUFNO2dCQUNMLE1BQU0sYUFBYSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBO2dCQUMzQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFBO2dCQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFBO2FBQzFCO1NBQ0Y7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLFlBQVksS0FBTSxHQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQ3BGLE9BQU8sSUFBSSxDQUFBO1NBQ1o7SUFDSCxDQUFDO0lBRUQsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUE7SUFFL0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBeUIsQ0FBQTtJQUUxRyxPQUFPO1FBQ0wsa0JBQWtCLENBQUMsR0FBVyxFQUFFLFlBQXFCO1lBR25ELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUE7UUFDNUQsQ0FBQztLQUNGLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9zaXRlIH0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgeyBnZXRTY2VuZUluZm8gfSBmcm9tICd+c3lzdGVtL1NjZW5lJ1xuXG4vLyBAcHVibGljXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29udGVudEZldGNoQ29tcG9zaXRlUHJvdmlkZXIoKTogUHJvbWlzZTxDb21wb3NpdGUuUHJvdmlkZXI+IHtcbiAgY29uc3Qgc2NlbmUgPSBhd2FpdCBnZXRTY2VuZUluZm8oe30pXG4gIGNvbnN0IGNvbXBvc2l0ZXNDb250ZW50ID0gc2NlbmUuY29udGVudHMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgY29uc3QgcGF0aCA9IGl0ZW0uZmlsZS50b0xvd2VyQ2FzZSgpXG4gICAgcmV0dXJuIHBhdGguZW5kc1dpdGgoJy5jb21wb3NpdGUnKSB8fCBwYXRoLmVuZHNXaXRoKCcuY29tcG9zaXRlLmJpbicpXG4gIH0pXG5cbiAgYXN5bmMgZnVuY3Rpb24gZmV0Y2hDb21wb3NpdGUoaXRlbTogeyBoYXNoOiBzdHJpbmc7IGZpbGU6IHN0cmluZyB9KTogUHJvbWlzZTxDb21wb3NpdGUuUmVzb3VyY2UgfCBudWxsPiB7XG4gICAgY29uc3Qgc3JjID0gaXRlbS5maWxlLnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCBjb21wb3NpdGVVcmwgPSBgJHtzY2VuZS5iYXNlVXJsfSR7aXRlbS5oYXNofWBcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChjb21wb3NpdGVVcmwpXG4gICAgICBpZiAoaXRlbS5maWxlLmVuZHNXaXRoKCcuYmluJykpIHtcbiAgICAgICAgY29uc3QgY29tcG9zaXRlQmluYXJ5RGF0YTogVWludDhBcnJheSA9IGF3YWl0IChyZXNwb25zZSBhcyBhbnkpLmFycmF5QnVmZmVyKClcbiAgICAgICAgY29uc3QgY29tcG9zaXRlID0gQ29tcG9zaXRlLmZyb21CaW5hcnkoY29tcG9zaXRlQmluYXJ5RGF0YSlcbiAgICAgICAgcmV0dXJuIHsgc3JjLCBjb21wb3NpdGUgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29tcG9zaXRlSnNvbiA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICBjb25zdCBjb21wb3NpdGUgPSBDb21wb3NpdGUuZnJvbUpzb24oY29tcG9zaXRlSnNvbilcbiAgICAgICAgcmV0dXJuIHsgc3JjLCBjb21wb3NpdGUgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgbG9hZGluZyBjb21wb3NpdGUgJHtjb21wb3NpdGVVcmx9OiAkeyhlcnIgYXMgYW55KS50b1N0cmluZygpfWApXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbXBvc2l0ZVByb21pc2VzID0gY29tcG9zaXRlc0NvbnRlbnQubWFwKGZldGNoQ29tcG9zaXRlKVxuXG4gIGNvbnN0IGNvbXBvc2l0ZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwoY29tcG9zaXRlUHJvbWlzZXMpKS5maWx0ZXIoKGl0ZW0pID0+ICEhaXRlbSkgYXMgQ29tcG9zaXRlLlJlc291cmNlW11cblxuICByZXR1cm4ge1xuICAgIGdldENvbXBvc2l0ZU9yTnVsbChzcmM6IHN0cmluZywgX2N1cnJlbnRQYXRoPzogc3RyaW5nKSB7XG4gICAgICAvLyBUT0RPOiByZXNvbHZlIHBhdGggZnJvbSBzcmMgYW5kIGN1cnJlbnRQYXRoXG5cbiAgICAgIHJldHVybiBjb21wb3NpdGVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uc3JjID09PSBzcmMpIHx8IG51bGxcbiAgICB9XG4gIH1cbn1cbiJdfQ==
25
+ };
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2NvbXBvc2l0ZS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRXBDLE1BQU0sVUFBVSxHQUF5QixFQUFFLENBQUE7QUFHM0MsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQXVCO0lBQ25ELGtCQUFrQixDQUFDLEdBQVcsRUFBRSxZQUFxQjtRQUduRCxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMzQyxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUk7Z0JBQ0YsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsWUFBWSxVQUFVLEVBQUU7b0JBQzVELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUE7b0JBQ2xELFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQTtpQkFDcEM7cUJBQU0sSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUU7b0JBQ3pDLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO29CQUM1RCxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7aUJBQ3BDO2FBQ0Y7WUFBQyxPQUFPLEdBQUcsRUFBRTtnQkFDWixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ25CO1lBRUQsT0FBTyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtTQUNoQztRQUVELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUE7SUFDNUQsQ0FBQztDQUNGLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wb3NpdGVGcm9tTG9hZGVyIH0gZnJvbSAnfnNkay9hbGwtY29tcG9zaXRlcydcbmltcG9ydCB7IENvbXBvc2l0ZSB9IGZyb20gJ0BkY2wvZWNzJ1xuXG5jb25zdCBjb21wb3NpdGVzOiBDb21wb3NpdGUuUmVzb3VyY2VbXSA9IFtdXG5cbi8vIEBwdWJsaWNcbmV4cG9ydCBjb25zdCBjb21wb3NpdGVQcm92aWRlcjogQ29tcG9zaXRlLlByb3ZpZGVyID0ge1xuICBnZXRDb21wb3NpdGVPck51bGwoc3JjOiBzdHJpbmcsIF9jdXJyZW50UGF0aD86IHN0cmluZykge1xuICAgIC8vIFRPRE86IHJlc29sdmUgcGF0aCBmcm9tIHNyYyBhbmQgY3VycmVudFBhdGhcblxuICAgIGNvbnN0IGZyb21Mb2FkZXIgPSBjb21wb3NpdGVGcm9tTG9hZGVyW3NyY11cbiAgICBpZiAoZnJvbUxvYWRlcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHNyYy5lbmRzV2l0aCgnLmJpbicpICYmIGZyb21Mb2FkZXIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgICAgY29uc3QgY29tcG9zaXRlID0gQ29tcG9zaXRlLmZyb21CaW5hcnkoZnJvbUxvYWRlcilcbiAgICAgICAgICBjb21wb3NpdGVzLnB1c2goeyBzcmMsIGNvbXBvc2l0ZSB9KVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmcm9tTG9hZGVyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNvbnN0IGNvbXBvc2l0ZSA9IENvbXBvc2l0ZS5mcm9tSnNvbihKU09OLnBhcnNlKGZyb21Mb2FkZXIpKVxuICAgICAgICAgIGNvbXBvc2l0ZXMucHVzaCh7IHNyYywgY29tcG9zaXRlIH0pXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycilcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGNvbXBvc2l0ZUZyb21Mb2FkZXJbc3JjXVxuICAgIH1cblxuICAgIHJldHVybiBjb21wb3NpdGVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uc3JjID09PSBzcmMpIHx8IG51bGxcbiAgfVxufVxuIl19
package/index.js CHANGED
@@ -1,16 +1,23 @@
1
- import { engine } from '@dcl/ecs';
1
+ import { Composite, engine } from '@dcl/ecs';
2
2
  import { crdtGetState, crdtSendToRenderer, sendBatch } from '~system/EngineApi';
3
3
  import { createRendererTransport } from './internal/transports/rendererTransport';
4
4
  import { pollEvents } from './observables';
5
- const rendererTransport = createRendererTransport({ crdtSendToRenderer });
5
+ import { compositeProvider } from './composite-provider';
6
+ export const rendererTransport = createRendererTransport({ crdtSendToRenderer });
6
7
  engine.addTransport(rendererTransport);
7
8
  export async function onUpdate(deltaTime) {
9
+ engine.seal();
8
10
  await engine.update(deltaTime);
9
11
  await pollEvents(sendBatch);
10
12
  }
11
13
  export async function onStart() {
12
- await engine.seal();
13
14
  const response = await crdtGetState({ data: new Uint8Array() });
15
+ if (!response.hasEntities) {
16
+ const mainComposite = compositeProvider.getCompositeOrNull('main.composite');
17
+ if (mainComposite) {
18
+ Composite.instance(engine, mainComposite, compositeProvider);
19
+ }
20
+ }
14
21
  if (!!rendererTransport.onmessage) {
15
22
  if (response && response.data && response.data.length) {
16
23
  for (const byteArray of response.data) {
@@ -19,4 +26,4 @@ export async function onStart() {
19
26
  }
20
27
  }
21
28
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFHMUMsTUFBTSxpQkFBaUIsR0FBRyx1QkFBdUIsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQTtBQUN6RSxNQUFNLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUE7QUFFdEMsTUFBTSxDQUFDLEtBQUssVUFBVSxRQUFRLENBQUMsU0FBaUI7SUFDOUMsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzlCLE1BQU0sVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBQzdCLENBQUM7QUFNRCxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU87SUFDM0IsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7SUFFbkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDL0QsSUFBSSxDQUFDLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFO1FBQ2pDLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckQsS0FBSyxNQUFNLFNBQVMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUNyQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUE7YUFDdkM7U0FDRjtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAYWxwaGEgVEhJUyBGSUxFIElOSVRJQUxJWkVTIFRIRSBERUNFTlRSQUxBTkQgUlVOVElNRS4gV0lMTCBDSEFOR0UgU09PTiAqL1xuaW1wb3J0IHsgZW5naW5lIH0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgeyBjcmR0R2V0U3RhdGUsIGNyZHRTZW5kVG9SZW5kZXJlciwgc2VuZEJhdGNoIH0gZnJvbSAnfnN5c3RlbS9FbmdpbmVBcGknXG5pbXBvcnQgeyBjcmVhdGVSZW5kZXJlclRyYW5zcG9ydCB9IGZyb20gJy4vaW50ZXJuYWwvdHJhbnNwb3J0cy9yZW5kZXJlclRyYW5zcG9ydCdcbmltcG9ydCB7IHBvbGxFdmVudHMgfSBmcm9tICcuL29ic2VydmFibGVzJ1xuXG4vLyBBdHRhY2ggQ1JEVCB0cmFuc3BvcnRcbmNvbnN0IHJlbmRlcmVyVHJhbnNwb3J0ID0gY3JlYXRlUmVuZGVyZXJUcmFuc3BvcnQoeyBjcmR0U2VuZFRvUmVuZGVyZXIgfSlcbmVuZ2luZS5hZGRUcmFuc3BvcnQocmVuZGVyZXJUcmFuc3BvcnQpXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvblVwZGF0ZShkZWx0YVRpbWU6IG51bWJlcikge1xuICBhd2FpdCBlbmdpbmUudXBkYXRlKGRlbHRhVGltZSlcbiAgYXdhaXQgcG9sbEV2ZW50cyhzZW5kQmF0Y2gpXG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBGdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBiZWZvcmUgdGhlIGZpcnN0IHVwZGF0ZSBhbmQgYWZ0ZXIgdGhlIGV2YWx1YXRpb24gb2YgdGhlIGNvZGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvblN0YXJ0KCkge1xuICBhd2FpdCBlbmdpbmUuc2VhbCgpXG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjcmR0R2V0U3RhdGUoeyBkYXRhOiBuZXcgVWludDhBcnJheSgpIH0pXG4gIGlmICghIXJlbmRlcmVyVHJhbnNwb3J0Lm9ubWVzc2FnZSkge1xuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5kYXRhICYmIHJlc3BvbnNlLmRhdGEubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IGJ5dGVBcnJheSBvZiByZXNwb25zZS5kYXRhKSB7XG4gICAgICAgIHJlbmRlcmVyVHJhbnNwb3J0Lm9ubWVzc2FnZShieXRlQXJyYXkpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBSXhELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFBO0FBQ2hGLE1BQU0sQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtBQUV0QyxNQUFNLENBQUMsS0FBSyxVQUFVLFFBQVEsQ0FBQyxTQUFpQjtJQUM5QyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDYixNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDOUIsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUE7QUFDN0IsQ0FBQztBQU1ELE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTztJQUMzQixNQUFNLFFBQVEsR0FBRyxNQUFNLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUcvRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRTtRQUN6QixNQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQzVFLElBQUksYUFBYSxFQUFFO1lBQ2pCLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO1NBQzdEO0tBQ0Y7SUFFRCxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUU7UUFDakMsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNyRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3JDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQTthQUN2QztTQUNGO0tBQ0Y7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBhbHBoYSBUSElTIEZJTEUgSU5JVElBTElaRVMgVEhFIERFQ0VOVFJBTEFORCBSVU5USU1FLiBXSUxMIENIQU5HRSBTT09OICovXG5pbXBvcnQgeyBDb21wb3NpdGUsIGVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJ1xuaW1wb3J0IHsgY3JkdEdldFN0YXRlLCBjcmR0U2VuZFRvUmVuZGVyZXIsIHNlbmRCYXRjaCB9IGZyb20gJ35zeXN0ZW0vRW5naW5lQXBpJ1xuaW1wb3J0IHsgY3JlYXRlUmVuZGVyZXJUcmFuc3BvcnQgfSBmcm9tICcuL2ludGVybmFsL3RyYW5zcG9ydHMvcmVuZGVyZXJUcmFuc3BvcnQnXG5pbXBvcnQgeyBwb2xsRXZlbnRzIH0gZnJvbSAnLi9vYnNlcnZhYmxlcydcbmltcG9ydCB7IGNvbXBvc2l0ZVByb3ZpZGVyIH0gZnJvbSAnLi9jb21wb3NpdGUtcHJvdmlkZXInXG5cbi8vIEF0dGFjaCBDUkRUIHRyYW5zcG9ydFxuLy8gQGludGVybmFsXG5leHBvcnQgY29uc3QgcmVuZGVyZXJUcmFuc3BvcnQgPSBjcmVhdGVSZW5kZXJlclRyYW5zcG9ydCh7IGNyZHRTZW5kVG9SZW5kZXJlciB9KVxuZW5naW5lLmFkZFRyYW5zcG9ydChyZW5kZXJlclRyYW5zcG9ydClcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uVXBkYXRlKGRlbHRhVGltZTogbnVtYmVyKSB7XG4gIGVuZ2luZS5zZWFsKClcbiAgYXdhaXQgZW5naW5lLnVwZGF0ZShkZWx0YVRpbWUpXG4gIGF3YWl0IHBvbGxFdmVudHMoc2VuZEJhdGNoKVxufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogRnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgYmVmb3JlIHRoZSBmaXJzdCB1cGRhdGUgYW5kIGFmdGVyIHRoZSBldmFsdWF0aW9uIG9mIHRoZSBjb2RlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb25TdGFydCgpIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjcmR0R2V0U3RhdGUoeyBkYXRhOiBuZXcgVWludDhBcnJheSgpIH0pXG5cbiAgLy8gd2hlbiB0aGlzIGNvbmRpdGlvbiBpcyB0cnVlIHNvbWV0aGluZyBsaWtlIGBtYWluLmNyZHRgIHdhcyBwcmUtbG9hZGVkIGZyb20gdGhlIHJ1bnRpbWUsIHdlIGRvbid0IG5lZWQgdG8gaW5zdGFuY2UgdGhlIG1haW4uY29tcG9zaXRlXG4gIGlmICghcmVzcG9uc2UuaGFzRW50aXRpZXMpIHtcbiAgICBjb25zdCBtYWluQ29tcG9zaXRlID0gY29tcG9zaXRlUHJvdmlkZXIuZ2V0Q29tcG9zaXRlT3JOdWxsKCdtYWluLmNvbXBvc2l0ZScpXG4gICAgaWYgKG1haW5Db21wb3NpdGUpIHtcbiAgICAgIENvbXBvc2l0ZS5pbnN0YW5jZShlbmdpbmUsIG1haW5Db21wb3NpdGUsIGNvbXBvc2l0ZVByb3ZpZGVyKVxuICAgIH1cbiAgfVxuXG4gIGlmICghIXJlbmRlcmVyVHJhbnNwb3J0Lm9ubWVzc2FnZSkge1xuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5kYXRhICYmIHJlc3BvbnNlLmRhdGEubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IGJ5dGVBcnJheSBvZiByZXNwb25zZS5kYXRhKSB7XG4gICAgICAgIHJlbmRlcmVyVHJhbnNwb3J0Lm9ubWVzc2FnZShieXRlQXJyYXkpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,20 +1,24 @@
1
1
  {
2
2
  "name": "@dcl/sdk",
3
3
  "description": "",
4
- "version": "7.1.10-4831521012.commit-a2ec881",
4
+ "version": "7.1.10-4833748310.commit-e77b3d0",
5
5
  "author": "Decentraland",
6
6
  "dependencies": {
7
- "@dcl/ecs": "7.1.10-4831521012.commit-a2ec881",
7
+ "@dcl/ecs": "7.1.10-4833748310.commit-e77b3d0",
8
8
  "@dcl/ecs-math": "2.0.1-20221129185242.commit-40495c1",
9
9
  "@dcl/explorer": "1.0.106064-20230424164124.commit-fdcdf1a",
10
- "@dcl/js-runtime": "7.1.10-4831521012.commit-a2ec881",
11
- "@dcl/react-ecs": "7.1.10-4831521012.commit-a2ec881",
12
- "@dcl/sdk-commands": "7.1.10-4831521012.commit-a2ec881"
10
+ "@dcl/js-runtime": "7.1.10-4833748310.commit-e77b3d0",
11
+ "@dcl/react-ecs": "7.1.10-4833748310.commit-e77b3d0",
12
+ "@dcl/sdk-commands": "7.1.10-4833748310.commit-e77b3d0"
13
13
  },
14
14
  "keywords": [],
15
15
  "license": "Apache-2.0",
16
16
  "main": "./index.js",
17
17
  "minCliVersion": "3.14.1",
18
+ "repository": {
19
+ "url": "git+https://github.com/decentraland/js-sdk-toolchain",
20
+ "directory": "packages/@dcl/sdk"
21
+ },
18
22
  "scripts": {
19
23
  "build": "tsc -p tsconfig.json",
20
24
  "start": "npm run build && tsc -p tsconfig.json --watch"
@@ -30,5 +34,5 @@
30
34
  },
31
35
  "types": "./index.d.ts",
32
36
  "typings": "./index.d.ts",
33
- "commit": "a2ec881939506c076eec484fc550b35ce3ff2197"
37
+ "commit": "e77b3d02266c6d43f2f3cbcd5bfbd4a375507f1d"
34
38
  }
@@ -1,43 +1,30 @@
1
+ import { compositeFromLoader } from '~sdk/all-composites'
1
2
  import { Composite } from '@dcl/ecs'
2
- import { getSceneInfo } from '~system/Scene'
3
+
4
+ const composites: Composite.Resource[] = []
3
5
 
4
6
  // @public
5
- export async function createContentFetchCompositeProvider(): Promise<Composite.Provider> {
6
- const scene = await getSceneInfo({})
7
- const compositesContent = scene.contents.filter((item) => {
8
- const path = item.file.toLowerCase()
9
- return path.endsWith('.composite') || path.endsWith('.composite.bin')
10
- })
7
+ export const compositeProvider: Composite.Provider = {
8
+ getCompositeOrNull(src: string, _currentPath?: string) {
9
+ // TODO: resolve path from src and currentPath
11
10
 
12
- async function fetchComposite(item: { hash: string; file: string }): Promise<Composite.Resource | null> {
13
- const src = item.file.toLowerCase()
14
- const compositeUrl = `${scene.baseUrl}${item.hash}`
15
- try {
16
- const response = await fetch(compositeUrl)
17
- if (item.file.endsWith('.bin')) {
18
- const compositeBinaryData: Uint8Array = await (response as any).arrayBuffer()
19
- const composite = Composite.fromBinary(compositeBinaryData)
20
- return { src, composite }
21
- } else {
22
- const compositeJson = await response.json()
23
- const composite = Composite.fromJson(compositeJson)
24
- return { src, composite }
11
+ const fromLoader = compositeFromLoader[src]
12
+ if (fromLoader) {
13
+ try {
14
+ if (src.endsWith('.bin') && fromLoader instanceof Uint8Array) {
15
+ const composite = Composite.fromBinary(fromLoader)
16
+ composites.push({ src, composite })
17
+ } else if (typeof fromLoader === 'string') {
18
+ const composite = Composite.fromJson(JSON.parse(fromLoader))
19
+ composites.push({ src, composite })
20
+ }
21
+ } catch (err) {
22
+ console.error(err)
25
23
  }
26
- } catch (err) {
27
- console.error(`Error loading composite ${compositeUrl}: ${(err as any).toString()}`)
28
- return null
29
- }
30
- }
31
-
32
- const compositePromises = compositesContent.map(fetchComposite)
33
24
 
34
- const composites = (await Promise.all(compositePromises)).filter((item) => !!item) as Composite.Resource[]
35
-
36
- return {
37
- getCompositeOrNull(src: string, _currentPath?: string) {
38
- // TODO: resolve path from src and currentPath
39
-
40
- return composites.find((item) => item.src === src) || null
25
+ delete compositeFromLoader[src]
41
26
  }
27
+
28
+ return composites.find((item) => item.src === src) || null
42
29
  }
43
30
  }
package/src/index.ts CHANGED
@@ -1,14 +1,17 @@
1
1
  /** @alpha THIS FILE INITIALIZES THE DECENTRALAND RUNTIME. WILL CHANGE SOON */
2
- import { engine } from '@dcl/ecs'
2
+ import { Composite, engine } from '@dcl/ecs'
3
3
  import { crdtGetState, crdtSendToRenderer, sendBatch } from '~system/EngineApi'
4
4
  import { createRendererTransport } from './internal/transports/rendererTransport'
5
5
  import { pollEvents } from './observables'
6
+ import { compositeProvider } from './composite-provider'
6
7
 
7
8
  // Attach CRDT transport
8
- const rendererTransport = createRendererTransport({ crdtSendToRenderer })
9
+ // @internal
10
+ export const rendererTransport = createRendererTransport({ crdtSendToRenderer })
9
11
  engine.addTransport(rendererTransport)
10
12
 
11
13
  export async function onUpdate(deltaTime: number) {
14
+ engine.seal()
12
15
  await engine.update(deltaTime)
13
16
  await pollEvents(sendBatch)
14
17
  }
@@ -18,9 +21,16 @@ export async function onUpdate(deltaTime: number) {
18
21
  * Function that is called before the first update and after the evaluation of the code.
19
22
  */
20
23
  export async function onStart() {
21
- await engine.seal()
22
-
23
24
  const response = await crdtGetState({ data: new Uint8Array() })
25
+
26
+ // when this condition is true something like `main.crdt` was pre-loaded from the runtime, we don't need to instance the main.composite
27
+ if (!response.hasEntities) {
28
+ const mainComposite = compositeProvider.getCompositeOrNull('main.composite')
29
+ if (mainComposite) {
30
+ Composite.instance(engine, mainComposite, compositeProvider)
31
+ }
32
+ }
33
+
24
34
  if (!!rendererTransport.onmessage) {
25
35
  if (response && response.data && response.data.length) {
26
36
  for (const byteArray of response.data) {
@@ -1,19 +0,0 @@
1
- import { engine, Composite } from '@dcl/ecs'
2
- import { createContentFetchCompositeProvider } from './composite-provider'
3
- import { onStart as basicOnStart, onUpdate as basicOnUpdate } from './index'
4
-
5
- export const onUpdate = basicOnUpdate
6
-
7
- /**
8
- * @internal
9
- * Function that is called before the first update and after the evaluation of the code.
10
- */
11
- /* @__PURE__ */ export async function onStart() {
12
- const compositeProvider = await createContentFetchCompositeProvider()
13
- const mainComposite = compositeProvider.getCompositeOrNull('main.composite')
14
- if (mainComposite) {
15
- Composite.instance(engine, mainComposite, compositeProvider)
16
- }
17
-
18
- await basicOnStart()
19
- }
@@ -1,2 +0,0 @@
1
- import { onUpdate as basicOnUpdate } from './index';
2
- export declare const onUpdate: typeof basicOnUpdate;
package/with-composite.js DELETED
@@ -1,13 +0,0 @@
1
- import { engine, Composite } from '@dcl/ecs';
2
- import { createContentFetchCompositeProvider } from './composite-provider';
3
- import { onStart as basicOnStart, onUpdate as basicOnUpdate } from './index';
4
- export const onUpdate = basicOnUpdate;
5
- export async function onStart() {
6
- const compositeProvider = await createContentFetchCompositeProvider();
7
- const mainComposite = compositeProvider.getCompositeOrNull('main.composite');
8
- if (mainComposite) {
9
- Composite.instance(engine, mainComposite, compositeProvider);
10
- }
11
- await basicOnStart();
12
- }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jb21wb3NpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvd2l0aC1jb21wb3NpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDNUMsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDMUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxZQUFZLEVBQUUsUUFBUSxJQUFJLGFBQWEsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUU1RSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFBO0FBTXJCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTztJQUMzQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sbUNBQW1DLEVBQUUsQ0FBQTtJQUNyRSxNQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBQzVFLElBQUksYUFBYSxFQUFFO1FBQ2pCLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFBO0tBQzdEO0lBRUQsTUFBTSxZQUFZLEVBQUUsQ0FBQTtBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW5naW5lLCBDb21wb3NpdGUgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IGNyZWF0ZUNvbnRlbnRGZXRjaENvbXBvc2l0ZVByb3ZpZGVyIH0gZnJvbSAnLi9jb21wb3NpdGUtcHJvdmlkZXInXG5pbXBvcnQgeyBvblN0YXJ0IGFzIGJhc2ljT25TdGFydCwgb25VcGRhdGUgYXMgYmFzaWNPblVwZGF0ZSB9IGZyb20gJy4vaW5kZXgnXG5cbmV4cG9ydCBjb25zdCBvblVwZGF0ZSA9IGJhc2ljT25VcGRhdGVcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgdXBkYXRlIGFuZCBhZnRlciB0aGUgZXZhbHVhdGlvbiBvZiB0aGUgY29kZS5cbiAqL1xuLyogQF9fUFVSRV9fICovIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBvblN0YXJ0KCkge1xuICBjb25zdCBjb21wb3NpdGVQcm92aWRlciA9IGF3YWl0IGNyZWF0ZUNvbnRlbnRGZXRjaENvbXBvc2l0ZVByb3ZpZGVyKClcbiAgY29uc3QgbWFpbkNvbXBvc2l0ZSA9IGNvbXBvc2l0ZVByb3ZpZGVyLmdldENvbXBvc2l0ZU9yTnVsbCgnbWFpbi5jb21wb3NpdGUnKVxuICBpZiAobWFpbkNvbXBvc2l0ZSkge1xuICAgIENvbXBvc2l0ZS5pbnN0YW5jZShlbmdpbmUsIG1haW5Db21wb3NpdGUsIGNvbXBvc2l0ZVByb3ZpZGVyKVxuICB9XG5cbiAgYXdhaXQgYmFzaWNPblN0YXJ0KClcbn1cbiJdfQ==