module; export module Core.Frustum; export import Core.Matrix; import Core.Array; import Core.Plane; export namespace Core { class Frustum final { Matrix projection; Array planes; float tan; float near; float far; public: Frustum(float fieldOfView, float nearClip, float farClip); const Matrix& updateProjection(const IntVector2& size); void updatePlanes( const Vector3& pos, const Vector3& right, const Vector3& up, const Vector3& front, const IntVector2& size); bool isInside(const Vector3& pos) const; bool isInside(const Vector3& pos, float radius) const; }; }