mirror of
https://github.com/logsol/chuck.js.git
synced 2026-05-11 10:37:34 +00:00
52 lines
No EOL
1.6 KiB
JavaScript
52 lines
No EOL
1.6 KiB
JavaScript
define([
|
|
"Game/" + GLOBALS.context + "/GameObjects/GameObject",
|
|
"Lib/Vendor/Box2D",
|
|
"Game/Config/Settings"
|
|
],
|
|
|
|
function (Parent, Box2D, Settings) {
|
|
|
|
function Item(physicsEngine, uid, options) {
|
|
this.options = options;
|
|
Parent.call(this, physicsEngine, uid);
|
|
this.createFixture();
|
|
this.body.ResetMassData();
|
|
}
|
|
|
|
Item.prototype = Object.create(Parent.prototype);
|
|
|
|
Item.prototype.getBodyDef = function() {
|
|
|
|
var bodyDef = new Box2D.Dynamics.b2BodyDef();
|
|
bodyDef.type = Box2D.Dynamics.b2Body.b2_dynamicBody;
|
|
bodyDef.position.x = this.options.x / Settings.RATIO;
|
|
bodyDef.position.y = this.options.y / Settings.RATIO;
|
|
bodyDef.angle = 0;
|
|
|
|
return bodyDef;
|
|
}
|
|
|
|
Item.prototype.createFixture = function () {
|
|
|
|
var itemShape = new Box2D.Collision.Shapes.b2PolygonShape();
|
|
var w = this.options.width / Settings.RATIO;
|
|
var h = this.options.height / Settings.RATIO;
|
|
itemShape.SetAsOrientedBox(w / 2, h / 2, new Box2D.Common.Math.b2Vec2(0, -(h/2)));
|
|
|
|
var fixtureDef = new Box2D.Dynamics.b2FixtureDef();
|
|
fixtureDef.shape = itemShape;
|
|
|
|
var offset = 4,
|
|
factor = 80;
|
|
var density = ((this.options.weight + offset) / this.options.width / this.options.height) * factor;
|
|
fixtureDef.density = density;
|
|
fixtureDef.friction = Settings.ITEM_FRICTION;
|
|
fixtureDef.restitution = Settings.ITEM_RESTITUTION;
|
|
fixtureDef.isSensor = false;
|
|
|
|
this.body.CreateFixture(fixtureDef);
|
|
}
|
|
|
|
return Item;
|
|
|
|
}); |