Polyphase Game Engine
Loading...
Searching...
No Matches
Camera3d.h
Go to the documentation of this file.
1#pragma once
2
3#include "Node3d.h"
4#include "Enums.h"
5#include "CameraFrustum.h"
6
7#include "Maths.h"
8
9class Primitive3D;
10
12{
13public:
14
16
17 Camera3D();
18 ~Camera3D();
19
20 virtual const char* GetTypeName() const override;
21 virtual void Start() override;
22 virtual void Destroy() override;
23 virtual void GatherProperties(std::vector<Property>& outProps) override;
24 virtual void GatherProxyDraws(std::vector<DebugDraw>& inoutDraws) override;
25
26 ProjectionMode GetProjectionMode() const;
27 void SetProjectionMode(ProjectionMode mode);
28 void EnablePerspective(bool perspective);
29 bool IsPerspectiveEnabled() const;
30
31 const glm::mat4& GetViewProjectionMatrix();
32 const glm::mat4& GetViewMatrix();
33 const glm::mat4& GetProjectionMatrix();
34
35 void ComputeMatrices();
36
37 glm::mat4 CalculateViewMatrix();
38 glm::mat4 CalculateInvViewMatrix();
39
40 float GetNearZ() const;
41 float GetFarZ() const;
42 float GetFieldOfView() const;
43 float GetFieldOfViewY() const;
44 float GetFieldOfViewX() const;
45 float GetOrthoWidth() const;
46 float GetOrthoHeight() const;
47 float GetAspectRatio() const;
48
49 float GetNearWidth() const;
50 float GetNearHeight() const;
51 float GetPriority() const;
52 bool GetIsMainCamera() const;
53
54 void SetNearZ(float nearZ);
55 void SetFarZ(float farZ);
56 void SetAspectRatio(float aspectRatio);
57 void SetFieldOfView(float fovY);
58 void SetOrthoWidth(float width);
59 void SetPriority(float priority);
60 void SetIsMainCamera(bool state);
61
62
63 glm::vec3 WorldToScreenPosition(glm::vec3 worldPos);
64 glm::vec3 ScreenToWorldPosition(int32_t x, int32_t y);
65 glm::vec3 TraceScreenToWorld(int32_t x, int32_t y, uint8_t colMask, RayTestResult& rayResult);
66
67 const bool IsEditorCamera();
68
69protected:
70
73 glm::mat4 mViewMatrix;
76
77 float mNear = 0.25f;
78 float mFar = 4096.0f;
79 float mFovY = 70.0f;
80 float mOrthoWidth = 12.8f;
81 float mPriority = 0.0f;
82 bool mMainCamera = false;
83
84 float mAspectRatio = 16.0f / 9.0f;
85};
ProjectionMode
Definition Enums.h:27
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
Definition Camera3d.h:12
DECLARE_NODE(Camera3D, Node3D)
ProjectionMode mProjectionMode
Definition Camera3d.h:71
glm::mat4 mViewMatrix
Definition Camera3d.h:73
glm::mat4 mProjectionMatrix
Definition Camera3d.h:74
glm::mat4 mViewProjectionMatrix
Definition Camera3d.h:72
glm::mat4 mStandardViewProjectionMatrix
Definition Camera3d.h:75
Definition Node3d.h:14
virtual const char * GetTypeName() const override
Definition Node3d.cpp:119
virtual void Destroy() override
Definition Node3d.cpp:101
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition Node3d.cpp:124
virtual void GatherProxyDraws(std::vector< DebugDraw > &inoutDraws)
Definition Node3d.cpp:298
virtual void Start()
Definition Node.cpp:459
Definition Primitive3d.h:46
Definition EngineTypes.h:386