mirror of
https://github.com/Linloir/SceneEditor.git
synced 2025-12-16 23:18:12 +08:00
Adapt to previous changes
- Tested version, runnable
This commit is contained in:
parent
edeaa7f3c6
commit
795b542dda
@ -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" />
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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));
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user