Adapt to previous changes

- Tested version, runnable
This commit is contained in:
Linloir 2022-12-17 11:43:22 +08:00
parent edeaa7f3c6
commit 795b542dda
No known key found for this signature in database
GPG Key ID: 58EEB209A0F2C366
8 changed files with 106 additions and 40 deletions

View File

@ -115,12 +115,13 @@
<ClCompile Include="modelselectable.cpp" />
<ClCompile Include="modelselector.cpp" />
<ClCompile Include="modelsetter.cpp" />
<ClCompile Include="modelthumbnailwidget.cpp" />
<ClCompile Include="pagewidget.cpp" />
<ClCompile Include="pushbutton.cpp" />
<ClCompile Include="renderable.cpp" />
<ClCompile Include="roundedcornerwidget.cpp" />
<ClCompile Include="sceneviewer.cpp" />
<ClCompile Include="scrolllist.cpp" />
<ClCompile Include="scrolllistwidget.cpp" />
<ClCompile Include="shader.cpp" />
<ClCompile Include="sidebar.cpp" />
<ClCompile Include="texture.cpp" />
@ -148,15 +149,16 @@
<QtMoc Include="pagewidget.h" />
<QtMoc Include="pushbutton.h" />
<QtMoc Include="roundedcornerwidget.h" />
<ClInclude Include="scrolllist.h" />
<QtMoc Include="scrolllistwidget.h" />
<QtMoc Include="modelthumbnailwidget.h" />
<ClInclude Include="texture.h" />
<ClInclude Include="utils.h" />
<ClInclude Include="vbo.h" />
<ClInclude Include="ebo.h" />
<ClInclude Include="vertex.h" />
<ClInclude Include="vao.h" />
<ClInclude Include="modelselectable.h" />
<ClInclude Include="modelselector.h" />
<QtMoc Include="modelselectable.h" />
<QtMoc Include="modelselector.h" />
<ClInclude Include="modelsetter.h" />
<ClInclude Include="renderable.h" />
<ClInclude Include="shader.h" />

View File

@ -59,6 +59,24 @@
<Filter Include="Source Files\Qt Widgets\GUI Components">
<UniqueIdentifier>{1351d841-7665-48d3-9850-da0738823396}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Qt Widgets\Pages\Scene Editor\Object Selector">
<UniqueIdentifier>{5e6e1e89-1c77-4a89-92cc-d64ea2546961}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Qt Widgets\Pages\Scene Editor\Object Setter">
<UniqueIdentifier>{d2b9abbc-ef10-4990-96a1-a88f9c217dcf}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Qt Widgets\Pages\Scene Editor\Scene Viewer">
<UniqueIdentifier>{d6a38868-baed-45d5-9cbf-3faa3b563fa9}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Qt Widgets\Pages\Scene Editor\Scene Viewer">
<UniqueIdentifier>{4b5e61f5-3dfe-44d7-bfcc-cf5b70528b16}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Qt Widgets\Pages\Scene Editor\Object Selector">
<UniqueIdentifier>{995296ff-ac0c-4996-9692-c0e017e5fc03}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Qt Widgets\Pages\Scene Editor\Object Setter">
<UniqueIdentifier>{6c5ac0df-26ad-40ad-860c-3d0372b81094}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<QtRcc Include="mainwindow.qrc">
@ -108,25 +126,13 @@
<ClCompile Include="editorpage.cpp">
<Filter>Source Files\Qt Widgets\Pages\Scene Editor</Filter>
</ClCompile>
<ClCompile Include="modelselectable.cpp">
<Filter>Source Files\Qt Widgets\Pages\Scene Editor</Filter>
</ClCompile>
<ClCompile Include="modelselector.cpp">
<Filter>Source Files\Qt Widgets\Pages\Scene Editor</Filter>
</ClCompile>
<ClCompile Include="modelsetter.cpp">
<Filter>Source Files\Qt Widgets\Pages\Scene Editor</Filter>
</ClCompile>
<ClCompile Include="sceneviewer.cpp">
<Filter>Source Files\Qt Widgets\Pages\Scene Editor</Filter>
</ClCompile>
<ClCompile Include="framelesswindow.cpp">
<Filter>Source Files\Qt Widgets\GUI Components</Filter>
</ClCompile>
<ClCompile Include="pushbutton.cpp">
<Filter>Source Files\Qt Widgets\GUI Components</Filter>
</ClCompile>
<ClCompile Include="scrolllist.cpp">
<ClCompile Include="scrolllistwidget.cpp">
<Filter>Source Files\Qt Widgets\GUI Components</Filter>
</ClCompile>
<ClCompile Include="sidebar.cpp">
@ -144,6 +150,21 @@
<ClCompile Include="lineeditwidget.cpp">
<Filter>Source Files\Qt Widgets\GUI Components</Filter>
</ClCompile>
<ClCompile Include="modelselector.cpp">
<Filter>Source Files\Qt Widgets\Pages\Scene Editor\Object Selector</Filter>
</ClCompile>
<ClCompile Include="modelselectable.cpp">
<Filter>Source Files\Qt Widgets\Pages\Scene Editor\Object Selector</Filter>
</ClCompile>
<ClCompile Include="modelsetter.cpp">
<Filter>Source Files\Qt Widgets\Pages\Scene Editor\Object Setter</Filter>
</ClCompile>
<ClCompile Include="sceneviewer.cpp">
<Filter>Source Files\Qt Widgets\Pages\Scene Editor\Scene Viewer</Filter>
</ClCompile>
<ClCompile Include="modelthumbnailwidget.cpp">
<Filter>Source Files\Qt Widgets\Pages\Scene Editor\Object Selector</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="camera.h">
@ -182,26 +203,14 @@
<ClInclude Include="logger.h">
<Filter>Header Files\Utils</Filter>
</ClInclude>
<ClInclude Include="modelselectable.h">
<Filter>Header Files\Qt Widgets\Pages\Scene Editor</Filter>
</ClInclude>
<ClInclude Include="modelsetter.h">
<Filter>Header Files\Qt Widgets\Pages\Scene Editor</Filter>
</ClInclude>
<ClInclude Include="modelselector.h">
<Filter>Header Files\Qt Widgets\Pages\Scene Editor</Filter>
</ClInclude>
<ClInclude Include="scrolllist.h">
<Filter>Header Files\Qt Widgets\GUI Components</Filter>
<Filter>Header Files\Qt Widgets\Pages\Scene Editor\Object Setter</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<QtMoc Include="mainwindow.h">
<Filter>Header Files\Qt Widgets</Filter>
</QtMoc>
<QtMoc Include="sceneviewer.h">
<Filter>Header Files\Qt Widgets\Pages\Scene Editor</Filter>
</QtMoc>
<QtMoc Include="framelesswindow.h">
<Filter>Header Files\Qt Widgets\GUI Components</Filter>
</QtMoc>
@ -226,6 +235,21 @@
<QtMoc Include="lineeditwidget.h">
<Filter>Header Files\Qt Widgets\GUI Components</Filter>
</QtMoc>
<QtMoc Include="scrolllistwidget.h">
<Filter>Header Files\Qt Widgets\GUI Components</Filter>
</QtMoc>
<QtMoc Include="sceneviewer.h">
<Filter>Header Files\Qt Widgets\Pages\Scene Editor\Scene Viewer</Filter>
</QtMoc>
<QtMoc Include="modelselector.h">
<Filter>Header Files\Qt Widgets\Pages\Scene Editor\Object Selector</Filter>
</QtMoc>
<QtMoc Include="modelselectable.h">
<Filter>Header Files\Qt Widgets\Pages\Scene Editor\Object Selector</Filter>
</QtMoc>
<QtMoc Include="modelthumbnailwidget.h">
<Filter>Header Files\Qt Widgets\Pages\Scene Editor\Object Selector</Filter>
</QtMoc>
</ItemGroup>
<ItemGroup>
<None Include="fragmentshader.fs">

View File

@ -31,6 +31,11 @@ EditorPage::EditorPage(QWidget* parent) :
_mainWidget->setLayout(_mainLayout);
_titleLayout->addWidget(_mainWidget);
_mainWidget->show();
// Generate model selector
_modelSelector = new ModelSelector(_mainWidget);
_mainLayout->addWidget(_modelSelector);
_modelSelector->show();
// Generate scene viewer
_sceneViewerContainer = new RoundedCornerWidget(_mainWidget);

View File

@ -7,6 +7,7 @@
#include "pagewidget.h"
#include "sceneviewer.h"
#include "roundedcornerwidget.h"
#include "modelselector.h"
class EditorPage : public PageWidget {
@ -32,6 +33,8 @@ private:
QWidget* _mainWidget = nullptr;
QHBoxLayout* _mainLayout = nullptr;
ModelSelector* _modelSelector = nullptr;
RoundedCornerWidget* _sceneViewerContainer = nullptr;
QVBoxLayout* _sceneViewerContainerLayout = nullptr;
SceneViewer* _sceneViewer = nullptr;

View File

@ -13,6 +13,7 @@ FramelessWindow::FramelessWindow(int cornerRadius, unsigned int attributes, QWid
{
setAttribute(Qt::WA_TranslucentBackground);
setWindowFlags(Qt::FramelessWindowHint);
setFocusPolicy(Qt::StrongFocus);
setMouseTracking(true);
setFocus();
@ -27,7 +28,7 @@ FramelessWindow::FramelessWindow(int cornerRadius, unsigned int attributes, QWid
setLayout(_stretchLayout);
// Set style sheet for window widget
QString windowWidgetStyleSheet = "QWidget#windowWidget{background-color:" + _backgroundColor.name() + ";border-radius:" + QString::number(_cornerRadius) + "px;}";
QString windowWidgetStyleSheet = "QWidget#windowWidget{background-color:" + _backgroundColor.name(QColor::HexArgb) + ";border-radius:" + QString::number(_cornerRadius) + "px;}";
_windowWidget->setStyleSheet(windowWidgetStyleSheet);
// Set shadow for window widget
@ -119,7 +120,7 @@ void FramelessWindow::initializeWindowUI() {
_windowBorder = new QWidget(this);
_windowBorder->setObjectName("windowBorder");
QString windowBorderStyleSheet =
"QWidget#windowBorder{background-color:#00FFFFFF;border:1.5px solid " + _borderColor.name() + ";border-radius:" + QString::number(_cornerRadius) + "px;}";
"QWidget#windowBorder{background-color:#00FFFFFF;border:1.5px solid " + _borderColor.name(QColor::HexArgb) + ";border-radius:" + QString::number(_cornerRadius) + "px;}";
_windowBorder->setStyleSheet(windowBorderStyleSheet);
_windowBorder->setAttribute(Qt::WA_TransparentForMouseEvents);
_windowBorder->move(_windowWidget->pos() - QPoint(1, 1));
@ -170,7 +171,7 @@ void FramelessWindow::controlWindowScale() {
_windowShadow->setEnabled(false);
_windowBorder->hide();
QString windowWidgetStyleSheet = "QWidget#windowWidget{background-color:" + _backgroundColor.name() + ";}";
QString windowWidgetStyleSheet = "QWidget#windowWidget{background-color:" + _backgroundColor.name(QColor::HexArgb) + ";}";
_windowWidget->setStyleSheet(windowWidgetStyleSheet);
_stretchLayout->setContentsMargins(0, 0, 0, 0);
@ -194,7 +195,7 @@ void FramelessWindow::controlWindowScale() {
_windowShadow->setEnabled(true);
_windowBorder->show();
QString windowWidgetStyleSheet = "QWidget#windowWidget{background-color:" + _backgroundColor.name() + ";border-radius:" + QString::number(_cornerRadius) + "px;}";
QString windowWidgetStyleSheet = "QWidget#windowWidget{background-color:" + _backgroundColor.name(QColor::HexArgb) + ";border-radius:" + QString::number(_cornerRadius) + "px;}";
_windowWidget->setStyleSheet(windowWidgetStyleSheet);
QPainterPath path;

View File

@ -13,6 +13,13 @@ Model::~Model() {
// TODO: Maybe delete all meshes?
}
Model::Model(std::vector<Mesh>&& meshes, std::vector<Texture>&& textures, std::string directory) {
_meshes = std::move(meshes);
_texturesLoaded = std::move(textures);
_directory = directory;
_status = LOADED;
}
// file path is ...\\...\\.obj, and processnode & processmesh have been called here
void Model::loadModel(std::string path) {
Logger::info("Loading model from path: " + path);
@ -177,3 +184,25 @@ void Model::render(const ShaderProgram& shader) const {
_meshes[i].render(shader);
}
}
Model* Model::copyToCurrentContext() const {
// Reload all textures
std::vector<Texture> newTextures;
for (unsigned int i = 0; i < _texturesLoaded.size(); i++) {
// Load texture
Texture newTexture = Texture(_texturesLoaded[i].type(), _directory + '/' + _texturesLoaded[i].path());
newTextures.push_back(newTexture);
}
// Copy all meshes
std::vector<Mesh> newMeshes;
for (unsigned int i = 0; i < _meshes.size(); i++) {
// Copy mesh
Mesh newMesh = Mesh(_meshes[i].vertices(), _meshes[i].indices(), newTextures);
newMeshes.push_back(newMesh);
}
// Create new model
Model* newModel = new Model(std::move(newMeshes), std::move(newTextures), _directory);
return newModel;
}

View File

@ -23,8 +23,16 @@ public:
Model(std::string path);
~Model();
private:
Model(std::vector<Mesh>&& meshes, std::vector<Texture>&& textures, std::string directory);
public:
inline MODELSTATUS status() const { return _status; }
inline int meshCount() const { return _meshes.size(); }
inline int textureCount() const { return _texturesLoaded.size(); }
inline std::string directory() const { return _directory; }
Model* copyToCurrentContext() const;
private:
void loadModel(std::string path);

View File

@ -5,7 +5,6 @@
#include <qresource.h>
#include <qurl.h>
#include <qdir.h>
#include <qpainterpath.h>
#include "vbo.h"
#include "vao.h"
@ -66,11 +65,6 @@ void SceneViewer::initializeGL() {
_shaderProgram.attachShader(fragmentShader);
vertexShader.dispose();
fragmentShader.dispose();
Model* backpackModel = new Model("E:\\Repositories\\CollegeProjects\\CGAssignments\\FinalProject\\Models\\backpack\\backpack.obj");
Logger::info("Model loaded");
Renderable backpack(backpackModel);
_objects.push_back(backpack);
_camera.setPosition(glm::vec3(0.0f, 0.0f, 10.0f));
}