UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

78 lines (62 loc) 2.18 kB
import View from "../../View.js"; import { CheckboxView } from "../../elements/CheckboxView.js"; import ObservedBoolean from "../../../core/model/ObservedBoolean.js"; import { LineView } from "../../../../editor/view/ecs/components/common/LineView.js"; import LabelView from "../../common/LabelView.js"; import ObservedValue from "../../../core/model/ObservedValue.js"; export class BooleanVector3Control extends View { constructor() { super(); this.el = document.createElement('div'); this.addClass('ui-boolean-vector3-controller'); this.model = new ObservedValue(null); const _x = new ObservedBoolean(false); const _y = new ObservedBoolean(false); const _z = new ObservedBoolean(false); _x.onChanged.add(v => { const b = this.model.getValue(); if (b !== null) { b.setX(v); } }); _y.onChanged.add(v => { const b = this.model.getValue(); if (b !== null) { b.setY(v); } }); _z.onChanged.add(v => { const b = this.model.getValue(); if (b !== null) { b.setZ(v); } }); const cX = new CheckboxView({ value: _x }); const cY = new CheckboxView({ value: _y }); const cZ = new CheckboxView({ value: _z }); this.addChild(new LineView({ elements: [ new LabelView('x'), cX, new LabelView('y'), cY, new LabelView('z'), cZ ] })); function setValues(x, y, z) { _x.set(x); _y.set(y); _z.set(z); } this.model.onChanged.add((model, oldModel) => { if (model !== null) { setValues(model.x, model.y, model.z); model.onChanged.add(setValues); } if (oldModel !== null) { oldModel.onChanged.remove(setValues); } }); } }