]>
git.r.bdr.sh - rbdr/lissajous/blob - lib/systems/camera_adjuster.js
1 import { System
} from '@serpentity/serpentity';
2 import Cameras
from '../nodes/cameras';
3 import { settingsContainer
, slider
} from '../factories/ui';
14 * UI that adjusts the parameters of the camera
16 export default class CameraAdjuster
extends System
{
18 constructor(container
) {
21 this.container
= container
;
26 this.nodes
= engine
.getNodes(Cameras
);
27 this.adjusterContainer
= settingsContainer({
28 id: 'camera-adjuster',
33 for (const node
of this.nodes
) {
34 const nodeElement
= settingsContainer({
35 id: `camera-adjuster-${i}`,
40 nodeElement
.appendChild(slider({
41 id: `camera-adjuster-${i}-slider-radius`,
47 get: () => node
.radius
.radius
.toString(),
48 set: (value
) => (node
.radius
.radius
= parseFloat(value
))
51 ['x', 'y', 'z'].forEach(key
=> {
52 nodeElement
.appendChild(slider({
53 id: `camera-adjuster-${i}-slider-${key}`,
57 label: internals
.symbols
[key
],
58 className: `rotation-${key}`,
59 get: () => node
.velocity
[key
].toString(),
60 set: (value
) => (node
.velocity
[key
] = parseFloat(value
))
64 this.adjusterContainer
.appendChild(nodeElement
);
68 this.container
.appendChild(this.adjusterContainer
);
73 this.container
.removeChild(this.adjusterContainer
);
74 delete this.adjusterContainer
;