UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

58 lines (39 loc) 1.39 kB
import { TypeEditor } from "../../TypeEditor.js"; import { NumberController } from "../../../../view/ecs/components/common/NumberController.js"; import Vector1 from "../../../../../src/core/geom/Vector1.js"; import { isSubclassOf } from "../../../../../src/engine/plugin/isSubclassOf.js"; export class Vector1Editor extends TypeEditor { build(parent, field, registry) { /** * @type {Vector1} */ const v1 = field.adapter.read(parent, field.name); if (!((v1 instanceof Vector1) || isSubclassOf(v1, Vector1))) { throw new Error(`Field ${field} is not Vector1`); } const view = new NumberController({ value: v1.getValue() }); let lock = false; const sync_up = () => { if (lock) { return; } lock = true; view.value.set(v1.x); lock = false; }; const sync_down = () => { if (lock) { return; } lock = true; v1.set( view.value.getValue(), ); lock = false; }; view.on.linked.add(sync_up); view.bindSignal(view.value.onChanged, sync_down); view.bindSignal(v1.onChanged, sync_up); return view; } }