@dcl-sdk/utils
Version:
A collection of helpers to make it easier to build a Decentraland scene using the SDK 7.
75 lines • 10.7 kB
JavaScript
import { engine, Transform, AudioSource } from '@dcl/sdk/ecs';
import { Vector3 } from '@dcl/sdk/math';
import { InterpolationType } from './math';
export function getEntitiesWithParent(parent) {
const entitiesWithParent = [];
for (const [entity, transform] of engine.getEntitiesWith(Transform)) {
if (transform.parent === parent) {
entitiesWithParent.push(entity);
}
}
return entitiesWithParent;
}
export function getEntityParent(child) {
const transform = Transform.getOrNull(child);
if (transform) {
return transform.parent;
}
else {
return engine.RootEntity;
}
}
export function getPlayerPosition() {
return Transform.getOrNull(engine.PlayerEntity)?.position || Vector3.create();
}
export function playSound(file, loop = false, position) {
const entity = engine.addEntity();
AudioSource.create(entity, {
audioClipUrl: file,
loop,
playing: true
});
Transform.create(entity, {
position: position ? position : getPlayerPosition()
});
return entity;
}
export function getEasingFunctionFromInterpolation(type) {
switch (type) {
case InterpolationType.LINEAR:
return 0;
case InterpolationType.EASEINQUAD:
return 1;
case InterpolationType.EASEOUTQUAD:
return 2;
case InterpolationType.EASEQUAD:
return 3;
case InterpolationType.EASEINSINE:
return 4;
case InterpolationType.EASEOUTSINE:
return 5;
case InterpolationType.EASESINE:
return 6;
case InterpolationType.EASEINEXPO:
return 7;
case InterpolationType.EASEOUTEXPO:
return 8;
case InterpolationType.EASEEXPO:
return 9;
case InterpolationType.EASEINELASTIC:
return 10;
case InterpolationType.EASEOUTELASTIC:
return 11;
case InterpolationType.EASEELASTIC:
return 12;
case InterpolationType.EASEINBOUNCE:
return 13;
case InterpolationType.EASEOUTEBOUNCE:
return 14;
case InterpolationType.EASEBOUNCE:
return 15;
default:
return 0;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBa0IsTUFBTSxjQUFjLENBQUE7QUFDckYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFTM0MsTUFBTSxVQUFVLHFCQUFxQixDQUNwQyxNQUFjO0lBRWQsTUFBTSxrQkFBa0IsR0FBYSxFQUFFLENBQUM7SUFFeEMsS0FBSyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUNyRSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDakMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDRixDQUFDO0lBRUQsT0FBTyxrQkFBa0IsQ0FBQztBQUMzQixDQUFDO0FBV0QsTUFBTSxVQUFVLGVBQWUsQ0FDOUIsS0FBYTtJQUViLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNmLE9BQU8sU0FBUyxDQUFDLE1BQWdCLENBQUM7SUFDbkMsQ0FBQztTQUFNLENBQUM7UUFDUCxPQUFPLE1BQU0sQ0FBQyxVQUFvQixDQUFDO0lBQ3BDLENBQUM7QUFDRixDQUFDO0FBU0QsTUFBTSxVQUFVLGlCQUFpQjtJQUNoQyxPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUE7QUFDOUUsQ0FBQztBQWFELE1BQU0sVUFBVSxTQUFTLENBQ3hCLElBQVksRUFDWixPQUFnQixLQUFLLEVBQ3JCLFFBQWtCO0lBRWxCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUNqQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUMxQixZQUFZLEVBQUUsSUFBSTtRQUNsQixJQUFJO1FBQ0osT0FBTyxFQUFFLElBQUk7S0FDYixDQUFDLENBQUE7SUFFRixTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUN4QixRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFO0tBQ25ELENBQUMsQ0FBQTtJQUVGLE9BQU8sTUFBTSxDQUFBO0FBQ2QsQ0FBQztBQVNELE1BQU0sVUFBVSxrQ0FBa0MsQ0FBQyxJQUF1QjtJQUN6RSxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2QsS0FBSyxpQkFBaUIsQ0FBQyxNQUFNO1lBQzVCLFNBQStCO1FBQ2hDLEtBQUssaUJBQWlCLENBQUMsVUFBVTtZQUNoQyxTQUFtQztRQUNwQyxLQUFLLGlCQUFpQixDQUFDLFdBQVc7WUFDakMsU0FBb0M7UUFDckMsS0FBSyxpQkFBaUIsQ0FBQyxRQUFRO1lBQzlCLFNBQWlDO1FBQ2xDLEtBQUssaUJBQWlCLENBQUMsVUFBVTtZQUNoQyxTQUFtQztRQUNwQyxLQUFLLGlCQUFpQixDQUFDLFdBQVc7WUFDakMsU0FBb0M7UUFDckMsS0FBSyxpQkFBaUIsQ0FBQyxRQUFRO1lBQzlCLFNBQWlDO1FBQ2xDLEtBQUssaUJBQWlCLENBQUMsVUFBVTtZQUNoQyxTQUFtQztRQUNwQyxLQUFLLGlCQUFpQixDQUFDLFdBQVc7WUFDakMsU0FBb0M7UUFDckMsS0FBSyxpQkFBaUIsQ0FBQyxRQUFRO1lBQzlCLFNBQWlDO1FBQ2xDLEtBQUssaUJBQWlCLENBQUMsYUFBYTtZQUNuQyxVQUFzQztRQUN2QyxLQUFLLGlCQUFpQixDQUFDLGNBQWM7WUFDcEMsVUFBdUM7UUFDeEMsS0FBSyxpQkFBaUIsQ0FBQyxXQUFXO1lBQ2pDLFVBQW9DO1FBQ3JDLEtBQUssaUJBQWlCLENBQUMsWUFBWTtZQUNsQyxVQUFxQztRQUN0QyxLQUFLLGlCQUFpQixDQUFDLGNBQWM7WUFDcEMsVUFBc0M7UUFDdkMsS0FBSyxpQkFBaUIsQ0FBQyxVQUFVO1lBQ2hDLFVBQW1DO1FBQ3BDO1lBQ0MsU0FBK0I7SUFDakMsQ0FBQztBQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIGVuZ2luZSwgVHJhbnNmb3JtLCBBdWRpb1NvdXJjZSwgRWFzaW5nRnVuY3Rpb24gfSBmcm9tICdAZGNsL3Nkay9lY3MnXG5pbXBvcnQgeyBWZWN0b3IzIH0gZnJvbSAnQGRjbC9zZGsvbWF0aCdcbmltcG9ydCB7IEludGVycG9sYXRpb25UeXBlIH0gZnJvbSAnLi9tYXRoJztcblxuLyoqXG4gKiBSZXR1cm5zIGFuIGFycmF5IG9mIGVudGl0aWVzIHRoYXQgYWxsIHNoYXJlIHRoZSBwcm92aWRlZCBlbnRpdHkgYXMgcGFyZW50LlxuICpcbiAqIEBwYXJhbSBwYXJlbnQgLSBQYXJlbnQgb2YgdGhlIGVudGl0aWVzIHlvdSB3YW50IHRvIGZldGNoLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgZW50aXRpZXMgdGhhdCBhcmUgY2hpbGRyZW4gb2YgdGhlIHByb3ZpZGVkIGVudGl0eS4gSWYgdGhlIGVudGl0eSBoYXMgbm8gY2hpbGRyZW4sIGl0IHJldHVybnMgYW4gZW1wdHkgYXJyYXkuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnRpdGllc1dpdGhQYXJlbnQoXG5cdHBhcmVudDogRW50aXR5XG4pOiBFbnRpdHlbXSB7XG5cdGNvbnN0IGVudGl0aWVzV2l0aFBhcmVudDogRW50aXR5W10gPSBbXTtcblxuXHRmb3IgKGNvbnN0IFtlbnRpdHksIHRyYW5zZm9ybV0gb2YgZW5naW5lLmdldEVudGl0aWVzV2l0aChUcmFuc2Zvcm0pKSB7XG5cdFx0aWYgKHRyYW5zZm9ybS5wYXJlbnQgPT09IHBhcmVudCkge1xuXHRcdFx0ZW50aXRpZXNXaXRoUGFyZW50LnB1c2goZW50aXR5KTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZW50aXRpZXNXaXRoUGFyZW50O1xufVxuXG5cbi8qKlxuICogUmV0dXJucyBhbiBlbnRpdHkgdGhhdCBpcyB0aGUgcGFyZW50IG9mIHRoZSBwcm92aWRlZCBlbnRpdHkuXG4gKlxuICogQHBhcmFtIGNoaWxkIC0gQ2hpbGQgb2YgdGhlIGVudGl0eSB5b3Ugd2FudCB0byBmZXRjaC5cbiAqIEByZXR1cm5zIFRoZSBwYXJlbnQgZW50aXR5LiBJZiBubyBwYXJlbnQgaXMgZm91bmQgaXQgZGVmYXVsdHMgdG8gdGhlIHJvb3QgZW50aXR5IG9mIHRoZSBzY2VuZS5cbiAqIEBwdWJsaWNcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50aXR5UGFyZW50KFxuXHRjaGlsZDogRW50aXR5XG4pOiBFbnRpdHkge1xuXHRjb25zdCB0cmFuc2Zvcm0gPSBUcmFuc2Zvcm0uZ2V0T3JOdWxsKGNoaWxkKTtcblx0aWYgKHRyYW5zZm9ybSkge1xuXHRcdHJldHVybiB0cmFuc2Zvcm0ucGFyZW50IGFzIEVudGl0eTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gZW5naW5lLlJvb3RFbnRpdHkgYXMgRW50aXR5O1xuXHR9XG59XG5cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgcGxheWVyJ3MgYXZhdGFyLlxuICpcbiAqIEByZXR1cm5zIEEgVmVjdG9yMyB3aXRoIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBwbGF5ZXIncyBhdmF0YXIsIHJlbGF0aXZlIHRvIHRoZSBzY2VuZSdzIG9yaWdpbi4gSWYgbm8gZGF0YSBjYW4gYmUgcmV0cmlldmVkLCBpdCByZXR1cm5zICgwLDAsMCkuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQbGF5ZXJQb3NpdGlvbigpOiBWZWN0b3IzIHtcblx0cmV0dXJuIFRyYW5zZm9ybS5nZXRPck51bGwoZW5naW5lLlBsYXllckVudGl0eSk/LnBvc2l0aW9uIHx8IFZlY3RvcjMuY3JlYXRlKClcbn1cblxuXG5cbi8qKlxuICogUGxheXMgYSBzb3VuZCBmcm9tIGFuIGF1ZGlvIGZpbGUsIGF0IGEgZ2l2ZW4gbG9jYXRpb24gaW4gdGhlIHNjZW5lLlxuICpcbiAqIEBwYXJhbSBmaWxlIC0gUGF0aCB0byBhbiBhdWRpbyBmaWxlIHN0b3JlZCBpbiB0aGUgc2NlbmUncyBmb2xkZXIsIGFzIGEgc3RyaW5nLlxuICogQHBhcmFtIGxvb3AgLSBCb29sZWFuIHRvIHNwZWNpZnkgaWYgdGhlIHNvdW5kIHNob3VsZCBiZSBwbGF5ZWQgb25jZSBvciBsb29wZWQuIEZhbHNlIGJ5IGRlZmF1bHQuXG4gKiBAcGFyYW0gcG9zaXRpb24gLSBWZWN0b3IzIHdpdGggdGhlIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBzY2VuZSdzIG9yaWdpbi4gSWYgbm90IHByb3ZpZGVkLCB0aGUgc291bmQgcGxheXMgYXQgdGhlIGNhbWVyYSdzIGxvY2F0aW9uLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgW2VudGl0eSwgdHJhbnNmb3JtXSBmb3IgZWFjaCBlbnRpdHkgdGhhdCBpcyBhIGNoaWxkIG9mIHRoZSBwcm92aWRlZCBlbnRpdHkuIElmIHRoZSBlbnRpdHkgaGFzIG5vIGNoaWxkcmVuLCBpdCByZXR1cm5zIG51bGwuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwbGF5U291bmQoXG5cdGZpbGU6IHN0cmluZyxcblx0bG9vcDogYm9vbGVhbiA9IGZhbHNlLFxuXHRwb3NpdGlvbj86IFZlY3RvcjNcbikge1xuXHRjb25zdCBlbnRpdHkgPSBlbmdpbmUuYWRkRW50aXR5KClcblx0QXVkaW9Tb3VyY2UuY3JlYXRlKGVudGl0eSwge1xuXHRcdGF1ZGlvQ2xpcFVybDogZmlsZSxcblx0XHRsb29wLFxuXHRcdHBsYXlpbmc6IHRydWVcblx0fSlcblxuXHRUcmFuc2Zvcm0uY3JlYXRlKGVudGl0eSwge1xuXHRcdHBvc2l0aW9uOiBwb3NpdGlvbiA/IHBvc2l0aW9uIDogZ2V0UGxheWVyUG9zaXRpb24oKVxuXHR9KVxuXG5cdHJldHVybiBlbnRpdHlcbn1cblxuLyoqXG4gKiBNYXBzIGFuIEVhc2luZ0Z1bmN0aW9uIHRvIHRoZSBwcm92aWRlZCBJbnRlcnBvbGF0aW9uVHlwZVxuICpcbiAqIEBwYXJhbSB0eXBlIC0gYW4gSW50ZXJwb2xhdGlvblR5cGUgZW51bSB0eXBlXG4gKiBAcmV0dXJucyBBbiBFYXNpbmdGdW5jdGlvbiBlbnVtIHR5cGVcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVhc2luZ0Z1bmN0aW9uRnJvbUludGVycG9sYXRpb24odHlwZTogSW50ZXJwb2xhdGlvblR5cGUpOiBFYXNpbmdGdW5jdGlvbiB7XG5cdHN3aXRjaCAodHlwZSkge1xuXHRcdGNhc2UgSW50ZXJwb2xhdGlvblR5cGUuTElORUFSOlxuXHRcdFx0cmV0dXJuIEVhc2luZ0Z1bmN0aW9uLkVGX0xJTkVBUlxuXHRcdGNhc2UgSW50ZXJwb2xhdGlvblR5cGUuRUFTRUlOUVVBRDpcblx0XHRcdHJldHVybiBFYXNpbmdGdW5jdGlvbi5FRl9FQVNFSU5RVUFEXG5cdFx0Y2FzZSBJbnRlcnBvbGF0aW9uVHlwZS5FQVNFT1VUUVVBRDpcblx0XHRcdHJldHVybiBFYXNpbmdGdW5jdGlvbi5FRl9FQVNFT1VUUVVBRFxuXHRcdGNhc2UgSW50ZXJwb2xhdGlvblR5cGUuRUFTRVFVQUQ6XG5cdFx0XHRyZXR1cm4gRWFzaW5nRnVuY3Rpb24uRUZfRUFTRVFVQURcblx0XHRjYXNlIEludGVycG9sYXRpb25UeXBlLkVBU0VJTlNJTkU6XG5cdFx0XHRyZXR1cm4gRWFzaW5nRnVuY3Rpb24uRUZfRUFTRUlOU0lORVxuXHRcdGNhc2UgSW50ZXJwb2xhdGlvblR5cGUuRUFTRU9VVFNJTkU6XG5cdFx0XHRyZXR1cm4gRWFzaW5nRnVuY3Rpb24uRUZfRUFTRU9VVFNJTkVcblx0XHRjYXNlIEludGVycG9sYXRpb25UeXBlLkVBU0VTSU5FOlxuXHRcdFx0cmV0dXJuIEVhc2luZ0Z1bmN0aW9uLkVGX0VBU0VTSU5FXG5cdFx0Y2FzZSBJbnRlcnBvbGF0aW9uVHlwZS5FQVNFSU5FWFBPOlxuXHRcdFx0cmV0dXJuIEVhc2luZ0Z1bmN0aW9uLkVGX0VBU0VJTkVYUE9cblx0XHRjYXNlIEludGVycG9sYXRpb25UeXBlLkVBU0VPVVRFWFBPOlxuXHRcdFx0cmV0dXJuIEVhc2luZ0Z1bmN0aW9uLkVGX0VBU0VPVVRFWFBPXG5cdFx0Y2FzZSBJbnRlcnBvbGF0aW9uVHlwZS5FQVNFRVhQTzpcblx0XHRcdHJldHVybiBFYXNpbmdGdW5jdGlvbi5FRl9FQVNFRVhQT1xuXHRcdGNhc2UgSW50ZXJwb2xhdGlvblR5cGUuRUFTRUlORUxBU1RJQzpcblx0XHRcdHJldHVybiBFYXNpbmdGdW5jdGlvbi5FRl9FQVNFSU5FTEFTVElDXG5cdFx0Y2FzZSBJbnRlcnBvbGF0aW9uVHlwZS5FQVNFT1VURUxBU1RJQzpcblx0XHRcdHJldHVybiBFYXNpbmdGdW5jdGlvbi5FRl9FQVNFT1VURUxBU1RJQ1xuXHRcdGNhc2UgSW50ZXJwb2xhdGlvblR5cGUuRUFTRUVMQVNUSUM6XG5cdFx0XHRyZXR1cm4gRWFzaW5nRnVuY3Rpb24uRUZfRUFTRUVMQVNUSUNcblx0XHRjYXNlIEludGVycG9sYXRpb25UeXBlLkVBU0VJTkJPVU5DRTpcblx0XHRcdHJldHVybiBFYXNpbmdGdW5jdGlvbi5FRl9FQVNFSU5CT1VOQ0Vcblx0XHRjYXNlIEludGVycG9sYXRpb25UeXBlLkVBU0VPVVRFQk9VTkNFOlxuXHRcdFx0cmV0dXJuIEVhc2luZ0Z1bmN0aW9uLkVGX0VBU0VPVVRCT1VOQ0Vcblx0XHRjYXNlIEludGVycG9sYXRpb25UeXBlLkVBU0VCT1VOQ0U6XG5cdFx0XHRyZXR1cm4gRWFzaW5nRnVuY3Rpb24uRUZfRUFTRUJPVU5DRVxuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gRWFzaW5nRnVuY3Rpb24uRUZfTElORUFSXG5cdH1cbn1cbiJdfQ==