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';
// 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;
}
}
_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());
_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);
}
};