Frustum.cppm 709 B

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