Program Listing for File viewport_dock.h

Return to documentation for file (editor/gui/viewport_dock.h)

#pragma once

#include "script/interpreter.h"
#include "scene.h"

#include "vendor/ImGUI/imgui.h"
#include "vendor/ImGUI/imgui_impl_dx11.h"
#include "vendor/ImGUI/imgui_impl_win32.h"

class ViewportDock
{
public:
    struct ViewportDockSettings
    {
        bool m_IsActive = true;
        bool m_IsClosed;
        float m_AspectRatio;
    };

private:
    Scene* m_EditorCamera;
    Scene* m_EditorGrid;
    ViewportDockSettings m_ViewportDockSettings;
    Matrix m_ApplyCameraMatrix;

    bool m_IsCameraMoving = false;

    float m_EditorCameraPitch = 0.0f;
    float m_EditorCameraYaw = 0.0f;
    float m_EditorCameraSpeed = 50.0f;
    float m_EditorCameraSensitivity = 300.0f;
    float m_EditorCameraRotationNormalizer = 1000.0f;
    float m_EditorCameraSmoothness = 0.9f;

public:
    ViewportDock(const JSON::json& viewportJSON);
    ViewportDock(ViewportDock&) = delete;
    ~ViewportDock() = default;

    void draw(float deltaMilliseconds);

    ViewportDockSettings& getSettings() { return m_ViewportDockSettings; }
    void setActive(bool enabled) { m_ViewportDockSettings.m_IsActive = enabled; }
};