diff options
| author | Rubén Beltrán del Río <ben@nsovocal.com> | 2018-05-28 21:35:38 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-05-28 21:35:38 -0500 |
| commit | 1676911c8a2621274bf75ff7271faa926cf58d6c (patch) | |
| tree | 776613e919a5fae242ba65f0871028d4c678bcff /lib/components | |
| parent | 764ac76aa90b75cd5d79c217220654a6975069af (diff) | |
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
Diffstat (limited to 'lib/components')
| -rw-r--r-- | lib/components/grab.js | 60 | ||||
| -rw-r--r-- | lib/components/grab_area.js | 34 | ||||
| -rw-r--r-- | lib/components/grabbable.js | 11 |
3 files changed, 105 insertions, 0 deletions
diff --git a/lib/components/grab.js b/lib/components/grab.js new file mode 100644 index 0000000..ab808a8 --- /dev/null +++ b/lib/components/grab.js @@ -0,0 +1,60 @@ +import { Component } from '@serpentity/serpentity'; + +/** + * Component that stores a dash skill + * + * @extends {external:Serpentity.Component} + * @class GrabComponent + * @param {object} config a configuration object to extend. + */ +export default class GrabComponent extends Component { + constructor(config) { + + super(config); + + /** + * The properthy that holds the grab state + * + * @property {boolean} grabbing + * @instance + * @memberof GrabComponent + */ + this.dashing = this.grabbing || false; + + /** + * The constraint used for the grab + * + * @property {external:MatterJs.Constraint} constraint + * @instance + * @memberof GrabComponent + */ + this.constraint = this.constraint || null; + + /** + * Whether the grab is locked from occuring + * + * @property {boolean} locked + * @instance + * @memberof GrabComponent + */ + this.locked = this.locked || false; + + /** + * Cooldown before lock is removed + * + * @property {number} cooldown + * @instance + * @memberof GrabComponent + */ + this.cooldown = this.cooldown || 3000; + + /** + * Current cooldown + * + * @property {number} currentCooldown + * @instance + * @memberof GrabComponent + */ + this.currentCooldown = 0; + } +}; diff --git a/lib/components/grab_area.js b/lib/components/grab_area.js new file mode 100644 index 0000000..3966c83 --- /dev/null +++ b/lib/components/grab_area.js @@ -0,0 +1,34 @@ +import { Component } from '@serpentity/serpentity'; + +/** + * Component that stores an area used to grab things + * + * @extends {external:Serpentity.Component} + * @class GrabAreaComponent + * @param {object} config a configuration object to extend. + */ +export default class GrabAreaComponent extends Component { + constructor(config) { + + super(config); + + /** + * The properthy that holds the angle. Assumes the area behaves as a sensor + * + * @property {external:MatterJs.Body} area + * @instance + * @memberof GrabAreaComponent + */ + this.area = this.area || null; + + /** + * The constraint that ties this area to its parent + * + * @property {external:MatterJs.Constraint} constraint + * @instance + * @memberof GrabAreaComponent + */ + this.constraint = this.constraint || null; + } +}; + diff --git a/lib/components/grabbable.js b/lib/components/grabbable.js new file mode 100644 index 0000000..223b95c --- /dev/null +++ b/lib/components/grabbable.js @@ -0,0 +1,11 @@ +import { Component } from '@serpentity/serpentity'; + +/** + * Component that stores grab status + * + * @extends {external:Serpentity.Component} + * @class GrabbableComponent + * @param {object} config a configuration object to extend. + */ +export default class GrabbableComponent extends Component {}; + |