]> git.r.bdr.sh - rbdr/lissajous/blobdiff - lib/main.js
Add keyboard markers, shiftable sliders
[rbdr/lissajous] / lib / main.js
index 6a2ea8f9cc427f38372ec488f8298be956c4c6a7..60189578f817e292f9d1745c9a8e7ecb60d15607 100644 (file)
@@ -1,8 +1,18 @@
 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 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 +26,26 @@ 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 AmplitudeAdjuster(settings));
 
     internals.engine = engine;
   },