From 5db058021f0afb041c402204e81e4c65c4283141 Mon Sep 17 00:00:00 2001 From: Richard Davey Date: Fri, 9 Feb 2018 15:23:33 +0000 Subject: [PATCH] Added jsdocs. --- src/physics/impact/Body.js | 367 +++++++++++++++++- src/physics/impact/COLLIDES.js | 57 ++- src/physics/impact/SeperateX.js | 12 +- src/physics/impact/SeperateY.js | 12 +- src/physics/impact/TYPE.js | 49 ++- src/physics/impact/index.js | 30 +- src/physics/index.js | 3 +- src/physics/matter-js/index.js | 1 + .../{ => matter-js}/poly-decomp/index.js | 0 9 files changed, 487 insertions(+), 44 deletions(-) rename src/physics/{ => matter-js}/poly-decomp/index.js (100%) diff --git a/src/physics/impact/Body.js b/src/physics/impact/Body.js index bedb66362..eb8e5e0fa 100644 --- a/src/physics/impact/Body.js +++ b/src/physics/impact/Body.js @@ -1,5 +1,3 @@ -// Phaser.Physics.Impact.Body - var Class = require('../../utils/Class'); var COLLIDES = require('./COLLIDES'); var GetVelocity = require('./GetVelocity'); @@ -7,10 +5,21 @@ var TYPE = require('./TYPE'); var UpdateMotion = require('./UpdateMotion'); /** -* An Impact.js compatible physics body. -* This re-creates the properties you'd get on an Entity and the math needed to update them. -*/ - + * @classdesc + * An Impact.js compatible physics body. + * This re-creates the properties you'd get on an Entity and the math needed to update them. + * + * @class Body + * @memberOf Phaser.Physics.Impact + * @constructor + * @since 3.0.0 + * + * @param {Phaser.Physics.Impact.World} world - [description] + * @param {number} x - [description] + * @param {number} y - [description] + * @param {number} [sx=16] - [description] + * @param {number} [sy=16] - [description] + */ var Body = new Class({ initialize: @@ -20,51 +29,284 @@ var Body = new Class({ if (sx === undefined) { sx = 16; } if (sy === undefined) { sy = sx; } + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#world + * @type {Phaser.Physics.Impact.World} + * @since 3.0.0 + */ this.world = world; + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#gameObject + * @type {Phaser.GameObjects.GameObject} + * @default null + * @since 3.0.0 + */ this.gameObject = null; + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#enabled + * @type {boolean} + * @default true + * @since 3.0.0 + */ this.enabled = true; + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#parent + * @type {null} + * @since 3.0.0 + */ this.parent; + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#id + * @type {integer} + * @since 3.0.0 + */ this.id = world.getNextID(); + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#name + * @type {string} + * @default '' + * @since 3.0.0 + */ this.name = ''; + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#size + * @type {{x: number, y: number}} + * @since 3.0.0 + */ this.size = { x: sx, y: sy }; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#offset + * @type {{x: number, y: number}} + * @since 3.0.0 + */ this.offset = { x: 0, y: 0 }; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#pos + * @type {{x: number, y: number}} + * @since 3.0.0 + */ this.pos = { x: x, y: y }; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#last + * @type {{x: number, y: number}} + * @since 3.0.0 + */ this.last = { x: x, y: y }; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#vel + * @type {{x: number, y: number}} + * @since 3.0.0 + */ this.vel = { x: 0, y: 0 }; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#accel + * @type {{x: number, y: number}} + * @since 3.0.0 + */ this.accel = { x: 0, y: 0 }; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#friction + * @type {{x: number, y: number}} + * @since 3.0.0 + */ this.friction = { x: 0, y: 0 }; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#maxVel + * @type {{x: number, y: number}} + * @since 3.0.0 + */ this.maxVel = { x: world.defaults.maxVelocityX, y: world.defaults.maxVelocityY }; + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#standing + * @type {boolean} + * @default false + * @since 3.0.0 + */ this.standing = false; + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#gravityFactor + * @type {number} + * @since 3.0.0 + */ this.gravityFactor = world.defaults.gravityFactor; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#bounciness + * @type {number} + * @since 3.0.0 + */ this.bounciness = world.defaults.bounciness; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#minBounceVelocity + * @type {number} + * @since 3.0.0 + */ this.minBounceVelocity = world.defaults.minBounceVelocity; + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#accelGround + * @type {number} + * @default 0 + * @since 3.0.0 + */ this.accelGround = 0; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#accelAir + * @type {number} + * @default 0 + * @since 3.0.0 + */ this.accelAir = 0; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#jumpSpeed + * @type {number} + * @default 0 + * @since 3.0.0 + */ this.jumpSpeed = 0; - + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#type + * @type {Phaser.Physics.Impact.TYPE} + * @since 3.0.0 + */ this.type = TYPE.NONE; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#checkAgainst + * @type {Phaser.Physics.Impact.TYPE} + * @since 3.0.0 + */ this.checkAgainst = TYPE.NONE; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#collides + * @type {Phaser.Physics.Impact.COLLIDES} + * @since 3.0.0 + */ this.collides = COLLIDES.NEVER; + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#debugShowBody + * @type {boolean} + * @since 3.0.0 + */ this.debugShowBody = world.defaults.debugShowBody; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#debugShowVelocity + * @type {boolean} + * @since 3.0.0 + */ this.debugShowVelocity = world.defaults.debugShowVelocity; + + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#debugBodyColor + * @type {integer} + * @since 3.0.0 + */ this.debugBodyColor = world.defaults.bodyDebugColor; + /** + * [description] + * + * @name Phaser.Physics.Impact.Body#updateCallback + * @type {function} + * @since 3.0.0 + */ this.updateCallback; - // min 44 deg, max 136 deg + /** + * min 44 deg, max 136 deg + * + * @name Phaser.Physics.Impact.Body#slopeStanding + * @type {{ min: number, max: number }} + * @since 3.0.0 + */ this.slopeStanding = { min: 0.767944870877505, max: 2.3736477827122884 }; }, + /** + * [description] + * + * @method Phaser.Physics.Impact.Body#reset + * @since 3.0.0 + * + * @param {number} x - [description] + * @param {number} y - [description] + */ reset: function (x, y) { this.pos = { x: x, y: y }; @@ -89,6 +331,14 @@ var Body = new Class({ this.collides = COLLIDES.NEVER; }, + /** + * [description] + * + * @method Phaser.Physics.Impact.Body#update + * @since 3.0.0 + * + * @param {number} delta - [description] + */ update: function (delta) { var pos = this.pos; @@ -125,6 +375,14 @@ var Body = new Class({ } }, + /** + * [description] + * + * @method Phaser.Physics.Impact.Body#drawDebug + * @since 3.0.0 + * + * @param {Phaser.GameObjects.Graphics} graphic - [description] + */ drawDebug: function (graphic) { var pos = this.pos; @@ -145,16 +403,42 @@ var Body = new Class({ } }, + /** + * [description] + * + * @method Phaser.Physics.Impact.Body#willDrawDebug + * @since 3.0.0 + * + * @return {boolean} [description] + */ willDrawDebug: function () { return (this.debugShowBody || this.debugShowVelocity); }, + /** + * [description] + * + * @method Phaser.Physics.Impact.Body#skipHash + * @since 3.0.0 + * + * @return {boolean} [description] + */ skipHash: function () { return (!this.enabled || (this.type === 0 && this.checkAgainst === 0 && this.collides === 0)); }, + /** + * [description] + * + * @method Phaser.Physics.Impact.Body#touches + * @since 3.0.0 + * + * @param {Phaser.Physics.Impact.Body} other - [description] + * + * @return {boolean} [description] + */ touches: function (other) { return !( @@ -165,6 +449,19 @@ var Body = new Class({ ); }, + /** + * [description] + * + * @method Phaser.Physics.Impact.Body#resetSize + * @since 3.0.0 + * + * @param {number} x - [description] + * @param {number} y - [description] + * @param {number} width - [description] + * @param {number} height - [description] + * + * @return {Phaser.Physics.Impact.Body} This Body object. + */ resetSize: function (x, y, width, height) { this.pos.x = x; @@ -175,6 +472,14 @@ var Body = new Class({ return this; }, + /** + * [description] + * + * @method Phaser.Physics.Impact.Body#toJSON + * @since 3.0.0 + * + * @return {object} [description] + */ toJSON: function () { var output = { @@ -196,17 +501,40 @@ var Body = new Class({ return output; }, + /** + * [description] + * + * @method Phaser.Physics.Impact.Body#fromJSON + * @todo + * @since 3.0.0 + * + * @param {object} config - [description] + */ fromJSON: function (config) { - // TODO }, - // Can be overridden by user code + /** + * Can be overridden by user code + * + * @method Phaser.Physics.Impact.Body#check + * @since 3.0.0 + * + * @param {[type]} other - [description] + */ check: function (other) { }, - // Can be overridden by user code + /** + * Can be overridden by user code + * + * @method Phaser.Physics.Impact.Body#collideWith + * @since 3.0.0 + * + * @param {Phaser.Physics.Impact.Body} other - [description] + * @param {[type]} axis - [description] + */ collideWith: function (other, axis) { if (this.parent && this.parent._collideCallback) @@ -215,12 +543,27 @@ var Body = new Class({ } }, - // Can be overridden by user code but must return a boolean + /** + * Can be overridden by user code but must return a boolean. + * + * @method Phaser.Physics.Impact.Body#handleMovementTrace + * @since 3.0.0 + * + * @param {[type]} res - [description] + * + * @return {boolean} [description] + */ handleMovementTrace: function (res) { return true; }, + /** + * [description] + * + * @method Phaser.Physics.Impact.Body#destroy + * @since 3.0.0 + */ destroy: function () { this.enabled = false; diff --git a/src/physics/impact/COLLIDES.js b/src/physics/impact/COLLIDES.js index 344636902..350e8e552 100644 --- a/src/physics/impact/COLLIDES.js +++ b/src/physics/impact/COLLIDES.js @@ -1,17 +1,60 @@ -// Collision Types - Determine if and how entities collide with each other - -// In ACTIVE vs. LITE or FIXED vs. ANY collisions, only the "weak" entity moves, -// while the other one stays fixed. In ACTIVE vs. ACTIVE and ACTIVE vs. PASSIVE -// collisions, both entities are moved. LITE or PASSIVE entities don't collide -// with other LITE or PASSIVE entities at all. The behaiviour for FIXED vs. -// FIXED collisions is undefined. +/** + * Collision Types - Determine if and how entities collide with each other. + * + * In ACTIVE vs. LITE or FIXED vs. ANY collisions, only the "weak" entity moves, + * while the other one stays fixed. In ACTIVE vs. ACTIVE and ACTIVE vs. PASSIVE + * collisions, both entities are moved. LITE or PASSIVE entities don't collide + * with other LITE or PASSIVE entities at all. The behavior for FIXED vs. + * FIXED collisions is undefined. + * + * @namespace Phaser.Physics.Impact.COLLIDES + */ module.exports = { + /** + * Never collides. + * + * @name Phaser.Physics.Impact.COLLIDES.NEVER + * @type {integer} + * @since 3.0.0 + */ NEVER: 0, + + /** + * Lite collision. + * + * @name Phaser.Physics.Impact.COLLIDES.LITE + * @type {integer} + * @since 3.0.0 + */ LITE: 1, + + /** + * Passive collision. + * + * @name Phaser.Physics.Impact.COLLIDES.PASSIVE + * @type {integer} + * @since 3.0.0 + */ PASSIVE: 2, + + /** + * Active collision. + * + * @name Phaser.Physics.Impact.COLLIDES.ACTIVE + * @type {integer} + * @since 3.0.0 + */ ACTIVE: 4, + + /** + * Fixed collision. + * + * @name Phaser.Physics.Impact.COLLIDES.FIXED + * @type {integer} + * @since 3.0.0 + */ FIXED: 8 }; diff --git a/src/physics/impact/SeperateX.js b/src/physics/impact/SeperateX.js index 286b5daab..0df8bd188 100644 --- a/src/physics/impact/SeperateX.js +++ b/src/physics/impact/SeperateX.js @@ -1,4 +1,14 @@ - +/** + * [description] + * + * @function Phaser.Physics.Impact.SeperateX + * @since 3.0.0 + * + * @param {Phaser.Physics.Impact.World} world - [description] + * @param {Phaser.Physics.Impact.Body} left - [description] + * @param {Phaser.Physics.Impact.Body} right - [description] + * @param {Phaser.Physics.Impact.Body} [weak] - [description] + */ var SeperateX = function (world, left, right, weak) { var nudge = left.pos.x + left.size.x - right.pos.x; diff --git a/src/physics/impact/SeperateY.js b/src/physics/impact/SeperateY.js index c5cd24659..1794e8fda 100644 --- a/src/physics/impact/SeperateY.js +++ b/src/physics/impact/SeperateY.js @@ -1,4 +1,14 @@ - +/** + * [description] + * + * @function Phaser.Physics.Impact.SeperateY + * @since 3.0.0 + * + * @param {Phaser.Physics.Impact.World} world - [description] + * @param {Phaser.Physics.Impact.Body} top - [description] + * @param {Phaser.Physics.Impact.Body} bottom - [description] + * @param {Phaser.Physics.Impact.Body} [weak] - [description] + */ var SeperateY = function (world, top, bottom, weak) { var nudge = (top.pos.y + top.size.y - bottom.pos.y); diff --git a/src/physics/impact/TYPE.js b/src/physics/impact/TYPE.js index 838c46af0..8b1e82ad2 100644 --- a/src/physics/impact/TYPE.js +++ b/src/physics/impact/TYPE.js @@ -1,16 +1,51 @@ -// Collision Types - Determine if and how entities collide with each other - -// In ACTIVE vs. LITE or FIXED vs. ANY collisions, only the "weak" entity moves, -// while the other one stays fixed. In ACTIVE vs. ACTIVE and ACTIVE vs. PASSIVE -// collisions, both entities are moved. LITE or PASSIVE entities don't collide -// with other LITE or PASSIVE entities at all. The behavior for FIXED vs. -// FIXED collisions is undefined. +/** + * Collision Types - Determine if and how entities collide with each other. + * + * In ACTIVE vs. LITE or FIXED vs. ANY collisions, only the "weak" entity moves, + * while the other one stays fixed. In ACTIVE vs. ACTIVE and ACTIVE vs. PASSIVE + * collisions, both entities are moved. LITE or PASSIVE entities don't collide + * with other LITE or PASSIVE entities at all. The behavior for FIXED vs. + * FIXED collisions is undefined. + * + * @namespace Phaser.Physics.Impact.TYPES + */ module.exports = { + /** + * Collides with nothing. + * + * @name Phaser.Physics.Impact.TYPES.NONE + * @type {integer} + * @since 3.0.0 + */ NONE: 0, + + /** + * Type A. Collides with Type B. + * + * @name Phaser.Physics.Impact.TYPES.A + * @type {integer} + * @since 3.0.0 + */ A: 1, + + /** + * Type B. Collides with Type A. + * + * @name Phaser.Physics.Impact.TYPES.B + * @type {integer} + * @since 3.0.0 + */ B: 2, + + /** + * Collides with both types A and B. + * + * @name Phaser.Physics.Impact.TYPES.BOTH + * @type {integer} + * @since 3.0.0 + */ BOTH: 3 }; diff --git a/src/physics/impact/index.js b/src/physics/impact/index.js index 4716a113c..c56ca4c0d 100644 --- a/src/physics/impact/index.js +++ b/src/physics/impact/index.js @@ -1,25 +1,27 @@ -// Phaser.Physics.Impact - -// An Impact.js compatible physics world, body and solver, for those who are used -// to the Impact way of defining and controlling physics bodies. Also works with -// the new Loader support for Weltmeister map data. -// -// World updated to run off the Phaser main loop. -// Body extended to support additional setter functions. -// -// To create the map data you'll need Weltmeister, which comes with Impact -// and can be purchased from http://impactjs.com -// -// My thanks to Dominic Szablewski for his permission to support Impact in Phaser. +/** + * An Impact.js compatible physics world, body and solver, for those who are used + * to the Impact way of defining and controlling physics bodies. Also works with + * the new Loader support for Weltmeister map data. + * + * World updated to run off the Phaser main loop. + * Body extended to support additional setter functions. + * + * To create the map data you'll need Weltmeister, which comes with Impact + * and can be purchased from http://impactjs.com + * + * My thanks to Dominic Szablewski for his permission to support Impact in Phaser. + * + * @namespace Phaser.Physics.Impact + */ module.exports = { Body: require('./Body'), - Body: require('./ImpactBody'), COLLIDES: require('./COLLIDES'), CollisionMap: require('./CollisionMap'), Factory: require('./Factory'), Image: require('./ImpactImage'), + ImpactBody: require('./ImpactBody'), ImpactPhysics: require('./ImpactPhysics'), Sprite: require('./ImpactSprite'), TYPE: require('./TYPE'), diff --git a/src/physics/index.js b/src/physics/index.js index d6f7b8d6b..b9eb384d1 100644 --- a/src/physics/index.js +++ b/src/physics/index.js @@ -6,7 +6,6 @@ module.exports = { Arcade: require('./arcade'), Impact: require('./impact'), - Matter: require('./matter-js'), - PolyDecomp: require('./poly-decomp') + Matter: require('./matter-js') }; diff --git a/src/physics/matter-js/index.js b/src/physics/matter-js/index.js index 81a72c899..3fb572f52 100644 --- a/src/physics/matter-js/index.js +++ b/src/physics/matter-js/index.js @@ -6,6 +6,7 @@ module.exports = { Image: require('./MatterImage'), Matter: require('./CustomMain'), MatterPhysics: require('./MatterPhysics'), + PolyDecomp: require('./poly-decomp'), Sprite: require('./MatterSprite'), TileBody: require('./MatterTileBody'), World: require('./World') diff --git a/src/physics/poly-decomp/index.js b/src/physics/matter-js/poly-decomp/index.js similarity index 100% rename from src/physics/poly-decomp/index.js rename to src/physics/matter-js/poly-decomp/index.js