Skip to content

Commit

Permalink
removed engine.broadphase.current, removed engine.broadphase.instance…
Browse files Browse the repository at this point in the history
…, changed engine.broadphase to refer to the broadphase instance, updated matter-tools
  • Loading branch information
liabru committed Jun 21, 2014
1 parent eedd1f2 commit 6dd0c05
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 28 deletions.
22 changes: 15 additions & 7 deletions demo/js/lib/matter-tools/matter-tools-dev.js
@@ -1,12 +1,12 @@
/**
* matter-tools-dev.min.js 0.5.0-dev 2014-05-04
* matter-tools-dev.min.js 0.5.0-dev 2014-06-21
* https://github.com/liabru/matter-tools
* License: MIT
*/

(function() {
var MatterTools = {};
var Engine = Matter.Engine, World = Matter.World, Bodies = Matter.Bodies, Body = Matter.Body, Composite = Matter.Composite, Composites = Matter.Composites, Common = Matter.Common, Constraint = Matter.Constraint, Events = Matter.Events, Bounds = Matter.Bounds, Vector = Matter.Vector, Vertices = Matter.Vertices, MouseConstraint = Matter.MouseConstraint, Render = Matter.Render, RenderPixi = Matter.RenderPixi, Mouse = Matter.Mouse, Query = Matter.Query;
var Engine = Matter.Engine, World = Matter.World, Bodies = Matter.Bodies, Body = Matter.Body, Composite = Matter.Composite, Composites = Matter.Composites, Common = Matter.Common, Constraint = Matter.Constraint, Events = Matter.Events, Bounds = Matter.Bounds, Vector = Matter.Vector, Vertices = Matter.Vertices, MouseConstraint = Matter.MouseConstraint, Render = Matter.Render, RenderPixi = Matter.RenderPixi, Mouse = Matter.Mouse, Query = Matter.Query, Grid = Matter.Grid, Detector = Matter.Detector;
var Gui = {};
(function() {
Gui.create = function(engine, options) {
Expand All @@ -19,6 +19,13 @@
var gui = {
engine:engine,
datGui:datGui,
broadphase:"grid",
broadphaseCache:{
grid:engine.broadphase.controller === Grid ? engine.broadphase :Grid.create(),
bruteForce:{
detector:Detector.bruteForce
}
},
amount:1,
size:40,
sides:4,
Expand Down Expand Up @@ -146,7 +153,8 @@
gravity.open();
var physics = datGui.addFolder("Engine");
physics.add(engine, "enableSleeping");
physics.add(engine.broadphase, "current", [ "grid", "bruteForce" ]).onFinishChange(function(value) {
physics.add(gui, "broadphase", [ "grid", "bruteForce" ]).onFinishChange(function(value) {
engine.broadphase = gui.broadphaseCache[value];
Composite.setModified(engine.world, true, false, false);
});
physics.add(engine.timing, "timeScale", 0, 1.2).step(.05).listen();
Expand Down Expand Up @@ -490,10 +498,10 @@
}
};
var _getMousePosition = function(inspector) {
return Vector.add(inspector.engine.input.mouse.position, inspector.offset);
return Vector.add(inspector.mouse.position, inspector.offset);
};
var _initEngineEvents = function(inspector) {
var engine = inspector.engine, mouse = engine.input.mouse, mousePosition = _getMousePosition(inspector), controls = inspector.controls;
var engine = inspector.engine, mouse = inspector.mouse, mousePosition = _getMousePosition(inspector), controls = inspector.controls;
Events.on(engine, "tick", function() {
mousePosition = _getMousePosition(inspector);
var mouseDelta = mousePosition.x - inspector.mousePrevPosition.x, keyDelta = _key.isPressed("up") + _key.isPressed("right") - _key.isPressed("down") - _key.isPressed("left"), delta = mouseDelta + keyDelta;
Expand Down Expand Up @@ -654,7 +662,7 @@
}, 200);
};
var _updateSelectedMouseDownOffset = function(inspector) {
var selected = inspector.selected, mouse = inspector.engine.input.mouse, mousePosition = _getMousePosition(inspector), item, data;
var selected = inspector.selected, mouse = inspector.mouse, mousePosition = _getMousePosition(inspector), item, data;
for (var i = 0; i < selected.length; i++) {
item = selected[i];
data = item.data;
Expand All @@ -677,7 +685,7 @@
}
};
var _moveSelectedObjects = function(inspector, x, y) {
var selected = inspector.selected, mouse = inspector.engine.input.mouse, mousePosition = _getMousePosition(inspector), item, data;
var selected = inspector.selected, mouse = inspector.mouse, mousePosition = _getMousePosition(inspector), item, data;
for (var i = 0; i < selected.length; i++) {
item = selected[i];
data = item.data;
Expand Down
38 changes: 19 additions & 19 deletions src/core/Engine.js
Expand Up @@ -55,6 +55,9 @@ var Engine = {};
render: {
element: element,
controller: Render
},
broadphase: {
controller: Grid
}
};

Expand All @@ -64,18 +67,7 @@ var Engine = {};
engine.world = World.create(engine.world);
engine.pairs = Pairs.create();
engine.metrics = engine.metrics || Metrics.create();

engine.broadphase = engine.broadphase || {
current: 'grid',
grid: {
controller: Grid,
instance: Grid.create(),
detector: Detector.collisions
},
bruteForce: {
detector: Detector.bruteForce
}
};
engine.broadphase = engine.broadphase.controller.create(engine.broadphase);

return engine;
};
Expand Down Expand Up @@ -184,7 +176,7 @@ var Engine = {};

var world = engine.world,
timing = engine.timing,
broadphase = engine.broadphase[engine.broadphase.current],
broadphase = engine.broadphase,
broadphasePairs = [],
i;

Expand Down Expand Up @@ -227,11 +219,11 @@ var Engine = {};

// if world is dirty, we must flush the whole grid
if (world.isModified)
broadphase.controller.clear(broadphase.instance);
broadphase.controller.clear(broadphase);

// update the grid buckets based on current bodies
broadphase.controller.update(broadphase.instance, allBodies, engine, world.isModified);
broadphasePairs = broadphase.instance.pairsList;
broadphase.controller.update(broadphase, allBodies, engine, world.isModified);
broadphasePairs = broadphase.pairsList;
} else {

// if no broadphase set, we just pass all bodies
Expand Down Expand Up @@ -329,11 +321,11 @@ var Engine = {};

Pairs.clear(engine.pairs);

var broadphase = engine.broadphase[engine.broadphase.current];
var broadphase = engine.broadphase;
if (broadphase.controller) {
var bodies = Composite.allBodies(world);
broadphase.controller.clear(broadphase.instance);
broadphase.controller.update(broadphase.instance, bodies, engine, true);
broadphase.controller.clear(broadphase);
broadphase.controller.update(broadphase, bodies, engine, true);
}
};

Expand Down Expand Up @@ -587,6 +579,14 @@ var Engine = {};
* @default a Matter.Render instance
*/

/**
* An instance of a broadphase controller. The default value is a `Matter.Grid` instance created by `Engine.create`.
*
* @property broadphase
* @type grid
* @default a Matter.Grid instance
*/

/**
* A `World` composite object that will contain all simulated bodies and constraints.
*
Expand Down
4 changes: 2 additions & 2 deletions src/render/Render.js
Expand Up @@ -204,8 +204,8 @@ var Render = {};

Render.constraints(constraints, context);

if (options.showBroadphase && engine.broadphase.current === 'grid')
Render.grid(engine, engine.broadphase[engine.broadphase.current].instance, context);
if (options.showBroadphase && engine.broadphase.controller === Grid)
Render.grid(engine, engine.broadphase, context);

if (options.showDebug)
Render.debug(engine, context);
Expand Down

0 comments on commit 6dd0c05

Please sign in to comment.