aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/sims/collision/broadphase/BroadPhaseDetector.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/sims/collision/broadphase/BroadPhaseDetector.scala')
-rw-r--r--src/main/scala/sims/collision/broadphase/BroadPhaseDetector.scala39
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