From 15be3f86f3ebd6cc17ceea9c225bd5fa2405eeaa Mon Sep 17 00:00:00 2001 From: photonstorm Date: Tue, 18 Feb 2014 15:28:42 +0000 Subject: [PATCH] Added ContactMaterial support. --- Gruntfile.js | 1 + build/config.php | 1 + src/physics/ContactMaterial.js | 64 ++++++++++++++++++++++++++++++++++ src/physics/Material.js | 21 +++++++++++ 4 files changed, 87 insertions(+) create mode 100644 src/physics/ContactMaterial.js diff --git a/Gruntfile.js b/Gruntfile.js index 1843abb7..58006c80 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -139,6 +139,7 @@ module.exports = function (grunt) { 'src/physics/Body.js', 'src/physics/Spring.js', 'src/physics/Material.js', + 'src/physics/ContactMaterial.js', 'src/particles/Particles.js', 'src/particles/arcade/ArcadeParticles.js', diff --git a/build/config.php b/build/config.php index dd2912da..3940453f 100644 --- a/build/config.php +++ b/build/config.php @@ -185,6 +185,7 @@ + diff --git a/src/physics/ContactMaterial.js b/src/physics/ContactMaterial.js new file mode 100644 index 00000000..486f8558 --- /dev/null +++ b/src/physics/ContactMaterial.js @@ -0,0 +1,64 @@ +/** +* @author Richard Davey +* @copyright 2014 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* Defines a physics material +* +* @class Phaser.Physics.ContactMaterial +* @classdesc Physics ContactMaterial Constructor +* @constructor +* @param {Phaser.Physics.Material} materialA +* @param {Phaser.Physics.Material} materialB +* @param {object} [options] +*/ +Phaser.Physics.ContactMaterial = function (materialA, materialB, options) { + + /** + * @property {number} id - The contact material identifier. + */ + + /** + * @property {Phaser.Physics.Material} materialA - First material participating in the contact material. + */ + + /** + * @property {Phaser.Physics.Material} materialB - First second participating in the contact material. + */ + + /** + * @property {number} [friction=0.3] - Friction to use in the contact of these two materials. + */ + + /** + * @property {number} [restitution=0.0] - Restitution to use in the contact of these two materials. + */ + + /** + * @property {number} [stiffness=1e7] - Stiffness of the resulting ContactEquation that this ContactMaterial generate. + */ + + /** + * @property {number} [relaxation=3] - Relaxation of the resulting ContactEquation that this ContactMaterial generate. + */ + + /** + * @property {number} [frictionStiffness=1e7] - Stiffness of the resulting FrictionEquation that this ContactMaterial generate. + */ + + /** + * @property {number} [frictionRelaxation=3] - Relaxation of the resulting FrictionEquation that this ContactMaterial generate. + */ + + /** + * @property {number} [surfaceVelocity=0] - Will add surface velocity to this material. If bodyA rests on top if bodyB, and the surface velocity is positive, bodyA will slide to the right. + */ + + p2.ContactMaterial.call(this, materialA, materialB, options); + +} + +Phaser.Physics.ContactMaterial.prototype = Object.create(p2.ContactMaterial.prototype); +Phaser.Physics.ContactMaterial.prototype.constructor = Phaser.Physics.ContactMaterial; diff --git a/src/physics/Material.js b/src/physics/Material.js index e69de29b..6560e7b2 100644 --- a/src/physics/Material.js +++ b/src/physics/Material.js @@ -0,0 +1,21 @@ +/** +* @author Richard Davey +* @copyright 2014 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* \o/ ~ "Because I'm a Material girl" +* +* @class Phaser.Physics.Material +* @classdesc Physics Material Constructor +* @constructor +*/ +Phaser.Physics.Material = function () { + + p2.Material.call(this); + +} + +Phaser.Physics.Material.prototype = Object.create(p2.Material.prototype); +Phaser.Physics.Material.prototype.constructor = Phaser.Physics.Material;