X-Git-Url: https://git.r.bdr.sh/rbdr/sumo/blobdiff_plain/f45bcde17fe0a8849e647ac843106fb51d2e8971..7ade6f8d96825386bf2e89dea51f9297cbac8e9c:/lib/sumo.js?ds=sidebyside diff --git a/lib/sumo.js b/lib/sumo.js index daa7e94..2b6f085 100644 --- a/lib/sumo.js +++ b/lib/sumo.js @@ -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); } };