diff --git a/src/collision/collision_system.cpp b/src/collision/collision_system.cpp index d26260bfc20..ca51c89004e 100644 --- a/src/collision/collision_system.cpp +++ b/src/collision/collision_system.cpp @@ -744,7 +744,7 @@ CollisionSystem::get_first_line_intersection(const Vector& line_start, if ((tile->get_attributes() & Tile::SOLID)) { result.is_valid = true; - result.hit.tile = tile; + result.hit = tile; result.box = {glm::floor((test_vector - solids->get_offset()) / 32.0f), Sizef(32.f, 32.f)}; return result; } @@ -769,7 +769,7 @@ CollisionSystem::get_first_line_intersection(const Vector& line_start, if (intersects_line(object->get_bbox(), line_start, line_end)) { result.is_valid = true; - result.hit.object = object; + result.hit = object; result.box = object->get_bbox(); return result; } diff --git a/src/collision/collision_system.hpp b/src/collision/collision_system.hpp index a263e439d3c..559c1b6bea6 100644 --- a/src/collision/collision_system.hpp +++ b/src/collision/collision_system.hpp @@ -20,6 +20,7 @@ #include #include +#include #include #include "collision/collision.hpp" @@ -38,11 +39,7 @@ class CollisionSystem final struct RaycastResult { bool is_valid; /**< true if raycast hit something */ - union - { - const CollisionObject* object; - const Tile* tile; - } hit; /**< tile/object that the raycast hit */ + std::variant hit; /**< tile/object that the raycast hit */ Rectf box = {}; /**< hitbox of tile/object */ };