Polyphase Game Engine
Loading...
Searching...
No Matches
CameraFrustum.h
Go to the documentation of this file.
1#pragma once
2
3#include "Maths.h"
4
5#include <array>
6
8{
9public:
10
11 enum PlaneIndex : uint8_t
12 {
19
20 Count
21 };
22
23 glm::vec3 mPosition = {};
24 glm::vec3 mBasisX = { 1.0f, 0.0f, 0.0f };
25 glm::vec3 mBasisY = { 0.0f, 1.0f, 0.0f };
26 glm::vec3 mBasisZ = { 0.0f, 0.0f, -1.0f };
27
28 float mNearDist = 0.0f;
29 float mFarDist = 0.0f;
30 float mNearWidth = 0.0f;
31 float mNearHeight = 0.0f;
32 float mTangent = 0.0f;
33 float mAspectRatio = 0.0f;
34
35 float mSphereFactorX = 0.0f;
36 float mSphereFactorY = 0.0f;
37
38 bool mOrtho = false;
39
40 std::array<glm::vec4, Count> mPlanes = {};
41
42public:
43
44 void SetPerspective(float angle, float ratio, float nearDist, float farDist);
45 void SetOrthographic(float width, float height, float nearDist, float farDist);
46 void SetViewProjection(const glm::mat4& viewProjectionMatrix);
47 void SetPosition(glm::vec3 position);
48 void SetBasis(glm::vec3 forward, glm::vec3 up, glm::vec3 right);
49
50 bool IsPointInFrustum(glm::vec3 p) const;
51 bool IsSphereInFrustum(glm::vec3 center, float radius) const;
52
53 bool IsPointInFrustumOrtho(glm::vec3 p) const;
54 bool IsSphereInFrustumOrtho(glm::vec3 center, float radius) const;
55
56 bool IsPointInsidePlanes(glm::vec3 p) const;
57 bool IsSphereInsidePlanes(glm::vec3 center, float radius) const;
58};
Definition CameraFrustum.h:8
void SetBasis(glm::vec3 forward, glm::vec3 up, glm::vec3 right)
Definition CameraFrustum.cpp:72
void SetPosition(glm::vec3 position)
Definition CameraFrustum.cpp:67
float mSphereFactorY
Definition CameraFrustum.h:36
glm::vec3 mBasisZ
Definition CameraFrustum.h:26
glm::vec3 mPosition
Definition CameraFrustum.h:23
float mNearHeight
Definition CameraFrustum.h:31
bool IsSphereInFrustum(glm::vec3 center, float radius) const
Definition CameraFrustum.cpp:114
glm::vec3 mBasisY
Definition CameraFrustum.h:25
void SetPerspective(float angle, float ratio, float nearDist, float farDist)
Definition CameraFrustum.cpp:19
float mNearWidth
Definition CameraFrustum.h:30
PlaneIndex
Definition CameraFrustum.h:12
@ Count
Definition CameraFrustum.h:20
@ Left
Definition CameraFrustum.h:13
@ Near
Definition CameraFrustum.h:17
@ Bottom
Definition CameraFrustum.h:15
@ Right
Definition CameraFrustum.h:14
@ Far
Definition CameraFrustum.h:18
@ Top
Definition CameraFrustum.h:16
bool mOrtho
Definition CameraFrustum.h:38
float mNearDist
Definition CameraFrustum.h:28
void SetOrthographic(float width, float height, float nearDist, float farDist)
Definition CameraFrustum.cpp:42
std::array< glm::vec4, Count > mPlanes
Definition CameraFrustum.h:40
bool IsSphereInFrustumOrtho(glm::vec3 center, float radius) const
Definition CameraFrustum.cpp:158
bool IsPointInsidePlanes(glm::vec3 p) const
Definition CameraFrustum.cpp:177
void SetViewProjection(const glm::mat4 &viewProjectionMatrix)
Definition CameraFrustum.cpp:55
float mSphereFactorX
Definition CameraFrustum.h:35
bool IsSphereInsidePlanes(glm::vec3 center, float radius) const
Definition CameraFrustum.cpp:190
bool IsPointInFrustum(glm::vec3 p) const
Definition CameraFrustum.cpp:79
float mAspectRatio
Definition CameraFrustum.h:33
glm::vec3 mBasisX
Definition CameraFrustum.h:24
float mFarDist
Definition CameraFrustum.h:29
bool IsPointInFrustumOrtho(glm::vec3 p) const
Definition CameraFrustum.cpp:139
float mTangent
Definition CameraFrustum.h:32