]> git.r.bdr.sh - rbdr/sumo/commitdiff
Fix positioning and lessen friction (#8)
authorRubén Beltrán del Río <redacted>
Tue, 24 Apr 2018 01:34:45 +0000 (20:34 -0500)
committerGitHub <redacted>
Tue, 24 Apr 2018 01:34:45 +0000 (20:34 -0500)
lib/factories/sumo.js
lib/sumo.js

index dad99870ed9634d5deae699e01484068cf51d614..e8417f9532667416b556077ca8bb9164a906997c 100644 (file)
@@ -80,8 +80,8 @@ export default {
     // PHYSICS
 
     const frictionAir = 0.02;
-    const friction = 1;
-    const frictionStatic = 1;
+    const friction = 0.01;
+    const frictionStatic = 0.01;
     const restitution = 1;
     const density = 1.5;
 
@@ -334,6 +334,52 @@ export default {
       engine.addEntity(entity);
     }
 
+    return entity;
+  },
+
+  /**
+   * Creates an invisible block
+   *
+   * @function createInvisibleBlock
+   * @memberof SumoFactory
+   * @param {external:Serpentity} [engine] the serpentity engine to attach
+   * to. If not sent, it will not be attached.
+   * @param {object} [config] the config to override the entity, accepts
+   * the key `position` as an object with an x and y property.
+   * @return {external:Serpentity.Entity} the created entity
+   */
+  createInvisibleBlock(engine, config = {}) {
+
+    const entity = new Entity();
+
+    // POSITION
+
+    entity.addComponent(new PositionComponent(config.position));
+    const position = entity.getComponent(PositionComponent);
+
+    // PHYSICS
+
+    const friction = 0;
+    const frictionStatic = 0;
+    const restitution = 1;
+
+    const body = Bodies.rectangle(position.x / Config.meterSize,
+      position.y / Config.meterSize,
+      config.width / Config.meterSize,
+      config.height / Config.meterSize,
+      {
+        isStatic: true,
+        label: 'Invisible Block',
+        friction,
+        restitution,
+        frictionStatic
+      });
+    entity.addComponent(new BodyComponent({ body }));
+
+    if (engine) {
+      engine.addEntity(entity);
+    }
+
     return entity;
   }
 };
index eef80d759ef547ab807163a7a3b7fa50c403411c..47850871092b3bc5b1d777001ff40098dcba8f49 100644 (file)
@@ -260,6 +260,24 @@ internals.Sumo = class Sumo {
       entityB: harness
     });
 
+    SumoFactory.createInvisibleBlock(this._engine, {
+      width: this.horizontalResolution * 2,
+      height: this.verticalResolution * 0.1,
+      position: {
+        x: this.horizontalResolution / 2,
+        y: -this.verticalResolution * 0.1
+      }
+    });
+
+    SumoFactory.createInvisibleBlock(this._engine, {
+      width: this.horizontalResolution * 2,
+      height: this.verticalResolution * 0.1,
+      position: {
+        x: this.horizontalResolution / 2,
+        y: this.verticalResolution + this.verticalResolution * 0.1
+      }
+    });
+
     // To keep the coupling behind, we'll manually add the sumos later
 
     this._engine.addEntity(sumoA);