aboutsummaryrefslogtreecommitdiff
path: root/lib/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/main.js')
-rw-r--r--lib/main.js34
1 files changed, 29 insertions, 5 deletions
diff --git a/lib/main.js b/lib/main.js
index 6a2ea8f..6018957 100644
--- a/lib/main.js
+++ b/lib/main.js
@@ -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;
},