aboutsummaryrefslogtreecommitdiffstats
path: root/yage/physics/rectanglecollider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'yage/physics/rectanglecollider.cpp')
-rw-r--r--yage/physics/rectanglecollider.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/yage/physics/rectanglecollider.cpp b/yage/physics/rectanglecollider.cpp
new file mode 100644
index 00000000..d9a1a6c1
--- /dev/null
+++ b/yage/physics/rectanglecollider.cpp
@@ -0,0 +1,36 @@
+/* ----------------------------------------------------------------------------
+ * rectanglecollider.cpp
+ *
+ * Copyright (c) 2017 Yann Herklotz Grave <ymherklotz@gmail.com> -- MIT License
+ * See file LICENSE for more details
+ * ----------------------------------------------------------------------------
+ */
+
+#include <yage/physics/rectanglecollider.h>
+
+namespace yage
+{
+
+RectangleCollider::RectangleCollider(const glm::vec2 &position,
+ const glm::vec2 &size)
+ : Collider(position, size)
+{
+}
+
+bool RectangleCollider::collides(const Collider &collider) const
+{
+ for (int i = position_.x; i < position_.x + size_.x; ++i) {
+ for (int j = position_.y; j < position_.y + size_.y; ++j) {
+ return collider.inside(glm::vec2(i, j));
+ }
+ }
+ return false;
+}
+
+inline bool RectangleCollider::inside(const glm::vec2 &point) const
+{
+ return position_.x < point.x && position_.x + size_.x > point.x &&
+ position_.y < point.y && position_.y + size_.y > point.y;
+}
+
+} // namespace yage