Skip to content

File Viewport.h

File List > layer > Viewport.h

Go to the documentation of this file

#pragma once
#include "ImguiLayer.h"

#include "Guizmo/ImGuizmo.h"

class Viewport : public ImguiLayer
{
public:

    bool display_axis{ true };
    bool display_grid{ true };
    bool display_trans_handle{ true };

    static ImGuizmo::MODE trans_mod;
    static ImGuizmo::OPERATION handle_mod;

public:

    enum HoverStatus
    {
        OnViewport = 0,
        OnHandle = 1 << 1,
        OnCameraAxis = 1 << 2,
    };

    HoverStatus viewport_status{ OnViewport };

public:
    Viewport();
    Viewport(const std::string& name);
    Viewport(const std::string& name, GLuint texID);
    Viewport(const std::string& name, GLuint texID, const ImVec2& vp_size);
    ~Viewport();
public:

    void RegisterEvents(EventPool& evt) override;
    void RenderLayer(const Context& ctx, EventPool& evt) override;

private:

    void RenderGrids(const Context& ctx);
    void RenderAxis(const Context& ctx);
    void RenderHandle(const Context& ctx);
};