@@ -8,6 +8,7 @@ var GetValue = require('../../utils/object/GetValue');
88var Rectangle = require ( '../../geom/rectangle/Rectangle' ) ;
99var RTree = require ( '../../structs/RTree' ) ;
1010var Set = require ( '../../structs/Set' ) ;
11+ var ProcessQueue = require ( '../../structs/ProcessQueue' ) ;
1112var StaticBody = require ( './StaticBody' ) ;
1213var Vector2 = require ( '../../math/Vector2' ) ;
1314
@@ -27,7 +28,7 @@ var World = new Class({
2728 // Static Bodies
2829 this . staticBodies = new Set ( ) ;
2930
30- this . colliders = [ ] ;
31+ this . colliders = new ProcessQueue ( ) ;
3132
3233 this . gravity = new Vector2 ( GetValue ( config , 'gravity.x' , 0 ) , GetValue ( config , 'gravity.y' , 0 ) ) ;
3334
@@ -231,7 +232,7 @@ var World = new Class({
231232
232233 var collider = new Collider ( this , false , object1 , object2 , collideCallback , processCallback , callbackContext ) ;
233234
234- this . colliders . push ( collider ) ;
235+ this . colliders . add ( collider ) ;
235236
236237 return collider ;
237238 } ,
@@ -244,14 +245,14 @@ var World = new Class({
244245
245246 var collider = new Collider ( this , true , object1 , object2 , collideCallback , processCallback , callbackContext ) ;
246247
247- this . colliders . push ( collider ) ;
248+ this . colliders . add ( collider ) ;
248249
249250 return collider ;
250251 } ,
251252
252253 removeCollider : function ( collider )
253254 {
254- // TODO
255+ this . colliders . remove ( collider ) ;
255256 } ,
256257
257258 update : function ( time , delta )
@@ -288,10 +289,11 @@ var World = new Class({
288289 this . tree . load ( bodies ) ;
289290
290291 // Process any colliders
292+ var colliders = this . colliders . update ( ) ;
291293
292- for ( i = 0 ; i < this . colliders . length ; i ++ )
294+ for ( i = 0 ; i < colliders . length ; i ++ )
293295 {
294- var collider = this . colliders [ i ] ;
296+ var collider = colliders [ i ] ;
295297
296298 if ( collider . active )
297299 {
0 commit comments