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