@dcl/asset-packs 1.2.1 → 1.2.2-20231010134915.commit-6abb6ed
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/bin/index.js +22 -27
- package/dist/action-types.js +40 -0
- package/dist/actions.js +230 -0
- package/dist/bin/index.js +22 -27
- package/dist/definitions.js +205 -0
- package/dist/events.js +16 -0
- package/dist/id.js +10 -0
- package/dist/index.js +14 -0
- package/dist/scene-entrypoint.js +17 -0
- package/dist/states.js +18 -0
- package/dist/triggers.js +191 -0
- package/package.json +2 -2
- package/dist/package.json +0 -62
- package/dist/src/action-types.js +0 -40
- package/dist/src/actions.js +0 -230
- package/dist/src/definitions.js +0 -205
- package/dist/src/events.js +0 -16
- package/dist/src/id.js +0 -10
- package/dist/src/index.js +0 -14
- package/dist/src/scene-entrypoint.js +0 -19
- package/dist/src/states.js +0 -18
- package/dist/src/triggers.js +0 -191
- /package/dist/{src/action-types.d.ts → action-types.d.ts} +0 -0
- /package/dist/{src/actions.d.ts → actions.d.ts} +0 -0
- /package/dist/{src/definitions.d.ts → definitions.d.ts} +0 -0
- /package/dist/{src/events.d.ts → events.d.ts} +0 -0
- /package/dist/{src/id.d.ts → id.d.ts} +0 -0
- /package/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{src/scene-entrypoint.d.ts → scene-entrypoint.d.ts} +0 -0
- /package/dist/{src/states.d.ts → states.d.ts} +0 -0
- /package/dist/{src/triggers.d.ts → triggers.d.ts} +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Schemas } from '@dcl/sdk/ecs';
|
|
2
|
+
import { ComponentName, getComponent, } from './definitions';
|
|
3
|
+
export const EMPTY = {
|
|
4
|
+
type: 'object',
|
|
5
|
+
properties: {},
|
|
6
|
+
serializationType: 'map',
|
|
7
|
+
};
|
|
8
|
+
export function addActionType(engine, type, schema) {
|
|
9
|
+
const ActionTypes = getComponent(ComponentName.ACTION_TYPES, engine);
|
|
10
|
+
const actionTypes = ActionTypes.getOrCreateMutable(engine.RootEntity);
|
|
11
|
+
const actionType = {
|
|
12
|
+
type,
|
|
13
|
+
jsonSchema: JSON.stringify(schema?.jsonSchema || Schemas.Map({}).jsonSchema),
|
|
14
|
+
};
|
|
15
|
+
actionTypes.value = [
|
|
16
|
+
...actionTypes.value.filter(($) => $.type !== actionType.type),
|
|
17
|
+
actionType,
|
|
18
|
+
];
|
|
19
|
+
}
|
|
20
|
+
export function getActionSchema(engine, type) {
|
|
21
|
+
const ActionTypes = getComponent(ComponentName.ACTION_TYPES, engine);
|
|
22
|
+
const actionTypes = ActionTypes.getOrCreateMutable(engine.RootEntity);
|
|
23
|
+
const actionType = actionTypes.value.find(($) => $.type === type);
|
|
24
|
+
const jsonSchema = actionType
|
|
25
|
+
? JSON.parse(actionType.jsonSchema)
|
|
26
|
+
: EMPTY;
|
|
27
|
+
return Schemas.fromJson(jsonSchema);
|
|
28
|
+
}
|
|
29
|
+
export function getActionTypes(engine) {
|
|
30
|
+
const ActionTypes = getComponent(ComponentName.ACTION_TYPES, engine);
|
|
31
|
+
const actionTypes = ActionTypes.getOrCreateMutable(engine.RootEntity);
|
|
32
|
+
return actionTypes.value.map(($) => $.type);
|
|
33
|
+
}
|
|
34
|
+
export function getPayload(action) {
|
|
35
|
+
return JSON.parse(action.jsonPayload);
|
|
36
|
+
}
|
|
37
|
+
export function getJson(payload) {
|
|
38
|
+
return JSON.stringify(payload);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvbi10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdDLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM1RSxPQUFPLEVBS0wsYUFBYSxFQUNiLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQTtBQUV0QixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQXVCO0lBQ3ZDLElBQUksRUFBRSxRQUFRO0lBQ2QsVUFBVSxFQUFFLEVBQUU7SUFDZCxpQkFBaUIsRUFBRSxLQUFLO0NBQ3pCLENBQUE7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUMzQixNQUFlLEVBQ2YsSUFBWSxFQUNaLE1BQVU7SUFFVixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQzlCLGFBQWEsQ0FBQyxZQUFZLEVBQzFCLE1BQU0sQ0FDUCxDQUFBO0lBQ0QsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNyRSxNQUFNLFVBQVUsR0FBRztRQUNqQixJQUFJO1FBQ0osVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQ3hCLE1BQU0sRUFBRSxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQ2pEO0tBQ0YsQ0FBQTtJQUNELFdBQVcsQ0FBQyxLQUFLLEdBQUc7UUFDbEIsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQzlELFVBQVU7S0FDWCxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQWMsTUFBZSxFQUFFLElBQVk7SUFDeEUsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUM5QixhQUFhLENBQUMsWUFBWSxFQUMxQixNQUFNLENBQ1AsQ0FBQTtJQUNELE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDckUsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUE7SUFDakUsTUFBTSxVQUFVLEdBQXVCLFVBQVU7UUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQ1QsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBZSxDQUFBO0FBQ25ELENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQWU7SUFDNUMsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUM5QixhQUFhLENBQUMsWUFBWSxFQUMxQixNQUFNLENBQ1AsQ0FBQTtJQUNELE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDckUsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzdDLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUF1QixNQUFjO0lBQzdELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFxQixDQUFBO0FBQzNELENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUF1QixPQUF5QjtJQUNyRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElFbmdpbmUsIElTY2hlbWEsIEpzb25TY2hlbWFFeHRlbmRlZCwgU2NoZW1hcyB9IGZyb20gJ0BkY2wvc2RrL2VjcydcbmltcG9ydCB7XG4gIEFjdGlvbixcbiAgQWN0aW9uUGF5bG9hZCxcbiAgQWN0aW9uVHlwZSxcbiAgQWN0aW9uVHlwZXMsXG4gIENvbXBvbmVudE5hbWUsXG4gIGdldENvbXBvbmVudCxcbn0gZnJvbSAnLi9kZWZpbml0aW9ucydcblxuZXhwb3J0IGNvbnN0IEVNUFRZOiBKc29uU2NoZW1hRXh0ZW5kZWQgPSB7XG4gIHR5cGU6ICdvYmplY3QnLFxuICBwcm9wZXJ0aWVzOiB7fSxcbiAgc2VyaWFsaXphdGlvblR5cGU6ICdtYXAnLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkQWN0aW9uVHlwZTxUIGV4dGVuZHMgSVNjaGVtYT4oXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgdHlwZTogc3RyaW5nLFxuICBzY2hlbWE/OiBULFxuKSB7XG4gIGNvbnN0IEFjdGlvblR5cGVzID0gZ2V0Q29tcG9uZW50PEFjdGlvblR5cGVzPihcbiAgICBDb21wb25lbnROYW1lLkFDVElPTl9UWVBFUyxcbiAgICBlbmdpbmUsXG4gIClcbiAgY29uc3QgYWN0aW9uVHlwZXMgPSBBY3Rpb25UeXBlcy5nZXRPckNyZWF0ZU11dGFibGUoZW5naW5lLlJvb3RFbnRpdHkpXG4gIGNvbnN0IGFjdGlvblR5cGUgPSB7XG4gICAgdHlwZSxcbiAgICBqc29uU2NoZW1hOiBKU09OLnN0cmluZ2lmeShcbiAgICAgIHNjaGVtYT8uanNvblNjaGVtYSB8fCBTY2hlbWFzLk1hcCh7fSkuanNvblNjaGVtYSxcbiAgICApLFxuICB9XG4gIGFjdGlvblR5cGVzLnZhbHVlID0gW1xuICAgIC4uLmFjdGlvblR5cGVzLnZhbHVlLmZpbHRlcigoJCkgPT4gJC50eXBlICE9PSBhY3Rpb25UeXBlLnR5cGUpLFxuICAgIGFjdGlvblR5cGUsXG4gIF1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFjdGlvblNjaGVtYTxUID0gdW5rbm93bj4oZW5naW5lOiBJRW5naW5lLCB0eXBlOiBzdHJpbmcpIHtcbiAgY29uc3QgQWN0aW9uVHlwZXMgPSBnZXRDb21wb25lbnQ8QWN0aW9uVHlwZXM+KFxuICAgIENvbXBvbmVudE5hbWUuQUNUSU9OX1RZUEVTLFxuICAgIGVuZ2luZSxcbiAgKVxuICBjb25zdCBhY3Rpb25UeXBlcyA9IEFjdGlvblR5cGVzLmdldE9yQ3JlYXRlTXV0YWJsZShlbmdpbmUuUm9vdEVudGl0eSlcbiAgY29uc3QgYWN0aW9uVHlwZSA9IGFjdGlvblR5cGVzLnZhbHVlLmZpbmQoKCQpID0+ICQudHlwZSA9PT0gdHlwZSlcbiAgY29uc3QganNvblNjaGVtYTogSnNvblNjaGVtYUV4dGVuZGVkID0gYWN0aW9uVHlwZVxuICAgID8gSlNPTi5wYXJzZShhY3Rpb25UeXBlLmpzb25TY2hlbWEpXG4gICAgOiBFTVBUWVxuICByZXR1cm4gU2NoZW1hcy5mcm9tSnNvbihqc29uU2NoZW1hKSBhcyBJU2NoZW1hPFQ+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3Rpb25UeXBlcyhlbmdpbmU6IElFbmdpbmUpIHtcbiAgY29uc3QgQWN0aW9uVHlwZXMgPSBnZXRDb21wb25lbnQ8QWN0aW9uVHlwZXM+KFxuICAgIENvbXBvbmVudE5hbWUuQUNUSU9OX1RZUEVTLFxuICAgIGVuZ2luZSxcbiAgKVxuICBjb25zdCBhY3Rpb25UeXBlcyA9IEFjdGlvblR5cGVzLmdldE9yQ3JlYXRlTXV0YWJsZShlbmdpbmUuUm9vdEVudGl0eSlcbiAgcmV0dXJuIGFjdGlvblR5cGVzLnZhbHVlLm1hcCgoJCkgPT4gJC50eXBlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF5bG9hZDxUIGV4dGVuZHMgQWN0aW9uVHlwZT4oYWN0aW9uOiBBY3Rpb24pIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoYWN0aW9uLmpzb25QYXlsb2FkKSBhcyBBY3Rpb25QYXlsb2FkPFQ+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRKc29uPFQgZXh0ZW5kcyBBY3Rpb25UeXBlPihwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPFQ+KSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShwYXlsb2FkKVxufVxuIl19
|
package/dist/actions.js
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { Quaternion, Vector3 } from '@dcl/sdk/math';
|
|
2
|
+
import { tweens } from '@dcl-sdk/utils/dist/tween';
|
|
3
|
+
import { ActionType, TriggerType, TweenType, getComponents, } from './definitions';
|
|
4
|
+
import { getDefaultValue, isValidState } from './states';
|
|
5
|
+
import { getActionEvents, getTriggerEvents } from './events';
|
|
6
|
+
import { getPayload } from './action-types';
|
|
7
|
+
const initedEntities = new Set();
|
|
8
|
+
export function createActionsSystem(engine, components) {
|
|
9
|
+
const { Animator, Transform, AudioSource, AvatarAttach, VisibilityComponent, GltfContainer, } = components;
|
|
10
|
+
const { Actions, States, Counter } = getComponents(engine);
|
|
11
|
+
return function actionsSystem(_dt) {
|
|
12
|
+
const entitiesWithActions = engine.getEntitiesWith(Actions);
|
|
13
|
+
for (const [entity, actions] of entitiesWithActions) {
|
|
14
|
+
if (initedEntities.has(entity)) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
const types = actions.value.reduce((types, action) => types.add(action.type), new Set());
|
|
18
|
+
for (const type of types) {
|
|
19
|
+
switch (type) {
|
|
20
|
+
case ActionType.PLAY_ANIMATION: {
|
|
21
|
+
initPlayAnimation(entity);
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
default:
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const actionEvents = getActionEvents(entity);
|
|
29
|
+
for (const action of actions.value) {
|
|
30
|
+
actionEvents.on(action.name, () => {
|
|
31
|
+
switch (action.type) {
|
|
32
|
+
case ActionType.PLAY_ANIMATION: {
|
|
33
|
+
handlePlayAnimation(entity, getPayload(action));
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
case ActionType.STOP_ANIMATION: {
|
|
37
|
+
handleStopAnimation(entity, getPayload(action));
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
case ActionType.SET_STATE: {
|
|
41
|
+
handleSetState(entity, getPayload(action));
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
case ActionType.START_TWEEN: {
|
|
45
|
+
handleStartTween(entity, getPayload(action));
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
case ActionType.SET_COUNTER: {
|
|
49
|
+
handleSetCounter(entity, getPayload(action));
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
case ActionType.INCREMENT_COUNTER: {
|
|
53
|
+
handleIncrementCounter(entity, getPayload(action));
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
case ActionType.DECREASE_COUNTER: {
|
|
57
|
+
handleDecreaseCounter(entity, getPayload(action));
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
case ActionType.PLAY_SOUND: {
|
|
61
|
+
handlePlaySound(entity, getPayload(action));
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
case ActionType.STOP_SOUND: {
|
|
65
|
+
handleStopSound(entity, getPayload(action));
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
case ActionType.SET_VISIBILITY: {
|
|
69
|
+
handleSetVisibility(entity, getPayload(action));
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
case ActionType.ATTACH_TO_PLAYER: {
|
|
73
|
+
handleAttachToPlayer(entity, getPayload(action));
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
case ActionType.DETACH_FROM_PLAYER: {
|
|
77
|
+
handleDetachFromPlayer(entity, getPayload(action));
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
default:
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
initedEntities.add(entity);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
function initPlayAnimation(entity) {
|
|
89
|
+
Animator.create(entity, {
|
|
90
|
+
states: [],
|
|
91
|
+
});
|
|
92
|
+
Animator.stopAllAnimations(entity);
|
|
93
|
+
}
|
|
94
|
+
function handlePlayAnimation(entity, payload) {
|
|
95
|
+
const { animation, loop } = payload;
|
|
96
|
+
const animator = Animator.getMutable(entity);
|
|
97
|
+
if (!animator.states.some(($) => $.clip === animation)) {
|
|
98
|
+
animator.states = [
|
|
99
|
+
...animator.states,
|
|
100
|
+
{
|
|
101
|
+
clip: animation,
|
|
102
|
+
},
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
Animator.stopAllAnimations(entity);
|
|
106
|
+
const clip = Animator.getClip(entity, animation);
|
|
107
|
+
clip.playing = true;
|
|
108
|
+
clip.loop = loop ?? false;
|
|
109
|
+
}
|
|
110
|
+
function handleStopAnimation(entity, _payload) {
|
|
111
|
+
if (Animator.has(entity)) {
|
|
112
|
+
Animator.stopAllAnimations(entity);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function handleSetState(entity, payload) {
|
|
116
|
+
const states = States.getMutableOrNull(entity);
|
|
117
|
+
if (states) {
|
|
118
|
+
let nextState = payload.state;
|
|
119
|
+
nextState = isValidState(states, nextState)
|
|
120
|
+
? nextState
|
|
121
|
+
: getDefaultValue(states);
|
|
122
|
+
states.currentValue = nextState;
|
|
123
|
+
const triggerEvents = getTriggerEvents(entity);
|
|
124
|
+
triggerEvents.emit(TriggerType.ON_STATE_CHANGE);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function handleStartTween(entity, payload) {
|
|
128
|
+
if (payload) {
|
|
129
|
+
const triggerEvents = getTriggerEvents(entity);
|
|
130
|
+
const onTweenEnd = () => triggerEvents.emit(TriggerType.ON_TWEEN_END);
|
|
131
|
+
switch (payload.type) {
|
|
132
|
+
case TweenType.MOVE_ITEM: {
|
|
133
|
+
handleMoveItem(entity, payload, onTweenEnd);
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
case TweenType.ROTATE_ITEM: {
|
|
137
|
+
handleRotateItem(entity, payload, onTweenEnd);
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
case TweenType.SCALE_ITEM: {
|
|
141
|
+
handleScaleItem(entity, payload, onTweenEnd);
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
default: {
|
|
145
|
+
throw new Error(`Unknown tween type: ${payload.type}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
function handleMoveItem(entity, tween, onTweenEnd) {
|
|
151
|
+
const transform = Transform.get(entity);
|
|
152
|
+
const { duration, interpolationType, relative } = tween;
|
|
153
|
+
const end = Vector3.create(tween.end.x, tween.end.y, tween.end.z);
|
|
154
|
+
const endPosition = relative ? Vector3.add(transform.position, end) : end;
|
|
155
|
+
tweens.startTranslation(entity, transform.position, endPosition, duration, interpolationType, onTweenEnd);
|
|
156
|
+
}
|
|
157
|
+
function handleRotateItem(entity, tween, onTweenEnd) {
|
|
158
|
+
const transform = Transform.get(entity);
|
|
159
|
+
const { duration, interpolationType, relative } = tween;
|
|
160
|
+
const end = Quaternion.fromEulerDegrees(tween.end.x, tween.end.y, tween.end.z);
|
|
161
|
+
const endRotation = relative
|
|
162
|
+
? Quaternion.multiply(transform.rotation, end)
|
|
163
|
+
: end;
|
|
164
|
+
tweens.startRotation(entity, transform.rotation, endRotation, duration, interpolationType, onTweenEnd);
|
|
165
|
+
}
|
|
166
|
+
function handleScaleItem(entity, tween, onTweenEnd) {
|
|
167
|
+
const transform = Transform.get(entity);
|
|
168
|
+
const { duration, interpolationType, relative } = tween;
|
|
169
|
+
const end = Vector3.create(tween.end.x, tween.end.y, tween.end.z);
|
|
170
|
+
const endScale = relative ? Vector3.add(transform.scale, end) : end;
|
|
171
|
+
tweens.startScaling(entity, transform.scale, endScale, duration, interpolationType, onTweenEnd);
|
|
172
|
+
}
|
|
173
|
+
function handleSetCounter(entity, payload) {
|
|
174
|
+
const counter = Counter.getMutableOrNull(entity);
|
|
175
|
+
if (counter) {
|
|
176
|
+
counter.value = payload.counter;
|
|
177
|
+
const triggerEvents = getTriggerEvents(entity);
|
|
178
|
+
triggerEvents.emit(TriggerType.ON_COUNTER_CHANGE);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
function handleIncrementCounter(entity, _payload) {
|
|
182
|
+
const counter = Counter.getMutableOrNull(entity);
|
|
183
|
+
if (counter) {
|
|
184
|
+
counter.value += 1;
|
|
185
|
+
const triggerEvents = getTriggerEvents(entity);
|
|
186
|
+
triggerEvents.emit(TriggerType.ON_COUNTER_CHANGE);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
function handleDecreaseCounter(entity, _payload) {
|
|
190
|
+
const counter = Counter.getMutableOrNull(entity);
|
|
191
|
+
if (counter) {
|
|
192
|
+
counter.value -= 1;
|
|
193
|
+
const triggerEvents = getTriggerEvents(entity);
|
|
194
|
+
triggerEvents.emit(TriggerType.ON_COUNTER_CHANGE);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
function handlePlaySound(entity, payload) {
|
|
198
|
+
const { src, loop, volume } = payload;
|
|
199
|
+
AudioSource.createOrReplace(entity, {
|
|
200
|
+
audioClipUrl: src,
|
|
201
|
+
loop,
|
|
202
|
+
playing: true,
|
|
203
|
+
volume: volume ?? 1,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
function handleStopSound(entity, _payload) {
|
|
207
|
+
const audioSource = AudioSource.getMutableOrNull(entity);
|
|
208
|
+
if (audioSource) {
|
|
209
|
+
audioSource.playing = false;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function handleSetVisibility(entity, payload) {
|
|
213
|
+
const { visible, physicsCollider } = payload;
|
|
214
|
+
VisibilityComponent.createOrReplace(entity, { visible });
|
|
215
|
+
const gltf = GltfContainer.getMutableOrNull(entity);
|
|
216
|
+
if (gltf && physicsCollider !== undefined) {
|
|
217
|
+
gltf.invisibleMeshesCollisionMask = physicsCollider ? 2 : 0;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function handleAttachToPlayer(entity, payload) {
|
|
221
|
+
const { anchorPointId } = payload;
|
|
222
|
+
AvatarAttach.createOrReplace(entity, { anchorPointId });
|
|
223
|
+
}
|
|
224
|
+
function handleDetachFromPlayer(entity, _payload) {
|
|
225
|
+
if (AvatarAttach.has(entity)) {
|
|
226
|
+
AvatarAttach.deleteFrom(entity);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNsRCxPQUFPLEVBRUwsVUFBVSxFQUNWLFdBQVcsRUFDWCxTQUFTLEVBQ1QsYUFBYSxHQUNkLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTNDLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUE7QUFFeEMsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxNQUFlLEVBQ2YsVUFPQztJQUVELE1BQU0sRUFDSixRQUFRLEVBQ1IsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGFBQWEsR0FDZCxHQUFHLFVBQVUsQ0FBQTtJQUNkLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUUxRCxPQUFPLFNBQVMsYUFBYSxDQUFDLEdBQVc7UUFDdkMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRTNELEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxtQkFBbUIsRUFBRTtZQUNuRCxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzlCLFNBQVE7YUFDVDtZQUdELE1BQU0sS0FBSyxHQUFHLE9B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RSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUE7SUFDekQsQ0FBQztJQUdELFNBQVMsc0JBQXNCLENBQzdCLE1BQWMsRUFDZCxRQUFzRDtRQUV0RCxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDNUIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUNoQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSUVuZ2luZSxcbiAgRW50aXR5LFxuICBBbmltYXRvckNvbXBvbmVudERlZmluaXRpb25FeHRlbmRlZCxcbiAgVHJhbnNmb3JtQ29tcG9uZW50RXh0ZW5kZWQsXG4gIExhc3RXcml0ZVdpbkVsZW1lbnRTZXRDb21wb25lbnREZWZpbml0aW9uLFxuICBQQkF1ZGlvU291cmNlLFxuICBQQkF2YXRhckF0dGFjaCxcbiAgUEJWaXNpYmlsaXR5Q29tcG9uZW50LFxuICBQQkdsdGZDb250YWluZXIsXG59IGZyb20gJ0BkY2wvc2RrL2VjcydcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICdAZGNsL3Nkay9tYXRoJ1xuaW1wb3J0IHsgdHdlZW5zIH0gZnJvbSAnQGRjbC1zZGsvdXRpbHMvZGlzdC90d2VlbidcbmltcG9ydCB7XG4gIEFjdGlvblBheWxvYWQsXG4gIEFjdGlvblR5cGUsXG4gIFRyaWdnZXJUeXBlLFxuICBUd2VlblR5cGUsXG4gIGdldENvbXBvbmVudHMsXG59IGZyb20gJy4vZGVmaW5pdGlvbnMnXG5pbXBvcnQgeyBnZXREZWZhdWx0VmFsdWUsIGlzVmFsaWRTdGF0ZSB9IGZyb20gJy4vc3RhdGVzJ1xuaW1wb3J0IHsgZ2V0QWN0aW9uRXZlbnRzLCBnZXRUcmlnZ2VyRXZlbnRzIH0gZnJvbSAnLi9ldmVudHMnXG5pbXBvcnQgeyBnZXRQYXlsb2FkIH0gZnJvbSAnLi9hY3Rpb24tdHlwZXMnXG5cbmNvbnN0IGluaXRlZEVudGl0aWVzID0gbmV3IFNldDxFbnRpdHk+KClcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFjdGlvbnNTeXN0ZW0oXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgY29tcG9uZW50czoge1xuICAgIEFuaW1hdG9yOiBBbmltYXRvckNvbXBvbmVudERlZmluaXRpb25FeHRlbmRlZFxuICAgIFRyYW5zZm9ybTogVHJhbnNmb3JtQ29tcG9uZW50RXh0ZW5kZWRcbiAgICBBdWRpb1NvdXJjZTogTGFzdFdyaXRlV2luRWxlbWVudFNldENvbXBvbmVudERlZmluaXRpb248UEJBdWRpb1NvdXJjZT5cbiAgICBBdmF0YXJBdHRhY2g6IExhc3RXcml0ZVdpbkVsZW1lbnRTZXRDb21wb25lbnREZWZpbml0aW9uPFBCQXZhdGFyQXR0YWNoPlxuICAgIFZpc2liaWxpdHlDb21wb25lbnQ6IExhc3RXcml0ZVdpbkVsZW1lbnRTZXRDb21wb25lbnREZWZpbml0aW9uPFBCVmlzaWJpbGl0eUNvbXBvbmVudD5cbiAgICBHbHRmQ29udGFpbmVyOiBMYXN0V3JpdGVXaW5FbGVtZW50U2V0Q29tcG9uZW50RGVmaW5pdGlvbjxQQkdsdGZDb250YWluZXI+XG4gIH0sXG4pIHtcbiAgY29uc3Qge1xuICAgIEFuaW1hdG9yLFxuICAgIFRyYW5zZm9ybSxcbiAgICBBdWRpb1NvdXJjZSxcbiAgICBBdmF0YXJBdHRhY2gsXG4gICAgVmlzaWJpbGl0eUNvbXBvbmVudCxcbiAgICBHbHRmQ29udGFpbmVyLFxuICB9ID0gY29tcG9uZW50c1xuICBjb25zdCB7IEFjdGlvbnMsIFN0YXRlcywgQ291bnRlciB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGFjdGlvbnNTeXN0ZW0oX2R0OiBudW1iZXIpIHtcbiAgICBjb25zdCBlbnRpdGllc1dpdGhBY3Rpb25zID0gZW5naW5lLmdldEVudGl0aWVzV2l0aChBY3Rpb25zKVxuXG4gICAgZm9yIChjb25zdCBbZW50aXR5LCBhY3Rpb25zXSBvZiBlbnRpdGllc1dpdGhBY3Rpb25zKSB7XG4gICAgICBpZiAoaW5pdGVkRW50aXRpZXMuaGFzKGVudGl0eSkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gaW5pdGlhbGl6ZSBhY3Rpb25zIGZvciBnaXZlbiBlbnRpdHlcbiAgICAgIGNvbnN0IHR5cGVzID0gYWN0aW9ucy52YWx1ZS5yZWR1Y2UoXG4gICAgICAgICh0eXBlcywgYWN0aW9uKSA9PiB0eXBlcy5hZGQoYWN0aW9uLnR5cGUpLFxuICAgICAgICBuZXcgU2V0PFN0cmluZz4oKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCB0eXBlIG9mIHR5cGVzKSB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFZX0FOSU1BVElPTjoge1xuICAgICAgICAgICAgaW5pdFBsYXlBbmltYXRpb24oZW50aXR5KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gYmluZCBhY3Rpb25zXG4gICAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KVxuICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucy52YWx1ZSkge1xuICAgICAgICBhY3Rpb25FdmVudHMub24oYWN0aW9uLm5hbWUsICgpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9BTklNQVRJT046IHtcbiAgICAgICAgICAgICAgaGFuZGxlUGxheUFuaW1hdGlvbihcbiAgICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfQU5JTUFUSU9OPihhY3Rpb24pLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RPUF9BTklNQVRJT046IHtcbiAgICAgICAgICAgICAgaGFuZGxlU3RvcEFuaW1hdGlvbihcbiAgICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfQU5JTUFUSU9OPihhY3Rpb24pLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0VUX1NUQVRFOiB7XG4gICAgICAgICAgICAgIGhhbmRsZVNldFN0YXRlKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9TVEFURT4oYWN0aW9uKSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVEFSVF9UV0VFTjoge1xuICAgICAgICAgICAgICBoYW5kbGVTdGFydFR3ZWVuKFxuICAgICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfVFdFRU4+KGFjdGlvbiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfQ09VTlRFUjoge1xuICAgICAgICAgICAgICBoYW5kbGVTZXRDb3VudGVyKFxuICAgICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0VUX0NPVU5URVI+KGFjdGlvbiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5JTkNSRU1FTlRfQ09VTlRFUjoge1xuICAgICAgICAgICAgICBoYW5kbGVJbmNyZW1lbnRDb3VudGVyKFxuICAgICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuSU5DUkVNRU5UX0NPVU5URVI+KGFjdGlvbiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5ERUNSRUFTRV9DT1VOVEVSOiB7XG4gICAgICAgICAgICAgIGhhbmRsZURlY3JlYXNlQ291bnRlcihcbiAgICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkRFQ1JFQVNFX0NPVU5URVI+KGFjdGlvbiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFZX1NPVU5EOiB7XG4gICAgICAgICAgICAgIGhhbmRsZVBsYXlTb3VuZChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX1NPVU5EPihhY3Rpb24pKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfU09VTkQ6IHtcbiAgICAgICAgICAgICAgaGFuZGxlU3RvcFNvdW5kKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfU09VTkQ+KGFjdGlvbikpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0VUX1ZJU0lCSUxJVFk6IHtcbiAgICAgICAgICAgICAgaGFuZGxlU2V0VmlzaWJpbGl0eShcbiAgICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9WSVNJQklMSVRZPihhY3Rpb24pLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuQVRUQUNIX1RPX1BMQVlFUjoge1xuICAgICAgICAgICAgICBoYW5kbGVBdHRhY2hUb1BsYXllcihcbiAgICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkFUVEFDSF9UT19QTEFZRVI+KGFjdGlvbiksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5ERVRBQ0hfRlJPTV9QTEFZRVI6IHtcbiAgICAgICAgICAgICAgaGFuZGxlRGV0YWNoRnJvbVBsYXllcihcbiAgICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkRFVEFDSF9GUk9NX1BMQVlFUj4oYWN0aW9uKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGluaXRlZEVudGl0aWVzLmFkZChlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgLy8gUExBWV9BTklNQVRJT05cbiAgZnVuY3Rpb24gaW5pdFBsYXlBbmltYXRpb24oZW50aXR5OiBFbnRpdHkpIHtcbiAgICBBbmltYXRvci5jcmVhdGUoZW50aXR5LCB7XG4gICAgICBzdGF0ZXM6IFtdLFxuICAgIH0pXG4gICAgQW5pbWF0b3Iuc3RvcEFsbEFuaW1hdGlvbnMoZW50aXR5KVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUGxheUFuaW1hdGlvbihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9BTklNQVRJT04+LFxuICApIHtcbiAgICBjb25zdCB7IGFuaW1hdGlvbiwgbG9vcCB9ID0gcGF5bG9hZFxuXG4gICAgY29uc3QgYW5pbWF0b3IgPSBBbmltYXRvci5nZXRNdXRhYmxlKGVudGl0eSlcbiAgICBpZiAoIWFuaW1hdG9yLnN0YXRlcy5zb21lKCgkKSA9PiAkLmNsaXAgPT09IGFuaW1hdGlvbikpIHtcbiAgICAgIGFuaW1hdG9yLnN0YXRlcyA9IFtcbiAgICAgICAgLi4uYW5pbWF0b3Iuc3RhdGVzLFxuICAgICAgICB7XG4gICAgICAgICAgY2xpcDogYW5pbWF0aW9uLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgIH1cblxuICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKGVudGl0eSlcbiAgICBjb25zdCBjbGlwID0gQW5pbWF0b3IuZ2V0Q2xpcChlbnRpdHksIGFuaW1hdGlvbilcbiAgICBjbGlwLnBsYXlpbmcgPSB0cnVlXG4gICAgY2xpcC5sb29wID0gbG9vcCA/PyBmYWxzZVxuICB9XG5cbiAgLy8gU1RPUF9BTklNQVRJT05cbiAgZnVuY3Rpb24gaGFuZGxlU3RvcEFuaW1hdGlvbihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfQU5JTUFUSU9OPixcbiAgKSB7XG4gICAgaWYgKEFuaW1hdG9yLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgLy8gU0VUX1NUQVRFXG4gIGZ1bmN0aW9uIGhhbmRsZVNldFN0YXRlKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfU1RBVEU+LFxuICApIHtcbiAgICBjb25zdCBzdGF0ZXMgPSBTdGF0ZXMuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG5cbiAgICBpZiAoc3RhdGVzKSB7XG4gICAgICBsZXQgbmV4dFN0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBwYXlsb2FkLnN0YXRlXG4gICAgICBuZXh0U3RhdGUgPSBpc1ZhbGlkU3RhdGUoc3RhdGVzLCBuZXh0U3RhdGUpXG4gICAgICAgID8gbmV4dFN0YXRlXG4gICAgICAgIDogZ2V0RGVmYXVsdFZhbHVlKHN0YXRlcylcbiAgICAgIHN0YXRlcy5jdXJyZW50VmFsdWUgPSBuZXh0U3RhdGVcblxuICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KVxuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX1NUQVRFX0NIQU5HRSlcbiAgICB9XG4gIH1cblxuICAvLyBTVEFSVF9UV0VFTlxuICBmdW5jdGlvbiBoYW5kbGVTdGFydFR3ZWVuKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9UV0VFTj4sXG4gICkge1xuICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICBjb25zdCB0cmlnZ2VyRXZlbnRzID0gZ2V0VHJpZ2dlckV2ZW50cyhlbnRpdHkpXG4gICAgICBjb25zdCBvblR3ZWVuRW5kID0gKCkgPT4gdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX1RXRUVOX0VORClcblxuICAgICAgc3dpdGNoIChwYXlsb2FkLnR5cGUpIHtcbiAgICAgICAgY2FzZSBUd2VlblR5cGUuTU9WRV9JVEVNOiB7XG4gICAgICAgICAgaGFuZGxlTW92ZUl0ZW0oZW50aXR5LCBwYXlsb2FkLCBvblR3ZWVuRW5kKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBUd2VlblR5cGUuUk9UQVRFX0lURU06IHtcbiAgICAgICAgICBoYW5kbGVSb3RhdGVJdGVtKGVudGl0eSwgcGF5bG9hZCwgb25Ud2VlbkVuZClcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVHdlZW5UeXBlLlNDQUxFX0lURU06IHtcbiAgICAgICAgICBoYW5kbGVTY2FsZUl0ZW0oZW50aXR5LCBwYXlsb2FkLCBvblR3ZWVuRW5kKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0d2VlbiB0eXBlOiAke3BheWxvYWQudHlwZX1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTU9WRV9JVEVNXG4gIGZ1bmN0aW9uIGhhbmRsZU1vdmVJdGVtKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHR3ZWVuOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfVFdFRU4+LFxuICAgIG9uVHdlZW5FbmQ6ICgpID0+IHZvaWQsXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXQoZW50aXR5KVxuICAgIGNvbnN0IHsgZHVyYXRpb24sIGludGVycG9sYXRpb25UeXBlLCByZWxhdGl2ZSB9ID0gdHdlZW5cbiAgICBjb25zdCBlbmQgPSBWZWN0b3IzLmNyZWF0ZSh0d2Vlbi5lbmQueCwgdHdlZW4uZW5kLnksIHR3ZWVuLmVuZC56KVxuICAgIGNvbnN0IGVuZFBvc2l0aW9uID0gcmVsYXRpdmUgPyBWZWN0b3IzLmFkZCh0cmFuc2Zvcm0ucG9zaXRpb24sIGVuZCkgOiBlbmRcblxuICAgIHR3ZWVucy5zdGFydFRyYW5zbGF0aW9uKFxuICAgICAgZW50aXR5LFxuICAgICAgdHJhbnNmb3JtLnBvc2l0aW9uLFxuICAgICAgZW5kUG9zaXRpb24sXG4gICAgICBkdXJhdGlvbixcbiAgICAgIGludGVycG9sYXRpb25UeXBlLFxuICAgICAgb25Ud2VlbkVuZCxcbiAgICApXG4gIH1cblxuICAvLyBST1RBVEVfSVRFTVxuICBmdW5jdGlvbiBoYW5kbGVSb3RhdGVJdGVtKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHR3ZWVuOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfVFdFRU4+LFxuICAgIG9uVHdlZW5FbmQ6ICgpID0+IHZvaWQsXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXQoZW50aXR5KVxuICAgIGNvbnN0IHsgZHVyYXRpb24sIGludGVycG9sYXRpb25UeXBlLCByZWxhdGl2ZSB9ID0gdHdlZW5cbiAgICBjb25zdCBlbmQgPSBRdWF0ZXJuaW9uLmZyb21FdWxlckRlZ3JlZXMoXG4gICAgICB0d2Vlbi5lbmQueCxcbiAgICAgIHR3ZWVuLmVuZC55LFxuICAgICAgdHdlZW4uZW5kLnosXG4gICAgKVxuICAgIGNvbnN0IGVuZFJvdGF0aW9uID0gcmVsYXRpdmVcbiAgICAgID8gUXVhdGVybmlvbi5tdWx0aXBseSh0cmFuc2Zvcm0ucm90YXRpb24sIGVuZClcbiAgICAgIDogZW5kXG5cbiAgICB0d2VlbnMuc3RhcnRSb3RhdGlvbihcbiAgICAgIGVudGl0eSxcbiAgICAgIHRyYW5zZm9ybS5yb3RhdGlvbixcbiAgICAgIGVuZFJvdGF0aW9uLFxuICAgICAgZHVyYXRpb24sXG4gICAgICBpbnRlcnBvbGF0aW9uVHlwZSxcbiAgICAgIG9uVHdlZW5FbmQsXG4gICAgKVxuICB9XG5cbiAgLy8gU0NBTEVfSVRFTVxuICBmdW5jdGlvbiBoYW5kbGVTY2FsZUl0ZW0oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgdHdlZW46IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9UV0VFTj4sXG4gICAgb25Ud2VlbkVuZDogKCkgPT4gdm9pZCxcbiAgKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldChlbnRpdHkpXG4gICAgY29uc3QgeyBkdXJhdGlvbiwgaW50ZXJwb2xhdGlvblR5cGUsIHJlbGF0aXZlIH0gPSB0d2VlblxuICAgIGNvbnN0IGVuZCA9IFZlY3RvcjMuY3JlYXRlKHR3ZWVuLmVuZC54LCB0d2Vlbi5lbmQueSwgdHdlZW4uZW5kLnopXG4gICAgY29uc3QgZW5kU2NhbGUgPSByZWxhdGl2ZSA/IFZlY3RvcjMuYWRkKHRyYW5zZm9ybS5zY2FsZSwgZW5kKSA6IGVuZFxuXG4gICAgdHdlZW5zLnN0YXJ0U2NhbGluZyhcbiAgICAgIGVudGl0eSxcbiAgICAgIHRyYW5zZm9ybS5zY2FsZSxcbiAgICAgIGVuZFNjYWxlLFxuICAgICAgZHVyYXRpb24sXG4gICAgICBpbnRlcnBvbGF0aW9uVHlwZSxcbiAgICAgIG9uVHdlZW5FbmQsXG4gICAgKVxuICB9XG5cbiAgLy8gU0VUX0NPVU5URVJcbiAgZnVuY3Rpb24gaGFuZGxlU2V0Q291bnRlcihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX0NPVU5URVI+LFxuICApIHtcbiAgICBjb25zdCBjb3VudGVyID0gQ291bnRlci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcblxuICAgIGlmIChjb3VudGVyKSB7XG4gICAgICBjb3VudGVyLnZhbHVlID0gcGF5bG9hZC5jb3VudGVyXG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSlcbiAgICAgIHRyaWdnZXJFdmVudHMuZW1pdChUcmlnZ2VyVHlwZS5PTl9DT1VOVEVSX0NIQU5HRSlcbiAgICB9XG4gIH1cblxuICAvLyBJTkNSRU1FTlRfQ09VTlRFUlxuICBmdW5jdGlvbiBoYW5kbGVJbmNyZW1lbnRDb3VudGVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSU5DUkVNRU5UX0NPVU5URVI+LFxuICApIHtcbiAgICBjb25zdCBjb3VudGVyID0gQ291bnRlci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcblxuICAgIGlmIChjb3VudGVyKSB7XG4gICAgICBjb3VudGVyLnZhbHVlICs9IDFcblxuICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KVxuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NPVU5URVJfQ0hBTkdFKVxuICAgIH1cbiAgfVxuXG4gIC8vIERFQ1JFQVNFX0NPVU5URVJcbiAgZnVuY3Rpb24gaGFuZGxlRGVjcmVhc2VDb3VudGVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSU5DUkVNRU5UX0NPVU5URVI+LFxuICApIHtcbiAgICBjb25zdCBjb3VudGVyID0gQ291bnRlci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcblxuICAgIGlmIChjb3VudGVyKSB7XG4gICAgICBjb3VudGVyLnZhbHVlIC09IDFcblxuICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KVxuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NPVU5URVJfQ0hBTkdFKVxuICAgIH1cbiAgfVxuXG4gIC8vIFBMQVlfU09VTkRcbiAgZnVuY3Rpb24gaGFuZGxlUGxheVNvdW5kKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX1NPVU5EPixcbiAgKSB7XG4gICAgY29uc3QgeyBzcmMsIGxvb3AsIHZvbHVtZSB9ID0gcGF5bG9hZFxuICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgIGF1ZGlvQ2xpcFVybDogc3JjLFxuICAgICAgbG9vcCxcbiAgICAgIHBsYXlpbmc6IHRydWUsXG4gICAgICB2b2x1bWU6IHZvbHVtZSA/PyAxLFxuICAgIH0pXG4gIH1cblxuICAvLyBTVE9QX1NPVU5EXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BTb3VuZChcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfU09VTkQ+LFxuICApIHtcbiAgICBjb25zdCBhdWRpb1NvdXJjZSA9IEF1ZGlvU291cmNlLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuICAgIGlmIChhdWRpb1NvdXJjZSkge1xuICAgICAgYXVkaW9Tb3VyY2UucGxheWluZyA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgLy8gU0VUX1ZJU0lCSUxJVFlcbiAgZnVuY3Rpb24gaGFuZGxlU2V0VmlzaWJpbGl0eShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX1ZJU0lCSUxJVFk+LFxuICApIHtcbiAgICBjb25zdCB7IHZpc2libGUsIHBoeXNpY3NDb2xsaWRlciB9ID0gcGF5bG9hZFxuICAgIFZpc2liaWxpdHlDb21wb25lbnQuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwgeyB2aXNpYmxlIH0pXG4gICAgY29uc3QgZ2x0ZiA9IEdsdGZDb250YWluZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG5cbiAgICBpZiAoZ2x0ZiAmJiBwaHlzaWNzQ29sbGlkZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZ2x0Zi5pbnZpc2libGVNZXNoZXNDb2xsaXNpb25NYXNrID0gcGh5c2ljc0NvbGxpZGVyID8gMiA6IDBcbiAgICB9XG4gIH1cblxuICAvLyBBVFRBQ0hfVE9fUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZUF0dGFjaFRvUGxheWVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5BVFRBQ0hfVE9fUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3QgeyBhbmNob3JQb2ludElkIH0gPSBwYXlsb2FkXG4gICAgQXZhdGFyQXR0YWNoLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHsgYW5jaG9yUG9pbnRJZCB9KVxuICB9XG5cbiAgLy8gREVUQUNIX0ZST01fUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZURldGFjaEZyb21QbGF5ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5ERVRBQ0hfRlJPTV9QTEFZRVI+LFxuICApIHtcbiAgICBpZiAoQXZhdGFyQXR0YWNoLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBdmF0YXJBdHRhY2guZGVsZXRlRnJvbShlbnRpdHkpXG4gICAgfVxuICB9XG59XG4iXX0=
|