From a92afc1f4fa77cbd2071cee9c08bcbcc0fc4ea90 Mon Sep 17 00:00:00 2001 From: logsol Date: Sun, 15 Jun 2014 03:05:19 +0200 Subject: [PATCH] more fixes - not quite there yet --- app/Game/Channel/GameController.js | 2 -- app/Game/Core/Collision/Detector.js | 48 +++++++++++++++++++++++------ app/Lib/Vendor/Box2D.js | 1 + 3 files changed, 40 insertions(+), 11 deletions(-) diff --git a/app/Game/Channel/GameController.js b/app/Game/Channel/GameController.js index 3554b5b..7141eb3 100755 --- a/app/Game/Channel/GameController.js +++ b/app/Game/Channel/GameController.js @@ -50,9 +50,7 @@ function (Parent, PhysicsEngine, Settings, PlayerController, requestAnimFrame, N } GameController.prototype.onLevelLoaded = function() { - console.log("onLevelLoaded updateWorld pre") this.updateWorld(); - console.log("onLevelLoaded updateWorld post") }; GameController.prototype.onUserJoined = function (user) { diff --git a/app/Game/Core/Collision/Detector.js b/app/Game/Core/Collision/Detector.js index e4994f5..03ee189 100755 --- a/app/Game/Core/Collision/Detector.js +++ b/app/Game/Core/Collision/Detector.js @@ -1,8 +1,9 @@ define([ - "Lib/Vendor/Box2D" + "Lib/Vendor/Box2D", + "Game/Config/Settings" ], -function (Box2D) { +function (Box2D, Settings) { function Detector () { this.listener = new Box2D.Dynamics.b2ContactListener(); @@ -12,20 +13,49 @@ function (Box2D) { } Detector.prototype.getListener = function () { - return this.listener; + var self = this; + var listener = this.listener + + if(Settings.USE_ASM) { + Box2D.customizeVTable(listener, [{ + original: Box2D.b2ContactListener.prototype.BeginContact, + replacement: function(thisPtr, contactPtr) { + var contact = Box2D.wrapPointer(contactPtr, Box2D.Dynamics.Contacts.b2Contact); + self.beginContact(contact); + } + }, + { + original: Box2D.b2ContactListener.prototype.EndContact, + replacement: function(thisPtr, contactPtr) { + var contact = Box2D.wrapPointer(contactPtr, Box2D.Dynamics.Contacts.b2Contact); + self.endContact(contact); + } + }]); + } + + return listener; } Detector.prototype.onCollisionChange = function (point, isColliding) { + console.log(point.GetFixtureA().GetUserData().onCollisionChange) var userDataA = point.GetFixtureA().GetUserData(); var userDataB = point.GetFixtureB().GetUserData(); - if (userDataA && userDataA.onCollisionChange) { - userDataA.onCollisionChange(isColliding, point.GetFixtureB()); - } + //if (userDataA && userDataA.onCollisionChange) { + try { + userDataA.onCollisionChange(isColliding, point.GetFixtureB()); + } catch(e) { - if (userDataB && userDataB.onCollisionChange) { - userDataB.onCollisionChange(isColliding, point.GetFixtureA()); - } + } + //} + + //if (userDataB && userDataB.onCollisionChange) { + try{ + userDataB.onCollisionChange(isColliding, point.GetFixtureA()); + }catch(e) { + + } + //} } /** Extension **/ diff --git a/app/Lib/Vendor/Box2D.js b/app/Lib/Vendor/Box2D.js index 4ce1c77..7c8db13 100755 --- a/app/Lib/Vendor/Box2D.js +++ b/app/Lib/Vendor/Box2D.js @@ -14,6 +14,7 @@ function (Settings, /*Box2dWeb, */AsmBox2d) { b2ControllerEdge: Module.b2ControllerEdge }, Contacts: { + b2Contact: Module.b2Contact, b2CircleContact: Module.b2CircleContact }, Joints: {