]> git.r.bdr.sh - rbdr/sumo/blobdiff - lib/sumo.js
Add control via keyboard (#6)
[rbdr/sumo] / lib / sumo.js
index daa7e94cecb9fa9f3a91d4f9bf2d1475dd5d0c9d..2b6f085bce02b488a70a4236a1cb4d1825656ea9 100644 (file)
@@ -1,10 +1,22 @@
 import 'babel-polyfill';
+
+// Systems
+import ApplyForceSystem from './systems/apply_force';
+import CreateCouplingLineSystem from './systems/create_coupling_line';
+import ControlMapperSystem from './systems/control_mapper';
+import DashSystem from './systems/dash';
+import ElasticSystem from './systems/elastic';
 import PhysicsWorldControlSystem from './systems/physics_world_control';
 import PhysicsToAttributesSystem from './systems/physics_to_attributes';
-import CreateCouplingLineSystem from './systems/create_coupling_line';
 import RenderSystem from './systems/render';
 import AttributesToRenderableSystem from './systems/attributes_to_renderable';
+
+// Factories
+
 import SumoFactory from './factories/sumo';
+
+// External Dependencies
+
 import Serpentity from '@serpentity/serpentity';
 import { Application } from 'pixi.js';
 import { Engine } from 'matter-js';
@@ -116,7 +128,7 @@ internals.Sumo = class Sumo {
 
       // We're sending the currentTime since it gives better results for
       // this type of renderer, though usually we expect the delta
-      this._engine.update(currentTime);
+      this._engine.update(currentFrameDuration);
       this._previousTime = currentTime;
     }
   }
@@ -176,10 +188,18 @@ internals.Sumo = class Sumo {
 
   _initializeSystems() {
 
+    this._engine.addSystem(new ControlMapperSystem());
+
+    this._engine.addSystem(new DashSystem());
+
+    this._engine.addSystem(new ApplyForceSystem());
+
     this._engine.addSystem(new PhysicsWorldControlSystem({
       engine: this._matterJs
     }));
 
+    this._engine.addSystem(new ElasticSystem());
+
     this._engine.addSystem(new PhysicsToAttributesSystem());
 
     this._engine.addSystem(new AttributesToRenderableSystem());
@@ -195,42 +215,42 @@ internals.Sumo = class Sumo {
 
   _initializeEntities() {
 
-    const entityA = SumoFactory.createSumo(null, {
+    const sumoA = SumoFactory.createSumo(null, {
       position: {
         x: 50,
         y: 50
       }
     });
 
-    const entityB = SumoFactory.createSumo(null, {
+    const sumoB = SumoFactory.createControllableSumo(null, {
       position: {
-        x: 309,
-        y: 112
+        x: 500,
+        y: 78
       }
     });
 
-    const entityC = SumoFactory.createSumo(null, {
+    const harness = SumoFactory.createHarness(null, {
       position: {
-        x: 500,
-        y: 78
+        x: 309,
+        y: 112
       }
     });
 
     SumoFactory.createRubberBand(this._engine, {
-      entityA,
-      entityB
+      entityA: sumoA,
+      entityB: harness
     });
 
     SumoFactory.createRubberBand(this._engine, {
-      entityA: entityC,
-      entityB
+      entityA: sumoB,
+      entityB: harness
     });
 
     // To keep the coupling behind, we'll manually add the sumos later
 
-    this._engine.addEntity(entityA);
-    this._engine.addEntity(entityB);
-    this._engine.addEntity(entityC);
+    this._engine.addEntity(sumoA);
+    this._engine.addEntity(sumoB);
+    this._engine.addEntity(harness);
   }
 };