#pragma once #include #include "frustum.hpp" #include "matrix.hpp" #include "vector.hpp" #include "components.hpp" #include "aabb.hpp" #include "plane.hpp" #include "asset_types.hpp" class Scene; struct CameraFrustum { std::array planes; }; CameraFrustum extract_frustum(Matrix4x4 combined); CameraFrustum camera_extract_frustum(Scene& scene, prism::Object cam); CameraFrustum normalize_frustum(const CameraFrustum& frustum); bool test_point_plane(const Plane& plane, const prism::float3& point); bool test_point_frustum(const CameraFrustum& frustum, const prism::float3& point); bool test_aabb_frustum(const CameraFrustum& frustum, const prism::aabb& aabb); prism::aabb get_aabb_for_part(const Transform& transform, const Mesh::Part& part);