#pragma once #include "Camera.h" #include "OpenGLShape.h" #include "ShaderManager.h" #include "TextureManager.h" #include #include #include #include #include #include #include #include #include class NifWidget : public QOpenGLWidget { Q_OBJECT public: NifWidget( std::shared_ptr nifFile, MOBase::IOrganizer* organizer, bool debugContext = false, QWidget* parent = nullptr, Qt::WindowFlags f = {0}); ~NifWidget(); NifWidget(const NifWidget&) = delete; NifWidget(NifWidget&&) = delete; NifWidget& operator=(const NifWidget&) = delete; NifWidget& operator=(NifWidget&&) = delete; protected: void mousePressEvent(QMouseEvent* event) override; void mouseMoveEvent(QMouseEvent* event) override; void wheelEvent(QWheelEvent* event) override; void initializeGL() override; void paintGL() override; void resizeGL(int w, int h) override; private: void cleanup(); void updateCamera(); inline static QWeakPointer SharedCamera; std::shared_ptr m_NifFile; MOBase::IOrganizer* m_MOInfo = nullptr; std::unique_ptr m_TextureManager; std::unique_ptr m_ShaderManager; QOpenGLDebugLogger* m_Logger = nullptr; std::vector m_GLShapes; QSharedPointer m_Camera; QMatrix4x4 m_ViewMatrix; QMatrix4x4 m_ProjectionMatrix; int m_ViewportWidth; int m_ViewportHeight; QPoint m_MousePos; };