UNPKG

@dcl-sdk/utils

Version:

A collection of helpers to make it easier to build a Decentraland scene using the SDK 7.

47 lines 8.11 kB
import { Transform, TextShape, Billboard, MeshRenderer, MeshCollider, Material, pointerEventsSystem, engine } from '@dcl/sdk/ecs'; import { Vector3, Color4 } from '@dcl/sdk/math'; export function addLabel(text, parent, billboard, color, size, textOffset) { let label = engine.addEntity(); Transform.create(label, { position: textOffset ? textOffset : Vector3.create(0, 1.5, 0), parent: parent }); let textShape = TextShape.create(label); textShape.text = text; textShape.fontSize = size ? size : 3; textShape.textColor = color ? color : Color4.Black(); if (billboard) { Billboard.create(label); } return label; } export function addTestCube(transform, triggeredFunction, label, color, sphere, noCollider) { let cube = engine.addEntity(); Transform.create(cube, transform); if (sphere) { let sphereTransform = Transform.getMutable(cube); sphereTransform.scale = Vector3.multiplyByFloats(sphereTransform.scale, 0.5, 0.5, 0.5); MeshRenderer.setSphere(cube); if (!noCollider) MeshCollider.setSphere(cube); } else { MeshRenderer.setBox(cube); if (!noCollider) MeshCollider.setBox(cube); } if (color) { Material.setPbrMaterial(cube, { albedoColor: color }); } if (label) { addLabel(label, cube, true); } if (triggeredFunction) { pointerEventsSystem.onPointerDown(cube, triggeredFunction, { button: 0, hoverText: label ? label : 'click' }); } return cube; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNHLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFpQixZQUFZLEVBQ3BFLFlBQVksRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUNwRCxNQUFNLGNBQWMsQ0FBQTtBQUNyQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQWMvQyxNQUFNLFVBQVUsUUFBUSxDQUN0QixJQUFZLEVBQ1osTUFBYyxFQUNkLFNBQW1CLEVBQ25CLEtBQWMsRUFDZCxJQUFhLEVBQ2IsVUFBb0I7SUFFcEIsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBRTlCLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ3RCLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM3RCxNQUFNLEVBQUUsTUFBTTtLQUNmLENBQUMsQ0FBQTtJQUVGLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdkMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDckIsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3BDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUVwRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBY0QsTUFBTSxVQUFVLFdBQVcsQ0FDekIsU0FBa0MsRUFDbEMsaUJBQXVDLEVBQ3ZDLEtBQWMsRUFDZCxLQUFjLEVBQ2QsTUFBZ0IsRUFDaEIsVUFBb0I7SUFFcEIsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBRTdCLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBRWpDLElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxJQUFJLGVBQWUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2hELGVBQWUsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUN0RixZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzVCLElBQUksQ0FBQyxVQUFVO1lBQ2IsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO1NBQU0sQ0FBQztRQUNOLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDekIsSUFBSSxDQUFDLFVBQVU7WUFDYixZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFFRCxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBRUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFFRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDdEIsbUJBQW1CLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUN6RCxNQUFNLEdBQXdCO1lBQzlCLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTztTQUNuQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRW50aXR5LCBUcmFuc2Zvcm0sIFRleHRTaGFwZSwgQmlsbGJvYXJkLCBUcmFuc2Zvcm1UeXBlLCBNZXNoUmVuZGVyZXIsXG4gIE1lc2hDb2xsaWRlciwgTWF0ZXJpYWwsIHBvaW50ZXJFdmVudHNTeXN0ZW0sIGVuZ2luZSwgRXZlbnRTeXN0ZW1DYWxsYmFjaywgSW5wdXRBY3Rpb25cbn0gZnJvbSAnQGRjbC9zZGsvZWNzJ1xuaW1wb3J0IHsgVmVjdG9yMywgQ29sb3I0IH0gZnJvbSAnQGRjbC9zZGsvbWF0aCdcblxuLyoqXG4gKiBDcmVhdGVzIGEgdGV4dCBsYWJlbCBzcGF0aWFsbHkgbGlua2VkIHRvIGFuIGVudGl0eVxuICpcbiAqIEBwYXJhbSB0ZXh0IC0gVGV4dCB0byB1c2Ugb24gbGFiZWxcbiAqIEBwYXJhbSBwYXJlbnQgLSBFbnRpdHkgdG8gcGxhY2UgbGFiZWwgb24uXG4gKiBAcGFyYW0gYmlsbGJvYXJkIC0gSWYgdHJ1ZSwgbGFiZWwgdHVybnMgdG8gYWx3YXlzIGZhY2UgcGxheWVyLlxuICogQHBhcmFtIGNvbG9yIC0gVGV4dCBjb2xvci4gQmxhY2sgYnkgZGVmYXVsdC5cbiAqIEBwYXJhbSBzaXplIC0gVGV4dCBmb250IHNpemUsIDMgYnkgZGVmYXVsdC5cbiAqIEBwYXJhbSB0ZXh0T2Zmc2V0IC0gT2Zmc2V0IGZyb20gcGFyZW50IGVudGl0eSdzIHBvc2l0aW9uLiBCeSBkZWZhdWx0IDEuNSBtZXRlcnMgYWJvdmUgdGhlIHBhcmVudC5cbiAqIEByZXR1cm5zIEEgbmV3IGVudGl0eSB3aXRoIHRoZSBjb25maWd1cmVkIHNldHRpbmdzIHRoYXQgaXMgYSBjaGlsZCBvZiB0aGUgcHJvdmlkZWQgcGFyZW50XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRMYWJlbChcbiAgdGV4dDogc3RyaW5nLFxuICBwYXJlbnQ6IEVudGl0eSxcbiAgYmlsbGJvYXJkPzogYm9vbGVhbixcbiAgY29sb3I/OiBDb2xvcjQsXG4gIHNpemU/OiBudW1iZXIsXG4gIHRleHRPZmZzZXQ/OiBWZWN0b3IzXG4pOiBFbnRpdHkge1xuICBsZXQgbGFiZWwgPSBlbmdpbmUuYWRkRW50aXR5KClcblxuICBUcmFuc2Zvcm0uY3JlYXRlKGxhYmVsLCB7XG4gICAgcG9zaXRpb246IHRleHRPZmZzZXQgPyB0ZXh0T2Zmc2V0IDogVmVjdG9yMy5jcmVhdGUoMCwgMS41LCAwKSxcbiAgICBwYXJlbnQ6IHBhcmVudFxuICB9KVxuXG4gIGxldCB0ZXh0U2hhcGUgPSBUZXh0U2hhcGUuY3JlYXRlKGxhYmVsKVxuICB0ZXh0U2hhcGUudGV4dCA9IHRleHRcbiAgdGV4dFNoYXBlLmZvbnRTaXplID0gc2l6ZSA/IHNpemUgOiAzXG4gIHRleHRTaGFwZS50ZXh0Q29sb3IgPSBjb2xvciA/IGNvbG9yIDogQ29sb3I0LkJsYWNrKClcblxuICBpZiAoYmlsbGJvYXJkKSB7XG4gICAgQmlsbGJvYXJkLmNyZWF0ZShsYWJlbClcbiAgfVxuXG4gIHJldHVybiBsYWJlbFxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBjdWJlIHRoYXQgY2FuIHJ1biBmdW5jdGlvbnMgd2hlbiBjbGlja2VkLlxuICpcbiAqIEBwYXJhbSB0cmFuc2Zvcm0gLSBUcmFuc2Zvcm0gYXJndW1lbnRzIGZvciB0aGUgY3ViZSwgaW5jbHVkaW5nIHBvc2l0aW9uLCBzY2FsZSBhbmQgcm90YXRpb25cbiAqIEBwYXJhbSB0cmlnZ2VyZWRGdW5jdGlvbiAtIEZ1bmN0aW9uIHRvIGV4ZWN1dGUgZXZlcnkgdGltZSB0aGUgY3ViZSBpcyBjbGlja2VkLlxuICogQHBhcmFtIGxhYmVsIC0gVGV4dCB0byBkaXNwbGF5IG92ZXIgY3ViZSBhbmQgb24gaG92ZXIuXG4gKiBAcGFyYW0gY29sb3IgLSBDdWJlIGNvbG9yLlxuICogQHBhcmFtIHNwaGVyZSAtIElmIHRydWUsIHVzZSBhIHNwaGVyZSBzaGFwZSBpbnN0ZWFkIG9mIGN1YmUuXG4gKiBAcGFyYW0gbm9Db2xsaWRlciAtIElmIHRydWUsIGN1YmUgaGFzIG5vIGNvbGxpZGVyLlxuICogQHJldHVybnMgQSBuZXcgZW50aXR5IHdpdGggdGhlIGNvbmZpZ3VyZWQgc2V0dGluZ3MgYW5kIGEgbGFiZWwgYXMgYSBjaGlsZFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkVGVzdEN1YmUoXG4gIHRyYW5zZm9ybT86IFBhcnRpYWw8VHJhbnNmb3JtVHlwZT4sXG4gIHRyaWdnZXJlZEZ1bmN0aW9uPzogRXZlbnRTeXN0ZW1DYWxsYmFjayxcbiAgbGFiZWw/OiBzdHJpbmcsXG4gIGNvbG9yPzogQ29sb3I0LFxuICBzcGhlcmU/OiBib29sZWFuLFxuICBub0NvbGxpZGVyPzogYm9vbGVhblxuKTogRW50aXR5IHtcbiAgbGV0IGN1YmUgPSBlbmdpbmUuYWRkRW50aXR5KClcblxuICBUcmFuc2Zvcm0uY3JlYXRlKGN1YmUsIHRyYW5zZm9ybSlcblxuICBpZiAoc3BoZXJlKSB7XG4gICAgbGV0IHNwaGVyZVRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXRNdXRhYmxlKGN1YmUpXG4gICAgc3BoZXJlVHJhbnNmb3JtLnNjYWxlID0gVmVjdG9yMy5tdWx0aXBseUJ5RmxvYXRzKHNwaGVyZVRyYW5zZm9ybS5zY2FsZSwgMC41LCAwLjUsIDAuNSlcbiAgICBNZXNoUmVuZGVyZXIuc2V0U3BoZXJlKGN1YmUpXG4gICAgaWYgKCFub0NvbGxpZGVyKVxuICAgICAgTWVzaENvbGxpZGVyLnNldFNwaGVyZShjdWJlKTtcbiAgfSBlbHNlIHtcbiAgICBNZXNoUmVuZGVyZXIuc2V0Qm94KGN1YmUpXG4gICAgaWYgKCFub0NvbGxpZGVyKVxuICAgICAgTWVzaENvbGxpZGVyLnNldEJveChjdWJlKVxuICB9XG5cbiAgaWYgKGNvbG9yKSB7XG4gICAgTWF0ZXJpYWwuc2V0UGJyTWF0ZXJpYWwoY3ViZSwgeyBhbGJlZG9Db2xvcjogY29sb3IgfSlcbiAgfVxuXG4gIGlmIChsYWJlbCkge1xuICAgIGFkZExhYmVsKGxhYmVsLCBjdWJlLCB0cnVlKVxuICB9XG4gIFxuICBpZiAodHJpZ2dlcmVkRnVuY3Rpb24pIHtcbiAgICBwb2ludGVyRXZlbnRzU3lzdGVtLm9uUG9pbnRlckRvd24oY3ViZSwgdHJpZ2dlcmVkRnVuY3Rpb24sIHtcbiAgICAgIGJ1dHRvbjogSW5wdXRBY3Rpb24uSUFfUE9JTlRFUixcbiAgICAgIGhvdmVyVGV4dDogbGFiZWwgPyBsYWJlbCA6ICdjbGljaydcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGN1YmVcbn1cbiJdfQ==