aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/example/game.cpp5
-rw-r--r--src/test/CollisionTest.cpp60
2 files changed, 56 insertions, 9 deletions
diff --git a/src/example/game.cpp b/src/example/game.cpp
index a9f6103..b6a0c31 100644
--- a/src/example/game.cpp
+++ b/src/example/game.cpp
@@ -26,7 +26,6 @@ class MyScript : public Script {
}
void update() {
// Retrieve component from the same GameObject this script is on
-
}
};
@@ -35,8 +34,8 @@ public:
using Scene::Scene;
void load_scene() {
- ComponentManager & mgr = this->component_manager;
- Color color(0, 0, 0, 0);
+ ComponentManager & mgr = this->component_manager;
+ Color color(0, 0, 0, 0);
double screen_size_width = 640;
double screen_size_height = 480;
diff --git a/src/test/CollisionTest.cpp b/src/test/CollisionTest.cpp
index 3c2ee6e..5da26cc 100644
--- a/src/test/CollisionTest.cpp
+++ b/src/test/CollisionTest.cpp
@@ -1,3 +1,4 @@
+#include <cstddef>
#include <gtest/gtest.h>
#include <crepe/api/Config.h>
@@ -9,7 +10,8 @@
#include <crepe/api/Script.h>
#include <crepe/ComponentManager.h>
-#include <crepe/system/PhysicsSystem.h>
+#include <crepe/system/CollisionSystem.h>
+#include <type_traits>
using namespace std;
@@ -19,10 +21,10 @@ using namespace crepe;
class MyScript : public Script {
public:
- static crepe::CollisionSystem::CollisionInfo last_collision_info;
+ static const crepe::CollisionSystem::CollisionInfo* last_collision_info;
private:
static bool oncollision(const CollisionEvent& test) {
- std::cout << "test collision: " << test.info.first.collider.game_object_id << std::endl;
+ last_collision_info = &test.info;
return true;
}
void init() {
@@ -37,14 +39,60 @@ class MyScript : public Script {
class CollisionTest : public ::testing::Test {
public:
ComponentManager component_manager;
- PhysicsSystem system{component_manager};
+ CollisionSystem system{component_manager};
void SetUp() override {
+ MyScript::last_collision_info = nullptr;
ComponentManager & mgr = this->component_manager;
+ if(mgr.get_components_by_id<Transform>(0).empty())
+ {
+ create_test_world();
+ create_test_components();
+ }
+ reset_test_components();
+ }
+
+ void create_test_world() {
+ double screen_size_width = 640;
+ double screen_size_height = 480;
+ double world_collider = 1000;
+ ComponentManager & mgr = this->component_manager;
+ GameObject world = mgr.new_object("Name", "Tag", Vector2{screen_size_width/2, screen_size_height/2}, 0, 1);
+ world.add_component<Rigidbody>(Rigidbody::Data{
+ .mass = 0,
+ .gravity_scale = 0,
+ .body_type = Rigidbody::BodyType::STATIC,
+ .constraints = {0, 0, 0},
+ .use_gravity = false,
+ .bounce = false,
+ .offset = {0,0}
+ });
+ world.add_component<BoxCollider>(Vector2{0, 0-(screen_size_height/2+world_collider/2)}, world_collider, world_collider);; // Top
+ world.add_component<BoxCollider>(Vector2{0, screen_size_height/2+world_collider/2}, world_collider, world_collider); // Bottom
+ world.add_component<BoxCollider>(Vector2{0-(screen_size_width/2+world_collider/2), 0}, world_collider, world_collider); // Left
+ world.add_component<BoxCollider>(Vector2{screen_size_width/2+world_collider/2, 0}, world_collider, world_collider); // right
+ }
+
+ void create_test_components()
+ {
+
+ }
+
+ void reset_test_components()
+ {
+
}
};
TEST_F(CollisionTest, collision) {
-//read static data
-const CollisionEvent& test = MyScript::last_collision_info;
+ // change object data before calling update
+
+ // call collision system update
+ system.update();
+ // should not be nullptr after update
+ ASSERT_NE(MyScript::last_collision_info, nullptr);
+
+ // check if values are correct
+ EXPECT_EQ(MyScript::last_collision_info->first.collider.game_object_id, 1);
+ EXPECT_EQ(MyScript::last_collision_info->second.collider.game_object_id, 2);
}