#pragma once #include "vde/core/point.h" #include "vde/core/line.h" #include "vde/core/triangle.h" #include namespace vde::collision { using core::Point3D; using core::Vector3D; using core::Triangle3D; using core::Ray3Dd; struct RayTriResult { double t; double u, v; Point3D point; }; std::optional ray_triangle_intersect( const Point3D& origin, const Vector3D& dir, const Triangle3D& tri); inline std::optional ray_triangle_intersect( const Ray3Dd& ray, const Triangle3D& tri) { return ray_triangle_intersect(ray.origin(), ray.direction(), tri); } } // namespace vde::collision