-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathscene-entrypoint.ts
More file actions
66 lines (60 loc) · 2.58 KB
/
Copy pathscene-entrypoint.ts
File metadata and controls
66 lines (60 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import type { IEngine } from '@dcl/ecs';
import { createInputSystem, createPointerEventsSystem, createTweenSystem } from '@dcl/ecs';
import { createReactBasedUiSystem } from '@dcl/react-ecs';
import type { IPlayersHelper, ISDKHelpers } from './definitions';
import { createComponents, initComponents } from './definitions';
import { createActionsSystem } from './actions';
import { createTriggersSystem } from './triggers';
import { createTimerSystem } from './timer';
import { getExplorerComponents as getEngineComponents } from './components';
import { createTransformSystem } from './transform';
import { createInputActionSystem } from './input-actions';
import { createCounterBarSystem } from './counter-bar';
import { createAdminToolkitSystem } from './admin-toolkit';
import { createUIRendererSystem } from './ui-renderer';
let initialized: boolean = false;
/**
* the _args param is there to mantain backwards compatibility with all versions.
* Before it was initAssetPacks(engine, pointerEventsSystem, components)
*/
export function initAssetPacks(
_engine: unknown,
sdkHelpers?: ISDKHelpers,
playersHelper?: IPlayersHelper,
) {
// Avoid creating the same systems if asset-pack is called more than once
if (initialized) return;
initialized = true;
const engine = _engine as IEngine;
try {
// get engine components
const components = getEngineComponents(engine);
// create asset packs components
createComponents(engine);
// create core systems
const inputSystem = createInputSystem(engine);
const pointerEventsSystem = createPointerEventsSystem(engine, inputSystem);
const tweenSystem = createTweenSystem(engine);
const reactBasedUiSystem = createReactBasedUiSystem(engine as any, pointerEventsSystem as any);
// create systems that some components needs (VideoPlayer, etc)
initComponents(engine);
engine.addSystem(createActionsSystem(engine, pointerEventsSystem, sdkHelpers, playersHelper));
engine.addSystem(createTriggersSystem(engine, components, pointerEventsSystem, tweenSystem));
engine.addSystem(createTimerSystem());
engine.addSystem(createInputActionSystem(inputSystem));
engine.addSystem(createCounterBarSystem(engine, components));
engine.addSystem(createTransformSystem(components));
engine.addSystem(createUIRendererSystem(engine));
engine.addSystem(
createAdminToolkitSystem(
engine,
pointerEventsSystem,
reactBasedUiSystem,
sdkHelpers,
playersHelper,
),
);
} catch (error) {
console.error(`Error initializing Asset Packs: ${(error as Error).message}`);
}
}