From 1676911c8a2621274bf75ff7271faa926cf58d6c Mon Sep 17 00:00:00 2001 From: Rubén Beltrán del Río Date: Mon, 28 May 2018 21:35:38 -0500 Subject: Add Grab System (#9) * Remove unused code * Adds grab components * Adds grab nodes * Add sensors to the physics world * Add grab systems * Add new sprites * Attach grab components * Add grab system to engine * Update changelog --- lib/factories/sumo.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'lib/factories/sumo.js') diff --git a/lib/factories/sumo.js b/lib/factories/sumo.js index e8417f9..7b50f8a 100644 --- a/lib/factories/sumo.js +++ b/lib/factories/sumo.js @@ -10,6 +10,9 @@ import CoupledEntitiesComponent from '../components/coupled_entities'; import DashComponent from '../components/dash'; import ElasticComponent from '../components/elastic'; import ForceComponent from '../components/force'; +import GrabAreaComponent from '../components/grab_area'; +import GrabbableComponent from '../components/grabbable'; +import GrabComponent from '../components/grab'; import MaxVelocityComponent from '../components/max_velocity'; import PositionComponent from '@serpentity/components.position'; import PixiContainerComponent from '../components/pixi_container'; @@ -96,6 +99,18 @@ export default { }); entity.addComponent(new BodyComponent({ body })); + // GRAB + + const areaSizeFactor = 2; // Multiplier vs the radius + const area = Bodies.circle(position.x / Config.meterSize, position.y / Config.meterSize, (radius * areaSizeFactor) / Config.meterSize, { + label: 'Sumo Grab Area', + isSensor: true + }); + + entity.addComponent(new GrabAreaComponent({ area })); + entity.addComponent(new GrabComponent({ body })); + entity.addComponent(new GrabbableComponent({ body })); + if (engine) { engine.addEntity(entity); } @@ -235,6 +250,16 @@ export default { component: DashComponent, property: 'dashing' } + }, + { + source: { + type: 'keyboard', + index: 88 // X + }, + target: { + component: GrabComponent, + property: 'grabbing' + } } ] })); -- cgit