aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/CollisionTest.cpp358
1 files changed, 187 insertions, 171 deletions
diff --git a/src/test/CollisionTest.cpp b/src/test/CollisionTest.cpp
index bbf6348..e158d5c 100644
--- a/src/test/CollisionTest.cpp
+++ b/src/test/CollisionTest.cpp
@@ -22,6 +22,22 @@ using namespace std::chrono_literals;
using namespace crepe;
using namespace testing;
+// class MyScript : public Script {
+// bool oncollision(const CollisionEvent& test) {
+// Log::logf("Box {} script on_collision()", test.info.first.collider.game_object_id);
+// return true;
+// }
+// void init() {
+// subscribe<CollisionEvent>([this](const CollisionEvent& ev) -> bool {
+// return this->oncollision(ev);
+// });
+// }
+// void update() {
+// // Retrieve component from the same GameObject this script is on
+// }
+// };
+
+
class CollisionHandler : public Script {
public:
int box_id;
@@ -32,18 +48,18 @@ public:
}
bool on_collision(const CollisionEvent& ev) {
- Log::logf("Box {} script on_collision()", box_id);
+ //Log::logf("Box {} script on_collision()", box_id);
test_fn(ev);
return true;
}
void init() {
- //Log::logf("Box {} script init()", box_id);
-
- // TODO: this should be built into script
- subscribe<CollisionEvent>([](const CollisionEvent&) -> bool {
- return true;
- });
+ subscribe<CollisionEvent>([this](const CollisionEvent& ev) -> bool {
+ return this->on_collision(ev);
+ });
+ }
+ void update() {
+ // Retrieve component from the same GameObject this script is on
}
};
@@ -68,10 +84,10 @@ public:
.offset = {0,0},
});
// Create a box with an inner size of 10x10 units
- world.add_component<BoxCollider>(Vector2{0, -100}, 100, 100); // Top
- world.add_component<BoxCollider>(Vector2{0, 100}, 100, 100); // Bottom
- world.add_component<BoxCollider>(Vector2{-100, 0}, 100, 100); // Left
- world.add_component<BoxCollider>(Vector2{100, 0}, 100, 100); // right
+ world.add_component<BoxCollider>(vec2{0, -100}, 100, 100); // Top
+ world.add_component<BoxCollider>(vec2{0, 100}, 100, 100); // Bottom
+ world.add_component<BoxCollider>(vec2{-100, 0}, 100, 100); // Left
+ world.add_component<BoxCollider>(vec2{100, 0}, 100, 100); // right
game_object1.add_component<Rigidbody>(Rigidbody::Data{
.mass = 1,
@@ -84,7 +100,7 @@ public:
.elastisity = 1,
.offset = {0,0},
});
- game_object1.add_component<BoxCollider>(Vector2{0, 0}, 10, 10);
+ game_object1.add_component<BoxCollider>(vec2{0, 0}, 10, 10);
BehaviorScript & script_object1 = game_object1.add_component<BehaviorScript>().set_script<CollisionHandler>(1);
script_object1_ref = static_cast<CollisionHandler*>(script_object1.script.get());
ASSERT_NE(script_object1_ref, nullptr);
@@ -100,7 +116,7 @@ public:
.elastisity = 1,
.offset = {0,0},
});
- game_object2.add_component<BoxCollider>(Vector2{0, 0}, 10, 10);
+ game_object2.add_component<BoxCollider>(vec2{0, 0}, 10, 10);
BehaviorScript & script_object2 = game_object2.add_component<BehaviorScript>().set_script<CollisionHandler>(2);
script_object2_ref = static_cast<CollisionHandler*>(script_object2.script.get());
ASSERT_NE(script_object2_ref, nullptr);
@@ -110,170 +126,170 @@ public:
}
};
-// TEST_F(CollisionTest, collision_example) {
-// bool collision_happend = false;
-// script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
-// };
-// script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
-// };
-// EXPECT_FALSE(collision_happend);
-// collision_sys.update();
-// EXPECT_FALSE(collision_happend);
-// }
+TEST_F(CollisionTest, collision_example) {
+ bool collision_happend = false;
+ script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
+ };
+ script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
+ };
+ EXPECT_FALSE(collision_happend);
+ collision_sys.update();
+ EXPECT_FALSE(collision_happend);
+}
-// TEST_F(CollisionTest, collision_box_box_dynamic_both_no_velocity) {
-// bool collision_happend = false;
-// script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
-// EXPECT_EQ(ev.info.move_back_value.x, 10);
-// EXPECT_EQ(ev.info.move_back_value.y, 10);
-// EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::BOTH);
-// };
-// script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
-// EXPECT_EQ(ev.info.move_back_value.x, 10);
-// EXPECT_EQ(ev.info.move_back_value.y, 10);
-// EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::BOTH);
-// };
-// EXPECT_FALSE(collision_happend);
-// Transform & tf = this->mgr.get_components_by_id<Transform>(1).front().get();
-// tf.position = {50,30};
-// collision_sys.update();
-// EXPECT_TRUE(collision_happend);
-// }
+TEST_F(CollisionTest, collision_box_box_dynamic_both_no_velocity) {
+ bool collision_happend = false;
+ script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
+ EXPECT_EQ(ev.info.move_back_value.x, 10);
+ EXPECT_EQ(ev.info.move_back_value.y, 10);
+ EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::BOTH);
+ };
+ script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
+ EXPECT_EQ(ev.info.move_back_value.x, 10);
+ EXPECT_EQ(ev.info.move_back_value.y, 10);
+ EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::BOTH);
+ };
+ EXPECT_FALSE(collision_happend);
+ Transform & tf = this->mgr.get_components_by_id<Transform>(1).front().get();
+ tf.position = {50,30};
+ collision_sys.update();
+ EXPECT_TRUE(collision_happend);
+}
-// TEST_F(CollisionTest, collision_box_box_dynamic_x_direction_no_velocity) {
-// bool collision_happend = false;
-// script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
-// EXPECT_EQ(ev.info.move_back_value.x, -5);
-// EXPECT_EQ(ev.info.move_back_value.y, 0);
-// EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::X_DIRECTION);
-// };
-// script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
-// EXPECT_EQ(ev.info.move_back_value.x, 5);
-// EXPECT_EQ(ev.info.move_back_value.y, 0);
-// EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::X_DIRECTION);
-// };
-// EXPECT_FALSE(collision_happend);
-// Transform & tf = this->mgr.get_components_by_id<Transform>(1).front().get();
-// tf.position = {45,30};
-// collision_sys.update();
-// EXPECT_TRUE(collision_happend);
-// }
+TEST_F(CollisionTest, collision_box_box_dynamic_x_direction_no_velocity) {
+ bool collision_happend = false;
+ script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
+ EXPECT_EQ(ev.info.move_back_value.x, -5);
+ EXPECT_EQ(ev.info.move_back_value.y, 0);
+ EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::X_DIRECTION);
+ };
+ script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
+ EXPECT_EQ(ev.info.move_back_value.x, 5);
+ EXPECT_EQ(ev.info.move_back_value.y, 0);
+ EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::X_DIRECTION);
+ };
+ EXPECT_FALSE(collision_happend);
+ Transform & tf = this->mgr.get_components_by_id<Transform>(1).front().get();
+ tf.position = {45,30};
+ collision_sys.update();
+ EXPECT_TRUE(collision_happend);
+}
-// TEST_F(CollisionTest, collision_box_box_dynamic_y_direction_no_velocity) {
-// bool collision_happend = false;
-// script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
-// EXPECT_EQ(ev.info.move_back_value.x, 0);
-// EXPECT_EQ(ev.info.move_back_value.y, -5);
-// EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::Y_DIRECTION);
-// };
-// script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
-// EXPECT_EQ(ev.info.move_back_value.x, 0);
-// EXPECT_EQ(ev.info.move_back_value.y, 5);
-// EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::Y_DIRECTION);
-// };
-// EXPECT_FALSE(collision_happend);
-// Transform & tf = this->mgr.get_components_by_id<Transform>(1).front().get();
-// tf.position = {50,25};
-// collision_sys.update();
-// EXPECT_TRUE(collision_happend);
-// }
+TEST_F(CollisionTest, collision_box_box_dynamic_y_direction_no_velocity) {
+ bool collision_happend = false;
+ script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
+ EXPECT_EQ(ev.info.move_back_value.x, 0);
+ EXPECT_EQ(ev.info.move_back_value.y, -5);
+ EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::Y_DIRECTION);
+ };
+ script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
+ EXPECT_EQ(ev.info.move_back_value.x, 0);
+ EXPECT_EQ(ev.info.move_back_value.y, 5);
+ EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::Y_DIRECTION);
+ };
+ EXPECT_FALSE(collision_happend);
+ Transform & tf = this->mgr.get_components_by_id<Transform>(1).front().get();
+ tf.position = {50,25};
+ collision_sys.update();
+ EXPECT_TRUE(collision_happend);
+}
-// TEST_F(CollisionTest, collision_box_box_dynamic_both) {
-// bool collision_happend = false;
-// script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
-// EXPECT_EQ(ev.info.move_back_value.x, 10);
-// EXPECT_EQ(ev.info.move_back_value.y, 10);
-// EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::BOTH);
-// };
-// script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
-// EXPECT_EQ(ev.info.move_back_value.x, 10);
-// EXPECT_EQ(ev.info.move_back_value.y, 10);
-// EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::BOTH);
-// };
-// EXPECT_FALSE(collision_happend);
-// Transform & tf = this->mgr.get_components_by_id<Transform>(1).front().get();
-// tf.position = {50,30};
-// Rigidbody & rg1 = this->mgr.get_components_by_id<Rigidbody>(1).front().get();
-// rg1.data.linear_velocity = {10,10};
-// Rigidbody & rg2 = this->mgr.get_components_by_id<Rigidbody>(2).front().get();
-// rg2.data.linear_velocity = {10,10};
-// collision_sys.update();
-// EXPECT_TRUE(collision_happend);
-// }
+TEST_F(CollisionTest, collision_box_box_dynamic_both) {
+ bool collision_happend = false;
+ script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
+ EXPECT_EQ(ev.info.move_back_value.x, 10);
+ EXPECT_EQ(ev.info.move_back_value.y, 10);
+ EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::BOTH);
+ };
+ script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
+ EXPECT_EQ(ev.info.move_back_value.x, 10);
+ EXPECT_EQ(ev.info.move_back_value.y, 10);
+ EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::BOTH);
+ };
+ EXPECT_FALSE(collision_happend);
+ Transform & tf = this->mgr.get_components_by_id<Transform>(1).front().get();
+ tf.position = {50,30};
+ Rigidbody & rg1 = this->mgr.get_components_by_id<Rigidbody>(1).front().get();
+ rg1.data.linear_velocity = {10,10};
+ Rigidbody & rg2 = this->mgr.get_components_by_id<Rigidbody>(2).front().get();
+ rg2.data.linear_velocity = {10,10};
+ collision_sys.update();
+ EXPECT_TRUE(collision_happend);
+}
-// TEST_F(CollisionTest, collision_box_box_dynamic_x_direction) {
-// bool collision_happend = false;
-// script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
-// EXPECT_EQ(ev.info.move_back_value.x, -5);
-// EXPECT_EQ(ev.info.move_back_value.y, -5);
-// EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::X_DIRECTION);
-// };
-// script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
-// EXPECT_EQ(ev.info.move_back_value.x, 5);
-// EXPECT_EQ(ev.info.move_back_value.y, 5);
-// EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::X_DIRECTION);
-// };
-// EXPECT_FALSE(collision_happend);
-// Transform & tf = this->mgr.get_components_by_id<Transform>(1).front().get();
-// tf.position = {45,30};
-// Rigidbody & rg1 = this->mgr.get_components_by_id<Rigidbody>(1).front().get();
-// rg1.data.linear_velocity = {10,10};
-// Rigidbody & rg2 = this->mgr.get_components_by_id<Rigidbody>(2).front().get();
-// rg2.data.linear_velocity = {10,10};
-// collision_sys.update();
-// EXPECT_TRUE(collision_happend);
-// }
+TEST_F(CollisionTest, collision_box_box_dynamic_x_direction) {
+ bool collision_happend = false;
+ script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
+ EXPECT_EQ(ev.info.move_back_value.x, -5);
+ EXPECT_EQ(ev.info.move_back_value.y, -5);
+ EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::X_DIRECTION);
+ };
+ script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
+ EXPECT_EQ(ev.info.move_back_value.x, 5);
+ EXPECT_EQ(ev.info.move_back_value.y, 5);
+ EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::X_DIRECTION);
+ };
+ EXPECT_FALSE(collision_happend);
+ Transform & tf = this->mgr.get_components_by_id<Transform>(1).front().get();
+ tf.position = {45,30};
+ Rigidbody & rg1 = this->mgr.get_components_by_id<Rigidbody>(1).front().get();
+ rg1.data.linear_velocity = {10,10};
+ Rigidbody & rg2 = this->mgr.get_components_by_id<Rigidbody>(2).front().get();
+ rg2.data.linear_velocity = {10,10};
+ collision_sys.update();
+ EXPECT_TRUE(collision_happend);
+}
-// TEST_F(CollisionTest, collision_box_box_dynamic_y_direction) {
-// bool collision_happend = false;
-// script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
-// EXPECT_EQ(ev.info.move_back_value.x, -5);
-// EXPECT_EQ(ev.info.move_back_value.y, -5);
-// EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::Y_DIRECTION);
-// };
-// script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
-// collision_happend = true;
-// EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
-// EXPECT_EQ(ev.info.move_back_value.x, 5);
-// EXPECT_EQ(ev.info.move_back_value.y, 5);
-// EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::Y_DIRECTION);
-// };
-// EXPECT_FALSE(collision_happend);
-// Transform & tf = this->mgr.get_components_by_id<Transform>(1).front().get();
-// tf.position = {50,25};
-// Rigidbody & rg1 = this->mgr.get_components_by_id<Rigidbody>(1).front().get();
-// rg1.data.linear_velocity = {10,10};
-// Rigidbody & rg2 = this->mgr.get_components_by_id<Rigidbody>(2).front().get();
-// rg2.data.linear_velocity = {10,10};
-// collision_sys.update();
-// EXPECT_TRUE(collision_happend);
-// }
+TEST_F(CollisionTest, collision_box_box_dynamic_y_direction) {
+ bool collision_happend = false;
+ script_object1_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 1);
+ EXPECT_EQ(ev.info.move_back_value.x, -5);
+ EXPECT_EQ(ev.info.move_back_value.y, -5);
+ EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::Y_DIRECTION);
+ };
+ script_object2_ref->test_fn = [&collision_happend](const CollisionEvent & ev) {
+ collision_happend = true;
+ EXPECT_EQ(ev.info.first.collider.game_object_id, 2);
+ EXPECT_EQ(ev.info.move_back_value.x, 5);
+ EXPECT_EQ(ev.info.move_back_value.y, 5);
+ EXPECT_EQ(ev.info.move_back_direction, crepe::CollisionSystem::Direction::Y_DIRECTION);
+ };
+ EXPECT_FALSE(collision_happend);
+ Transform & tf = this->mgr.get_components_by_id<Transform>(1).front().get();
+ tf.position = {50,25};
+ Rigidbody & rg1 = this->mgr.get_components_by_id<Rigidbody>(1).front().get();
+ rg1.data.linear_velocity = {10,10};
+ Rigidbody & rg2 = this->mgr.get_components_by_id<Rigidbody>(2).front().get();
+ rg2.data.linear_velocity = {10,10};
+ collision_sys.update();
+ EXPECT_TRUE(collision_happend);
+}
TEST_F(CollisionTest, collision_box_box_static_both) {