UNPKG

@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
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==