Frustum.cppm 733 B

1234567891011121314151617181920212223242526
  1. export module Core.Frustum;
  2. export import Core.Matrix;
  3. import Core.Array;
  4. import Core.Plane;
  5. export namespace Core {
  6. class Frustum final {
  7. Matrix projection;
  8. Array<Plane, 6> planes;
  9. float tan;
  10. float near;
  11. float far;
  12. public:
  13. Frustum(float fieldOfView, float nearClip, float farClip) noexcept;
  14. const Matrix& updateProjection(const IntVector2& size) noexcept;
  15. void updatePlanes(
  16. const Vector3& pos, const Vector3& right, const Vector3& up,
  17. const Vector3& front, const IntVector2& size) noexcept;
  18. bool isInside(const Vector3& pos) const noexcept;
  19. bool isInside(const Vector3& pos, float radius) const noexcept;
  20. };
  21. }