diff options
| author | Ruben Beltran del Rio <git@r.bdr.sh> | 2024-05-07 22:37:27 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <git@r.bdr.sh> | 2024-05-07 22:37:27 +0200 |
| commit | 362f91160b243453578633e3f9af67ce40179d8c (patch) | |
| tree | a9ee95e2f8a9c59189ea904ce87bfe54ed5be107 /lib/systems/camera_adjuster.js | |
| parent | 5f6ef99eae91f53239f08143cead1249893fef81 (diff) | |
Make 3D
Diffstat (limited to 'lib/systems/camera_adjuster.js')
| -rw-r--r-- | lib/systems/camera_adjuster.js | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/lib/systems/camera_adjuster.js b/lib/systems/camera_adjuster.js new file mode 100644 index 0000000..3b6ea41 --- /dev/null +++ b/lib/systems/camera_adjuster.js @@ -0,0 +1,74 @@ +import { System } from '@serpentity/serpentity'; +import Cameras from '../nodes/cameras'; +import { settingsContainer, slider } from '../factories/ui'; + +const internals = { + symbols: { + x: '𝜃', + y: '𝜓', + z: '𝜙' + } +}; + +export default class CameraAdjuster extends System { + + constructor(container) { + + super(); + this.container = container; + } + + added(engine){ + + this.nodes = engine.getNodes(Cameras); + this.adjusterContainer = settingsContainer({ + id: 'camera-adjuster', + label: 'Camera' + }) + + let i = 0; + for (const node of this.nodes) { + const nodeElement = settingsContainer({ + id: `camera-adjuster-${i}`, + label: `C${i + 1}`, + level: 3 + }); + + nodeElement.appendChild(slider({ + min: '2', + max: '10', + step: '0.1', + label: '𝑟', + className: 'radius', + get: () => node.radius.radius.toString(), + set: (value) => (node.radius.radius = parseFloat(value)) + })); + + ['x', 'y', 'z'].forEach(key => { + nodeElement.appendChild(slider({ + min: '0', + max: '0.5', + step: '0.001', + label: internals.symbols[key], + className: `rotation-${key}`, + get: () => node.velocity[key].toString(), + set: (value) => (node.velocity[key] = parseFloat(value)) + })); + }); + + this.adjusterContainer.appendChild(nodeElement); + ++i; + } + + this.container.appendChild(this.adjusterContainer); + } + + removed(){ + + this.container.removeChild(this.adjusterContainer); + delete this.adjusterContainer; + delete this.nodes; + } + + update(){} +}; |