Skip to content

Commit

Permalink
v0.7.1
Browse files Browse the repository at this point in the history
  • Loading branch information
schteppe committed Nov 21, 2015
1 parent 0aa83c6 commit d83c483
Show file tree
Hide file tree
Showing 109 changed files with 577 additions and 557 deletions.
97 changes: 61 additions & 36 deletions build/p2.js
Original file line number Diff line number Diff line change
Expand Up @@ -689,7 +689,7 @@ module.exports = {
},{"./Point":2,"./Polygon":3}],6:[function(_dereq_,module,exports){
module.exports={
"name": "p2",
"version": "0.7.0",
"version": "0.7.1",
"description": "A JavaScript 2D physics engine.",
"author": "Stefan Hedman <[email protected]> (http://steffe.se)",
"keywords": [
Expand Down Expand Up @@ -725,7 +725,7 @@ module.exports={
"grunt-contrib-concat": "^0.4.0"
},
"dependencies": {
"poly-decomp": "0.1.0"
"poly-decomp": "0.1.1"
}
}

Expand Down Expand Up @@ -5760,6 +5760,23 @@ ContactEquation.prototype.computeB = function(a,b,h){
return B;
};

var vi = vec2.create();
var vj = vec2.create();
var relVel = vec2.create();

/**
* Get the relative velocity along the normal vector.
* @return {number}
*/
ContactEquation.prototype.getVelocityAlongNormal = function(){

this.bodyA.getVelocityAtPoint(vi, this.contactPointA);
this.bodyB.getVelocityAtPoint(vj, this.contactPointB);

vec2.subtract(relVel, vi, vj);

return vec2.dot(this.normalA, relVel);
};
},{"../math/vec2":30,"./Equation":22}],22:[function(_dereq_,module,exports){
module.exports = Equation;

Expand Down Expand Up @@ -6433,52 +6450,55 @@ function ContactMaterial(materialA, materialB, options){
this.materialB = materialB;

/**
* Friction to use in the contact of these two materials
* Friction coefficient to use in the contact of these two materials. Friction = 0 will make the involved objects super slippery, and friction = 1 will make it much less slippery. A friction coefficient larger than 1 will allow for very large friction forces, which can be convenient for preventing car tires not slip on the ground.
* @property friction
* @type {Number}
* @default 0.3
*/
this.friction = typeof(options.friction) !== "undefined" ? Number(options.friction) : 0.3;
this.friction = typeof(options.friction) !== "undefined" ? Number(options.friction) : 0.3;

/**
* Restitution to use in the contact of these two materials
* Restitution, or "bounciness" to use in the contact of these two materials. A restitution of 0 will make no bounce, while restitution=1 will approximately bounce back with the same velocity the object came with.
* @property restitution
* @type {Number}
* @default 0
*/
this.restitution = typeof(options.restitution) !== "undefined" ? Number(options.restitution) : 0.0;
this.restitution = typeof(options.restitution) !== "undefined" ? Number(options.restitution) : 0;

/**
* Stiffness of the resulting ContactEquation that this ContactMaterial generate
* Hardness of the contact. Less stiffness will make the objects penetrate more, and will make the contact act more like a spring than a contact force. Default value is {{#crossLink "Equation/DEFAULT_STIFFNESS:property"}}Equation.DEFAULT_STIFFNESS{{/crossLink}}.
* @property stiffness
* @type {Number}
*/
this.stiffness = typeof(options.stiffness) !== "undefined" ? Number(options.stiffness) : Equation.DEFAULT_STIFFNESS;
this.stiffness = typeof(options.stiffness) !== "undefined" ? Number(options.stiffness) : Equation.DEFAULT_STIFFNESS;

/**
* Relaxation of the resulting ContactEquation that this ContactMaterial generate
* Relaxation of the resulting ContactEquation that this ContactMaterial generate. Default value is {{#crossLink "Equation/DEFAULT_RELAXATION:property"}}Equation.DEFAULT_RELAXATION{{/crossLink}}.
* @property relaxation
* @type {Number}
*/
this.relaxation = typeof(options.relaxation) !== "undefined" ? Number(options.relaxation) : Equation.DEFAULT_RELAXATION;
this.relaxation = typeof(options.relaxation) !== "undefined" ? Number(options.relaxation) : Equation.DEFAULT_RELAXATION;

/**
* Stiffness of the resulting FrictionEquation that this ContactMaterial generate
* Stiffness of the resulting friction force. For most cases, the value of this property should be a large number. I cannot think of any case where you would want less frictionStiffness. Default value is {{#crossLink "Equation/DEFAULT_STIFFNESS:property"}}Equation.DEFAULT_STIFFNESS{{/crossLink}}.
* @property frictionStiffness
* @type {Number}
*/
this.frictionStiffness = typeof(options.frictionStiffness) !== "undefined" ? Number(options.frictionStiffness) : Equation.DEFAULT_STIFFNESS;
this.frictionStiffness = typeof(options.frictionStiffness) !== "undefined" ? Number(options.frictionStiffness) : Equation.DEFAULT_STIFFNESS;

/**
* Relaxation of the resulting FrictionEquation that this ContactMaterial generate
* Relaxation of the resulting friction force. The default value should be good for most simulations. Default value is {{#crossLink "Equation/DEFAULT_RELAXATION:property"}}Equation.DEFAULT_RELAXATION{{/crossLink}}.
* @property frictionRelaxation
* @type {Number}
*/
this.frictionRelaxation = typeof(options.frictionRelaxation) !== "undefined" ? Number(options.frictionRelaxation) : Equation.DEFAULT_RELAXATION;
this.frictionRelaxation = typeof(options.frictionRelaxation) !== "undefined" ? Number(options.frictionRelaxation) : Equation.DEFAULT_RELAXATION;

/**
* 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.
* @property {Number} surfaceVelocity
* @default 0
*/
this.surfaceVelocity = typeof(options.surfaceVelocity) !== "undefined" ? Number(options.surfaceVelocity) : 0;
this.surfaceVelocity = typeof(options.surfaceVelocity) !== "undefined" ? Number(options.surfaceVelocity) : 0;

/**
* Offset to be set on ContactEquations. A positive value will make the bodies penetrate more into each other. Can be useful in scenes where contacts need to be more persistent, for example when stacking. Aka "cure for nervous contacts".
Expand Down Expand Up @@ -8224,7 +8244,7 @@ Body.prototype.applyForce = function(force, relativePoint){
* Apply force to a body-local point.
* @method applyForceLocal
* @param {Array} localForce The force vector to add, oriented in local body space.
* @param {Array} localPoint A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be excerted on the center of mass.
* @param {Array} [localPoint] A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be excerted on the center of mass.
*/
var Body_applyForce_forceWorld = vec2.create();
var Body_applyForce_pointWorld = vec2.create();
Expand Down Expand Up @@ -10619,42 +10639,42 @@ Plane.prototype.updateBoundingRadius = function(){
Plane.prototype.computeAABB = function(out, position, angle){
var a = angle % (2 * Math.PI);
var set = vec2.set;
var max = Number.MAX_VALUE;
var max = 1e7;
var lowerBound = out.lowerBound;
var upperBound = out.upperBound;

// Set max bounds
set(lowerBound, -max, -max);
set(upperBound, max, max);

if(a === 0){
// y goes from -inf to 0
set(lowerBound, -max, -max);
set(upperBound, max, 0);
upperBound[1] = 0;
// set(lowerBound, -max, -max);
// set(upperBound, max, 0);

} else if(a === Math.PI / 2){

// x goes from 0 to inf
set(lowerBound, 0, -max);
set(upperBound, max, max);
lowerBound[0] = 0;
// set(lowerBound, 0, -max);
// set(upperBound, max, max);

} else if(a === Math.PI){

// y goes from 0 to inf
set(lowerBound, -max, 0);
set(upperBound, max, max);
lowerBound[1] = 0;
// set(lowerBound, -max, 0);
// set(upperBound, max, max);

} else if(a === 3*Math.PI/2){

// x goes from -inf to 0
set(lowerBound, -max, -max);
set(upperBound, 0, max);

} else {
upperBound[0] = 0;
// set(lowerBound, -max, -max);
// set(upperBound, 0, max);

// Set max bounds
set(lowerBound, -max, -max);
set(upperBound, max, max);
}

vec2.add(lowerBound, lowerBound, position);
vec2.add(upperBound, upperBound, position);
};

Plane.prototype.updateArea = function(){
Expand Down Expand Up @@ -11000,16 +11020,20 @@ function GSSolver(options){
* Set to true to set all right hand side terms to zero when solving. Can be handy for a few applications.
* @property useZeroRHS
* @type {Boolean}
* @todo Remove, not used
*/
this.useZeroRHS = false;

/**
* Number of solver iterations that are done to approximate normal forces. When these iterations are done, friction force will be computed from the contact normal forces. These friction forces will override any other friction forces set from the World for example.
* The solver will use less iterations if the solution is below the .tolerance.
* Number of solver iterations that are used to approximate normal forces used for friction (F_friction = mu * F_normal). These friction forces will override any other friction forces that are set. If you set frictionIterations = 0, then this feature will be disabled.
*
* Use only frictionIterations > 0 if the approximated normal force (F_normal = mass * gravity) is not good enough. Examples of where it can happen is in space games where gravity is zero, or in tall stacks where the normal force is large at bottom but small at top.
*
* @property frictionIterations
* @type {Number}
* @default 0
*/
this.frictionIterations = 0;
this.frictionIterations = options.frictionIterations !== undefined ? 0 : options.frictionIterations;

/**
* The number of iterations that were made during the last solve. If .tolerance is zero, this value will always be equal to .iterations, but if .tolerance is larger than zero, and the solver can quit early, then this number will be somewhere between 1 and .iterations.
Expand Down Expand Up @@ -13450,6 +13474,7 @@ var hitTest_tmp1 = vec2.create(),
* @return {Array} Array of bodies that overlap the point
* @todo Should use an api similar to the raycast function
* @todo Should probably implement a .containsPoint method for all shapes. Would be more efficient
* @todo Should use the broadphase
*/
World.prototype.hitTest = function(worldPoint,bodies,precision){
precision = precision || 0;
Expand Down
8 changes: 4 additions & 4 deletions build/p2.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/classes/AABB.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<h1><img src="../assets/css/logo.png" title="p2.js" width="117" height="52"></h1>
</div>
<div class="yui3-u-1-4 version">
<em>API Docs for: 0.7.0</em>
<em>API Docs for: 0.7.1</em>
</div>
</div>
<div id="bd" class="yui3-g">
Expand Down
2 changes: 1 addition & 1 deletion docs/classes/AngleLockEquation.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<h1><img src="../assets/css/logo.png" title="p2.js" width="117" height="52"></h1>
</div>
<div class="yui3-u-1-4 version">
<em>API Docs for: 0.7.0</em>
<em>API Docs for: 0.7.1</em>
</div>
</div>
<div id="bd" class="yui3-g">
Expand Down
Loading

0 comments on commit d83c483

Please sign in to comment.