From 69caa98d0488e98f10b307bac941b585a9c0a689 Mon Sep 17 00:00:00 2001 From: peri4 Date: Tue, 14 Feb 2023 15:06:48 +0300 Subject: [PATCH] bugs --- src/core/core/glmaterial.cpp | 1 + src/core/scene/glscene.cpp | 1 + src/core/scene/glscene.h | 3 +- src/core/view/qglview.cpp | 7 ++++ src/core/view/qglview.h | 2 +- src/widgets/textures_editor.cpp | 2 + src/widgets/textures_editor.ui | 69 +++++++++++++++++++++++++++++++-- 7 files changed, 79 insertions(+), 6 deletions(-) diff --git a/src/core/core/glmaterial.cpp b/src/core/core/glmaterial.cpp index 324aee1..1ec5523 100644 --- a/src/core/core/glmaterial.cpp +++ b/src/core/core/glmaterial.cpp @@ -43,6 +43,7 @@ void Map::setBitmapPath(const QString & p) { void Map::load(TextureManager * tm) { _bitmap_hash = 0; if (!bitmap_path.isEmpty()) tm->loadTextureImage(bitmap_path, _type == mtNormal, bake_options, &_bitmap_hash); + _changed = false; } diff --git a/src/core/scene/glscene.cpp b/src/core/scene/glscene.cpp index 3f33a39..cc1d58f 100644 --- a/src/core/scene/glscene.cpp +++ b/src/core/scene/glscene.cpp @@ -440,6 +440,7 @@ void Scene::prepareTree(ObjectBase * o) { case ObjectBase::glLight: { Light * l = globject_cast(co); lights_used[l->light_type] << l; + if (l->light_map._changed) need_reload_materials = true; } break; case ObjectBase::glMesh: if (co->mesh()) { diff --git a/src/core/scene/glscene.h b/src/core/scene/glscene.h index b0365d8..dc4f39e 100644 --- a/src/core/scene/glscene.h +++ b/src/core/scene/glscene.h @@ -94,6 +94,8 @@ public: void destroy(QOpenGLExtraFunctions * f); void destroyUnused(QOpenGLExtraFunctions * f); + void setLightsChanged() { lights_changed = tree_changed = true; } + protected: void prepareTree(ObjectBase * o); void gatherSelection(); @@ -107,7 +109,6 @@ protected: void setTreeChanged(); void setTreeStructChanged(); void setMaterialsChanged() { mat_changed = true; } - void setLightsChanged() { lights_changed = tree_changed = true; } void setObjectMeshChanged(ObjectBase * o); diff --git a/src/core/view/qglview.cpp b/src/core/view/qglview.cpp index 5a932b5..9db6f83 100644 --- a/src/core/view/qglview.cpp +++ b/src/core/view/qglview.cpp @@ -136,6 +136,13 @@ QList QGLView::selectedCameras() const { } +void QGLView::reloadTextures() { + renderer_.markReloadMaterials(); + renderer_.recreateMaterialThumbnails(true); + scene_->setLightsChanged(); +} + + void QGLView::resizeEvent(QResizeEvent * e) { renderLater(); mouse.resize(); diff --git a/src/core/view/qglview.h b/src/core/view/qglview.h index 24ad217..bd08ee0 100644 --- a/src/core/view/qglview.h +++ b/src/core/view/qglview.h @@ -135,7 +135,7 @@ public: ObjectBase * selectedObject() const { return scene_->selectedObject(); } TextureManager * textureManager() { return renderer_.textures_manager; } - void reloadTextures() { renderer_.markReloadTextures(); } + void reloadTextures(); Scene * scene() { return scene_; } void focusOn(const Box3D & bb); diff --git a/src/widgets/textures_editor.cpp b/src/widgets/textures_editor.cpp index 4ecdf78..a56f378 100644 --- a/src/widgets/textures_editor.cpp +++ b/src/widgets/textures_editor.cpp @@ -31,6 +31,8 @@ TexturesEditor::TexturesEditor(QWidget * parent): QWidget(parent) { ui = new Ui::TexturesEditor(); ui->setupUi(this); + ui->scrollArea->viewport()->setAutoFillBackground(false); + ui->scrollAreaWidgetContents->setAutoFillBackground(false); ui->labelMissed->hide(); view = 0; } diff --git a/src/widgets/textures_editor.ui b/src/widgets/textures_editor.ui index 84d43d6..1a7d987 100644 --- a/src/widgets/textures_editor.ui +++ b/src/widgets/textures_editor.ui @@ -148,13 +148,74 @@ - - - Missed files: + + + + 0 + 0 + - + + + 1 + 1 + + + + QFrame::NoFrame + + + Qt::ScrollBarAlwaysOff + + + QAbstractScrollArea::AdjustToContents + + true + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + 0 + 0 + 435 + 84 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + Missed files: + + + true + + + + +