40 lines
852 B
JavaScript
40 lines
852 B
JavaScript
import { GUI } from 'GUI';
|
|
|
|
export class ThreeGUIElement extends HTMLElement{
|
|
constructor() {
|
|
super();
|
|
this.GUI = new GUI();
|
|
this.GUI.onChange(this.onGUIValueChange.bind(this));
|
|
}
|
|
|
|
onGUIValueChange(evt) {
|
|
this.dispatchEvent(new CustomEvent('value-change', {
|
|
detail: {
|
|
property: evt.property,
|
|
value: evt.value
|
|
}
|
|
}));
|
|
}
|
|
|
|
reset() {
|
|
while(this.GUI.children.length > 0) {
|
|
this.GUI.children[0].destroy();
|
|
}
|
|
}
|
|
|
|
setElements(elements) {
|
|
var self = this;
|
|
this.elements = {};
|
|
|
|
var gui = this.GUI;
|
|
this.reset();
|
|
elements.forEach(function(parameter) {
|
|
console.log(parameter)
|
|
self.elements[parameter.alias] = parameter.value;
|
|
gui.add(self.elements, parameter.alias, parameter.value);
|
|
});
|
|
}
|
|
}
|
|
|
|
customElements.define('three-gui', ThreeGUIElement);
|