diff options
Diffstat (limited to 'src/main/scala/sims/collision/broadphase/BroadPhaseDetector.scala')
-rw-r--r-- | src/main/scala/sims/collision/broadphase/BroadPhaseDetector.scala | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/main/scala/sims/collision/broadphase/BroadPhaseDetector.scala b/src/main/scala/sims/collision/broadphase/BroadPhaseDetector.scala new file mode 100644 index 0000000..637da7a --- /dev/null +++ b/src/main/scala/sims/collision/broadphase/BroadPhaseDetector.scala @@ -0,0 +1,39 @@ +/* _____ _ __ ________ ___ *\ +** / ___/(_) |/ / ___/ |__ \ Simple Mechanics Simulator 2 ** +** \__ \/ / /|_/ /\__ \ __/ / copyright (c) 2011 Jakob Odersky ** +** ___/ / / / / /___/ / / __/ ** +** /____/_/_/ /_//____/ /____/ ** +\* */ + +package sims.collision.broadphase + +import sims.collision._ +import scala.collection.mutable.ArrayBuffer + +abstract class BroadPhaseDetector[A <: Collidable: ClassManifest] { + + protected var _items = new ArrayBuffer[A] + + /** Collidable items managed by this collision detector. */ + def items: Seq[A] = _items + + /** Adds an item to this collision detector. */ + def +=(item: A) = _items += item + + /** Adds a collection of items to this collision detector. */ + def ++=(items: Iterable[A]) = for (i <- items) this += i + + /**Removes an item from this collision detector. */ + def -=(item: A) = _items -= item + + /**Removes a collection of items from this collision detector. */ + def --=(items: Iterable[A]) = for (i <- items) this -= i + + /**Removes all items from this collision detector. */ + def clear() = _items.clear + + /** Applies a given function to every potentially colliding pair. + * @param f function applied to every potentially colliding pair */ + def foreach(f: ((A, A)) => Unit) + +}
\ No newline at end of file |