X-Git-Url: https://git.r.bdr.sh/rbdr/lissajous/blobdiff_plain/5f6ef99eae91f53239f08143cead1249893fef81..2b9badac1345c865c34097bc5d1699329b53fdc8:/lib/main.js diff --git a/lib/main.js b/lib/main.js index 6a2ea8f..cc4392a 100644 --- a/lib/main.js +++ b/lib/main.js @@ -1,8 +1,19 @@ import Serpentity from '@serpentity/serpentity'; +import { canvasId, settingsId, fps } from './config'; + +// Systems +import CameraRotator from './systems/camera_rotator'; import WebGLRenderer from './systems/webgl_renderer'; import LissajousPositionUpdater from './systems/lissajous_position_updater'; +import CameraAdjuster from './systems/camera_adjuster'; +import FrequencyAdjuster from './systems/frequency_adjuster'; +import PhaseAdjuster from './systems/phase_adjuster'; +import AmplitudeAdjuster from './systems/amplitude_adjuster'; +import GlobalAdjuster from './systems/global_adjuster'; + +// Factories import { lissajousCurve } from './factories/curves'; -import { canvasId, fps } from './config'; +import { camera, configuration } from './factories/global'; const internals = { @@ -16,12 +27,27 @@ const internals = { // Create entities const engine = new Serpentity(); - // Add Systems - engine.addSystem(new LissajousPositionUpdater(canvasId)); - engine.addSystem(new WebGLRenderer(canvasId)); - // Add Entities + engine.addEntity(camera()); engine.addEntity(lissajousCurve()); + engine.addEntity(configuration()); + + // Select elements + const canvas = document.getElementById(canvasId); + const settings = document.getElementById(settingsId); + + // Add Systems + engine.addSystem(new CameraRotator()); + engine.addSystem(new LissajousPositionUpdater()); + engine.addSystem(new WebGLRenderer(canvas)); + + // IMPROVEMENT NOTE: I believe adjusters can be generalized further. + // We could potentially have a factory for this. + engine.addSystem(new GlobalAdjuster(settings)); + engine.addSystem(new CameraAdjuster(settings)); + engine.addSystem(new FrequencyAdjuster(settings)); + engine.addSystem(new PhaseAdjuster(settings)); + engine.addSystem(new AmplitudeAdjuster(settings)); internals.engine = engine; },