mirror of
https://github.com/logsol/chuck.js.git
synced 2026-05-11 10:37:34 +00:00
Combines GLOBALS and Chuck namespace into App. Also increases number of stack trace steps to be printed when an error occurs. I experimented with the "replace" plugin from require.js, which works but it would mean that our context switchable "import-statements" would look like the example below, which I decided against at least for now, just because of the looks. The downside of not using the plugin is that we cannot use the "use strict" statement in the channel.js entry script and also cannot put a "var" in front of App variable there. For example: "replace!Game/:AppContext/Physics/Engine", Instead of: "Game/" + App.context + "/Physics/Engine", Fixes #86
567 lines
No EOL
19 KiB
JavaScript
567 lines
No EOL
19 KiB
JavaScript
define([
|
|
"Game/" + App.context + "/GameObjects/Item",
|
|
"Lib/Vendor/Box2D",
|
|
"Game/Config/Settings"
|
|
],
|
|
|
|
function (Parent, Box2D, Settings) {
|
|
|
|
"use strict";
|
|
|
|
function RagDoll(physicsEngine, uid, options) {
|
|
Parent.call(this, physicsEngine, uid, options);
|
|
this.body.GetWorld().DestroyBody(this.body);
|
|
this.limbs = {};
|
|
this.initBodies();
|
|
}
|
|
|
|
RagDoll.prototype = Object.create(Parent.prototype);
|
|
|
|
RagDoll.prototype.initBodies = function() {
|
|
|
|
var world = this.body.GetWorld();
|
|
|
|
var bodies = [];
|
|
var joints = [];
|
|
{
|
|
var bd = new Box2D.Dynamics.b2BodyDef();
|
|
bd.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
|
|
bd.position.Set(-1.917114257812500e-01, 1.433728694915771e+00);
|
|
bodies[0] = world.CreateBody(bd);
|
|
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = Settings.PLAYER_FRICTION;
|
|
fd.restitution = Settings.PLAYER_RESTITUTION;
|
|
fd.density = Settings.PLAYER_DENSITY;
|
|
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2PolygonShape();
|
|
var vs = [];
|
|
vs[0] = new Box2D.Common.Math.b2Vec2(6.299880146980286e-02, -2.545155882835388e-01);
|
|
vs[1] = new Box2D.Common.Math.b2Vec2(6.299880146980286e-02, 2.545149326324463e-01);
|
|
vs[2] = new Box2D.Common.Math.b2Vec2(-6.299890577793121e-02, 2.545149326324463e-01);
|
|
vs[3] = new Box2D.Common.Math.b2Vec2(-6.299890577793121e-02, -2.545155882835388e-01);
|
|
shape.SetAsArray(vs, 4);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[0].CreateFixture(fd);
|
|
}
|
|
}
|
|
{
|
|
var bd = new Box2D.Dynamics.b2BodyDef();
|
|
bd.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
|
|
bd.position.Set(-6.397294998168945e-02, 1.267420768737793e+00);
|
|
bodies[1] = world.CreateBody(bd);
|
|
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = Settings.PLAYER_FRICTION;
|
|
fd.restitution = Settings.PLAYER_RESTITUTION;
|
|
fd.density = Settings.PLAYER_DENSITY;
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2PolygonShape();
|
|
var vs = [];
|
|
vs[0] = new Box2D.Common.Math.b2Vec2(1.883362084627151e-01, -4.305148720741272e-01);
|
|
vs[1] = new Box2D.Common.Math.b2Vec2(1.846363544464111e-01, 5.393795371055603e-01);
|
|
vs[2] = new Box2D.Common.Math.b2Vec2(1.850083470344543e-03, 5.393795371055603e-01);
|
|
vs[3] = new Box2D.Common.Math.b2Vec2(-1.883361339569092e-01, 4.209862351417542e-01);
|
|
vs[4] = new Box2D.Common.Math.b2Vec2(-1.883361339569092e-01, -4.607573151588440e-01);
|
|
vs[5] = new Box2D.Common.Math.b2Vec2(1.600667834281921e-03, -4.952520132064819e-01);
|
|
shape.SetAsArray(vs, 6);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[1].CreateFixture(fd);
|
|
}
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = Settings.PLAYER_FRICTION;
|
|
fd.restitution = Settings.PLAYER_RESTITUTION;
|
|
fd.density = Settings.PLAYER_DENSITY;
|
|
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2PolygonShape();
|
|
var vs = [];
|
|
vs[0] = new Box2D.Common.Math.b2Vec2(1.840525716543198e-01, 4.875739216804504e-01);
|
|
vs[1] = new Box2D.Common.Math.b2Vec2(1.840525716543198e-01, 6.762337088584900e-01);
|
|
vs[2] = new Box2D.Common.Math.b2Vec2(-4.607129842042923e-03, 6.762337088584900e-01);
|
|
vs[3] = new Box2D.Common.Math.b2Vec2(-4.607129842042923e-03, 4.875739216804504e-01);
|
|
shape.SetAsArray(vs, 4);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[1].CreateFixture(fd);
|
|
}
|
|
}
|
|
{
|
|
var bd = new Box2D.Dynamics.b2BodyDef();
|
|
bd.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
|
|
bd.position.Set(4.118728637695312e-02, 2.199305295944214e+00);
|
|
bodies[2] = world.CreateBody(bd);
|
|
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = 2.000000029802322e-01;
|
|
fd.restitution = 0.000000000000000e+00;
|
|
fd.density = 2.204959988594055e-01;
|
|
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2CircleShape();
|
|
shape.m_radius = 3.009769916534424e-01;
|
|
shape.m_p.Set(-8.219080045819283e-03, 4.109379835426807e-03);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[2].CreateFixture(fd);
|
|
}
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = 2.000000029802322e-01;
|
|
fd.restitution = 0.000000000000000e+00;
|
|
fd.density = 2.204959988594055e-01;
|
|
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2CircleShape();
|
|
shape.m_radius = 2.723909914493561e-01;
|
|
shape.m_p.Set(-3.647049888968468e-02, -1.517499983310699e-01);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[2].CreateFixture(fd);
|
|
}
|
|
}
|
|
{
|
|
var bd = new Box2D.Dynamics.b2BodyDef();
|
|
bd.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
|
|
bd.position.Set(1.235442161560059e-01, 1.142371892929077e+00);
|
|
bodies[3] = world.CreateBody(bd);
|
|
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = Settings.PLAYER_FRICTION;
|
|
fd.restitution = Settings.PLAYER_RESTITUTION;
|
|
fd.density = Settings.PLAYER_DENSITY;
|
|
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2PolygonShape();
|
|
var vs = [];
|
|
vs[0] = new Box2D.Common.Math.b2Vec2(6.299892067909241e-02, -1.556134223937988e-01);
|
|
vs[1] = new Box2D.Common.Math.b2Vec2(6.299892067909241e-02, 1.556134223937988e-01);
|
|
vs[2] = new Box2D.Common.Math.b2Vec2(-6.299898028373718e-02, 1.556134223937988e-01);
|
|
vs[3] = new Box2D.Common.Math.b2Vec2(-6.299898028373718e-02, -1.556134223937988e-01);
|
|
shape.SetAsArray(vs, 4);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[3].CreateFixture(fd);
|
|
}
|
|
}
|
|
{
|
|
var bd = new Box2D.Dynamics.b2BodyDef();
|
|
bd.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
|
|
bd.position.Set(-9.663248062133789e-02, 3.554300665855408e-01);
|
|
|
|
bodies[4] = world.CreateBody(bd);
|
|
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = Settings.PLAYER_FRICTION;
|
|
fd.restitution = Settings.PLAYER_RESTITUTION;
|
|
fd.density = Settings.PLAYER_DENSITY;
|
|
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2PolygonShape();
|
|
var vs = [];
|
|
vs[0] = new Box2D.Common.Math.b2Vec2(1.550966501235962e-01, -1.253567039966583e-01);
|
|
vs[1] = new Box2D.Common.Math.b2Vec2(1.550966501235962e-01, -6.225190684199333e-02);
|
|
vs[2] = new Box2D.Common.Math.b2Vec2(-9.268096834421158e-02, -6.225190684199333e-02);
|
|
vs[3] = new Box2D.Common.Math.b2Vec2(-9.268096834421158e-02, -1.253567039966583e-01);
|
|
shape.SetAsArray(vs, 4);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[4].CreateFixture(fd);
|
|
}
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = Settings.PLAYER_FRICTION;
|
|
fd.restitution = Settings.PLAYER_RESTITUTION;
|
|
fd.density = Settings.PLAYER_DENSITY;
|
|
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2PolygonShape();
|
|
var vs = [];
|
|
vs[0] = new Box2D.Common.Math.b2Vec2(9.449840337038040e-02, -1.247676759958267e-01);
|
|
vs[1] = new Box2D.Common.Math.b2Vec2(9.449840337038040e-02, 1.715210527181625e-01);
|
|
vs[2] = new Box2D.Common.Math.b2Vec2(-9.449829906225204e-02, 1.715210527181625e-01);
|
|
vs[3] = new Box2D.Common.Math.b2Vec2(-9.449829906225204e-02, -1.247676759958267e-01);
|
|
shape.SetAsArray(vs, 4);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[4].CreateFixture(fd);
|
|
}
|
|
}
|
|
{
|
|
var bd = new Box2D.Dynamics.b2BodyDef();
|
|
bd.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
|
|
bd.position.Set(-1.917138099670410e-01, 1.142371892929077e+00);
|
|
|
|
bodies[5] = world.CreateBody(bd);
|
|
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = Settings.PLAYER_FRICTION;
|
|
fd.restitution = Settings.PLAYER_RESTITUTION;
|
|
fd.density = Settings.PLAYER_DENSITY;
|
|
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2PolygonShape();
|
|
var vs = [];
|
|
vs[0] = new Box2D.Common.Math.b2Vec2(6.299891322851181e-02, -1.556134223937988e-01);
|
|
vs[1] = new Box2D.Common.Math.b2Vec2(6.299891322851181e-02, 1.556134223937988e-01);
|
|
vs[2] = new Box2D.Common.Math.b2Vec2(-6.299878656864166e-02, 1.556134223937988e-01);
|
|
vs[3] = new Box2D.Common.Math.b2Vec2(-6.299878656864166e-02, -1.556134223937988e-01);
|
|
shape.SetAsArray(vs, 4);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[5].CreateFixture(fd);
|
|
}
|
|
}
|
|
{
|
|
var bd = new Box2D.Dynamics.b2BodyDef();
|
|
bd.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
|
|
bd.position.Set(1.235442161560059e-01, 1.433728694915771e+00);
|
|
|
|
bodies[6] = world.CreateBody(bd);
|
|
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = Settings.PLAYER_FRICTION;
|
|
fd.restitution = Settings.PLAYER_RESTITUTION;
|
|
fd.density = Settings.PLAYER_DENSITY;
|
|
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2PolygonShape();
|
|
var vs = [];
|
|
vs[0] = new Box2D.Common.Math.b2Vec2(6.299892067909241e-02, -2.545155882835388e-01);
|
|
vs[1] = new Box2D.Common.Math.b2Vec2(6.299892067909241e-02, 2.545149326324463e-01);
|
|
vs[2] = new Box2D.Common.Math.b2Vec2(-6.299898028373718e-02, 2.545149326324463e-01);
|
|
vs[3] = new Box2D.Common.Math.b2Vec2(-6.299898028373718e-02, -2.545155882835388e-01);
|
|
shape.SetAsArray(vs, 4);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[6].CreateFixture(fd);
|
|
}
|
|
}
|
|
{
|
|
var bd = new Box2D.Dynamics.b2BodyDef();
|
|
bd.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
|
|
bd.position.Set(2.897095680236816e-02, 6.702435612678528e-01);
|
|
bodies[7] = world.CreateBody(bd);
|
|
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = Settings.PLAYER_FRICTION;
|
|
fd.restitution = Settings.PLAYER_RESTITUTION;
|
|
fd.density = Settings.PLAYER_DENSITY;
|
|
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2PolygonShape();
|
|
var vs = [];
|
|
vs[0] = new Box2D.Common.Math.b2Vec2(9.449830651283264e-02, -2.537839412689209e-01);
|
|
vs[1] = new Box2D.Common.Math.b2Vec2(9.449830651283264e-02, 2.537844777107239e-01);
|
|
vs[2] = new Box2D.Common.Math.b2Vec2(-9.449817240238190e-02, 2.537844777107239e-01);
|
|
vs[3] = new Box2D.Common.Math.b2Vec2(-9.449817240238190e-02, -2.537839412689209e-01);
|
|
shape.SetAsArray(vs, 4);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[7].CreateFixture(fd);
|
|
}
|
|
}
|
|
{
|
|
var bd = new Box2D.Dynamics.b2BodyDef();
|
|
bd.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
|
|
bd.position.Set(-9.663248062133789e-02, 6.702435612678528e-01);
|
|
|
|
bodies[8] = world.CreateBody(bd);
|
|
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = Settings.PLAYER_FRICTION;
|
|
fd.restitution = Settings.PLAYER_RESTITUTION;
|
|
fd.density = Settings.PLAYER_DENSITY;
|
|
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2PolygonShape();
|
|
var vs = [];
|
|
vs[0] = new Box2D.Common.Math.b2Vec2(9.449842572212219e-02, -2.537839412689209e-01);
|
|
vs[1] = new Box2D.Common.Math.b2Vec2(9.449842572212219e-02, 2.537844777107239e-01);
|
|
vs[2] = new Box2D.Common.Math.b2Vec2(-9.449826925992966e-02, 2.537844777107239e-01);
|
|
vs[3] = new Box2D.Common.Math.b2Vec2(-9.449826925992966e-02, -2.537839412689209e-01);
|
|
shape.SetAsArray(vs, 4);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[8].CreateFixture(fd);
|
|
}
|
|
}
|
|
{
|
|
var bd = new Box2D.Dynamics.b2BodyDef();
|
|
bd.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
|
|
bd.position.Set(2.897095680236816e-02, 3.554300665855408e-01);
|
|
|
|
bodies[9] = world.CreateBody(bd);
|
|
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = Settings.PLAYER_FRICTION;
|
|
fd.restitution = Settings.PLAYER_RESTITUTION;
|
|
fd.density = Settings.PLAYER_DENSITY;
|
|
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2PolygonShape();
|
|
var vs = [];
|
|
vs[0] = new Box2D.Common.Math.b2Vec2(1.550965905189514e-01, -1.253567039966583e-01);
|
|
vs[1] = new Box2D.Common.Math.b2Vec2(1.550965905189514e-01, -6.225190684199333e-02);
|
|
vs[2] = new Box2D.Common.Math.b2Vec2(-9.268099069595337e-02, -6.225190684199333e-02);
|
|
vs[3] = new Box2D.Common.Math.b2Vec2(-9.268099069595337e-02, -1.253567039966583e-01);
|
|
shape.SetAsArray(vs, 4);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[9].CreateFixture(fd);
|
|
}
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = Settings.PLAYER_FRICTION;
|
|
fd.restitution = Settings.PLAYER_RESTITUTION;
|
|
fd.density = Settings.PLAYER_DENSITY;
|
|
|
|
fd.filter.groupIndex = -1;
|
|
var shape = new Box2D.Collision.Shapes.b2PolygonShape();
|
|
var vs = [];
|
|
vs[0] = new Box2D.Common.Math.b2Vec2(9.449830651283264e-02, -1.247680261731148e-01);
|
|
vs[1] = new Box2D.Common.Math.b2Vec2(9.449830651283264e-02, 1.713046580553055e-01);
|
|
vs[2] = new Box2D.Common.Math.b2Vec2(-9.449817240238190e-02, 1.713046580553055e-01);
|
|
vs[3] = new Box2D.Common.Math.b2Vec2(-9.449817240238190e-02, -1.247680261731148e-01);
|
|
shape.SetAsArray(vs, 4);
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[9].CreateFixture(fd);
|
|
}
|
|
}
|
|
/*{
|
|
|
|
ground body
|
|
|
|
var bd = new Box2D.Dynamics.b2BodyDef();
|
|
bd.type = b2BodyType(0);
|
|
bd.position.Set(3.118395805358887e-03, -6.553649902343750e-03);
|
|
|
|
bodies[10] = world.CreateBody(bd);
|
|
|
|
{
|
|
var fd = new Box2D.Dynamics.b2FixtureDef();
|
|
fd.friction = Settings.PLAYER_FRICTION;
|
|
fd.restitution = Settings.PLAYER_RESTITUTION;
|
|
fd.density = Settings.PLAYER_DENSITY;
|
|
|
|
fd.filter.groupIndex = int16(0);
|
|
b2ChainShape shape;
|
|
b2Vec2 vs[2];
|
|
vs[0] = new Box2D.Common.Math.b2Vec2(-4.179394245147705e+00, 0.000000000000000e+00);
|
|
vs[1] = new Box2D.Common.Math.b2Vec2(4.179394245147705e+00, 0.000000000000000e+00);
|
|
shape.CreateChain(vs, 2);
|
|
shape.m_prevVertex.Set(-1.998532295227051e+00, -2.391039296991059e-23);
|
|
shape.m_nextVertex.Set(4.949933242915726e-38, 3.363116314379561e-44);
|
|
shape.m_hasPrevVertex = false;
|
|
shape.m_hasNextVertex = false;
|
|
|
|
fd.shape = shape;
|
|
|
|
bodies[10].CreateFixture(fd);
|
|
}
|
|
}*/
|
|
{
|
|
var jd = new Box2D.Dynamics.Joints.b2RevoluteJointDef();
|
|
jd.bodyA = bodies[1];
|
|
jd.bodyB = bodies[8];
|
|
jd.collideConnected = false;
|
|
jd.localAnchorA.Set(-9.128235280513763e-02, -3.880688548088074e-01);
|
|
jd.localAnchorB.Set(-6.031601130962372e-02, 2.092975974082947e-01);
|
|
jd.referenceAngle = 0.000000000000000e+00;
|
|
jd.enableLimit = true;
|
|
jd.lowerAngle = -6.981316804885864e-01;
|
|
jd.upperAngle = 1.919862151145935e+00;
|
|
jd.enableMotor = false;
|
|
jd.motorSpeed = 0.000000000000000e+00;
|
|
jd.maxMotorTorque = 1.000000000000000e+00;
|
|
joints[0] = world.CreateJoint(jd);
|
|
}
|
|
{
|
|
var jd = new Box2D.Dynamics.Joints.b2RevoluteJointDef();
|
|
jd.bodyA = bodies[1];
|
|
jd.bodyB = bodies[7];
|
|
jd.collideConnected = false;
|
|
jd.localAnchorA.Set(1.498610228300095e-01, -3.952181935310364e-01);
|
|
jd.localAnchorB.Set(5.541206151247025e-02, 2.019590735435486e-01);
|
|
jd.referenceAngle = 0.000000000000000e+00;
|
|
jd.enableLimit = true;
|
|
jd.lowerAngle = -6.981316804885864e-01;
|
|
jd.upperAngle = 1.919862151145935e+00;
|
|
jd.enableMotor = false;
|
|
jd.motorSpeed = 0.000000000000000e+00;
|
|
jd.maxMotorTorque = 1.000000000000000e+00;
|
|
joints[1] = world.CreateJoint(jd);
|
|
}
|
|
{
|
|
var jd = new Box2D.Dynamics.Joints.b2RevoluteJointDef();
|
|
jd.bodyA = bodies[1];
|
|
jd.bodyB = bodies[6];
|
|
jd.collideConnected = false;
|
|
jd.localAnchorA.Set(1.874177008867264e-01, 3.626269102096558e-01);
|
|
jd.localAnchorB.Set(-1.000612974166870e-04, 1.963189840316772e-01);
|
|
jd.referenceAngle = 0.000000000000000e+00;
|
|
jd.enableLimit = false;
|
|
jd.lowerAngle = -2.268928050994873e+00;
|
|
jd.upperAngle = 3.141592741012573e+00;
|
|
jd.enableMotor = false;
|
|
jd.motorSpeed = 0.000000000000000e+00;
|
|
jd.maxMotorTorque = 1.000000000000000e+00;
|
|
joints[2] = world.CreateJoint(jd);
|
|
}
|
|
{
|
|
var jd = new Box2D.Dynamics.Joints.b2RevoluteJointDef();
|
|
jd.bodyA = bodies[1];
|
|
jd.bodyB = bodies[0];
|
|
jd.collideConnected = false;
|
|
jd.localAnchorA.Set(-1.277616322040558e-01, 3.649693727493286e-01);
|
|
jd.localAnchorB.Set(-2.339482307434082e-05, 1.986622810363770e-01);
|
|
jd.referenceAngle = 0.000000000000000e+00;
|
|
jd.enableLimit = false;
|
|
jd.lowerAngle = -2.268928050994873e+00;
|
|
jd.upperAngle = 3.141592741012573e+00;
|
|
jd.enableMotor = false;
|
|
jd.motorSpeed = 0.000000000000000e+00;
|
|
jd.maxMotorTorque = 1.000000000000000e+00;
|
|
joints[3] = world.CreateJoint(jd);
|
|
}
|
|
{
|
|
var jd = new Box2D.Dynamics.Joints.b2RevoluteJointDef();
|
|
jd.bodyA = bodies[8];
|
|
jd.bodyB = bodies[4];
|
|
jd.collideConnected = false;
|
|
jd.localAnchorA.Set(-1.047469675540924e-03, -1.993342936038971e-01);
|
|
jd.localAnchorB.Set(-1.047216355800629e-03, 1.156357824802399e-01);
|
|
jd.referenceAngle = 0.000000000000000e+00;
|
|
jd.enableLimit = true;
|
|
jd.lowerAngle = -2.268928050994873e+00;
|
|
jd.upperAngle = 0.000000000000000e+00;
|
|
jd.enableMotor = false;
|
|
jd.motorSpeed = 0.000000000000000e+00;
|
|
jd.maxMotorTorque = 1.000000000000000e+00;
|
|
joints[4] = world.CreateJoint(jd);
|
|
}
|
|
{
|
|
var jd = new Box2D.Dynamics.Joints.b2RevoluteJointDef();
|
|
jd.bodyA = bodies[0];
|
|
jd.bodyB = bodies[5];
|
|
jd.collideConnected = false;
|
|
jd.localAnchorA.Set(1.148343086242676e-03, -1.961904764175415e-01);
|
|
jd.localAnchorB.Set(1.148715615272522e-03, 9.516614675521851e-02);
|
|
jd.referenceAngle = 0.000000000000000e+00;
|
|
jd.enableLimit = true;
|
|
jd.lowerAngle = 0.000000000000000e+00;
|
|
jd.upperAngle = 1.919862151145935e+00;
|
|
jd.enableMotor = false;
|
|
jd.motorSpeed = 0.000000000000000e+00;
|
|
jd.maxMotorTorque = 1.000000000000000e+00;
|
|
joints[5] = world.CreateJoint(jd);
|
|
}
|
|
{
|
|
var jd = new Box2D.Dynamics.Joints.b2RevoluteJointDef();
|
|
jd.bodyA = bodies[3];
|
|
jd.bodyB = bodies[6];
|
|
jd.collideConnected = false;
|
|
jd.localAnchorA.Set(4.750192165374756e-04, 9.541386365890503e-02);
|
|
jd.localAnchorB.Set(4.747509956359863e-04, -1.959429979324341e-01);
|
|
jd.referenceAngle = 0.000000000000000e+00;
|
|
jd.enableLimit = true;
|
|
jd.lowerAngle = 0.000000000000000e+00;
|
|
jd.upperAngle = 1.919862151145935e+00;
|
|
jd.enableMotor = false;
|
|
jd.motorSpeed = 0.000000000000000e+00;
|
|
jd.maxMotorTorque = 1.000000000000000e+00;
|
|
joints[6] = world.CreateJoint(jd);
|
|
}
|
|
{
|
|
var jd = new Box2D.Dynamics.Joints.b2RevoluteJointDef();
|
|
jd.bodyA = bodies[7];
|
|
jd.bodyB = bodies[9];
|
|
jd.collideConnected = false;
|
|
jd.localAnchorA.Set(2.657793462276459e-03, -2.022806107997894e-01);
|
|
jd.localAnchorB.Set(2.657927572727203e-03, 1.125320196151733e-01);
|
|
jd.referenceAngle = 0.000000000000000e+00;
|
|
jd.enableLimit = true;
|
|
jd.lowerAngle = -2.268928050994873e+00;
|
|
jd.upperAngle = 0.000000000000000e+00;
|
|
jd.enableMotor = false;
|
|
jd.motorSpeed = 0.000000000000000e+00;
|
|
jd.maxMotorTorque = 1.000000000000000e+00;
|
|
joints[7] = world.CreateJoint(jd);
|
|
}
|
|
{
|
|
var jd = new Box2D.Dynamics.Joints.b2RevoluteJointDef();
|
|
jd.bodyA = bodies[1];
|
|
jd.bodyB = bodies[2];
|
|
jd.collideConnected = false;
|
|
jd.localAnchorA.Set(8.169807493686676e-02, 5.554057359695435e-01);
|
|
jd.localAnchorB.Set(-2.346399985253811e-02, -3.764809966087341e-01);
|
|
jd.referenceAngle = 0.000000000000000e+00;
|
|
jd.enableLimit = true;
|
|
jd.lowerAngle = -1.221730470657349e+00;
|
|
jd.upperAngle = 6.981316804885864e-01;
|
|
jd.enableMotor = false;
|
|
jd.motorSpeed = 0.000000000000000e+00;
|
|
jd.maxMotorTorque = 1.000000000000000e+00;
|
|
joints[8] = world.CreateJoint(jd);
|
|
}
|
|
|
|
this.body = bodies[1];
|
|
|
|
this.limbs = {
|
|
head: bodies[2],
|
|
upperLeftArm: bodies[0],
|
|
lowerLeftArm: bodies[5],
|
|
upperRightArm: bodies[6],
|
|
lowerRightArm: bodies[3],
|
|
upperLeftLeg: bodies[8],
|
|
lowerLeftLeg: bodies[4],
|
|
upperRightLeg: bodies[7],
|
|
lowerRightLeg: bodies[9]
|
|
};
|
|
|
|
this.body.SetPosition(new Box2D.Common.Math.b2Vec2(20,0));
|
|
};
|
|
|
|
RagDoll.prototype.destroy = function() {
|
|
|
|
var world = this.body.GetWorld();
|
|
|
|
Parent.prototype.destroy.call(this); // chest destruction
|
|
|
|
for(var key in this.limbs) {
|
|
world.DestroyBody(this.limbs[key]);
|
|
}
|
|
};
|
|
|
|
return RagDoll;
|
|
|
|
}); |