Skip to content

File Camera.h

File List > scene > Camera.h

Go to the documentation of this file

#pragma once
#include "ID.h"
#include "Transform.h"
#include "DebugMesh.h"

#include <vector>

/*#include "Sprite.h"*/

class Camera : public ObjectID, public Transform3D
{
public:
    float cam_w;      
    float cam_h;      
    float cam_pers;   
    float cam_near;   
    float cam_far;    
    float cam_foc;    

    glm::vec3 cam_tar = glm::vec3(0.0f, 0.0f, 0.0f); 

    bool is_frustum_changed = true;          
    glm::mat4 cam_frustum = glm::mat4(-1.0f); 

public:
    Camera(float w, float h, float per, float n, float f);

    Camera();

public:
    // TODO: use std::array
    std::vector<float> cam_floatData; 

    void GenFloatData();

    void ChangeCamRatio(float w, float h);

    void ChangeCamRatio(const glm::vec2& size);

    void ChangeCamPersp(float persp);

    void SetCamPos(const glm::vec3& _pos);

    void SetTarPos(const glm::vec3& _pos);

    void SetCamTrans(const glm::mat4& _trans, bool pos = true, bool rot = true);

    void* GetTransform()    override { return dynamic_cast<Transform*>(GetTransformPtr()); }

public:
    ~Camera();
};