chuck.js/app/Game/Core/Physics/Engine.js

47 lines
No EOL
1.3 KiB
JavaScript
Executable file

define([
"Game/Config/Settings",
"Lib/Vendor/Box2D",
"Game/Core/Collision/Detector"
],
function (Settings, Box2D, CollisionDetector) {
function Engine () {
this.world = new Box2D.Dynamics.b2World(
new Box2D.Common.Math.b2Vec2(0, Settings.BOX2D_GRAVITY),
Settings.BOX2D_ALLOW_SLEEP
);
this.ground = null;
this.lastStep = Date.now();
console.log(Settings.BOX2D_TIME_STEP)
}
Engine.prototype.getWorld = function () {
return this.world;
}
Engine.prototype.getGround = function () {
return this.ground;
}
Engine.prototype.setCollisionDetector = function (player) {
var detector = new CollisionDetector(player);
this.world.SetContactListener(detector.getListener());
}
Engine.prototype.createBody = function (bodyDef) {
var body = this.world.CreateBody(bodyDef);
if(!this.ground) this.ground = body;
return body;
}
Engine.prototype.update = function () {
var stepLength = (Date.now() - this.lastStep) / 1000;
this.world.Step(stepLength, Settings.BOX2D_VELOCITY_ITERATIONS, Settings.BOX2D_POSITION_ITERATIONS);
this.lastStep = Date.now();
this.world.ClearForces();
}
return Engine;
});