Skip to content

Commit

Permalink
#5565: MaterialPreview is automatically refreshing its view when the …
Browse files Browse the repository at this point in the history
…material is changed.

Right now nothing is happening since the signal in CSHader is not emitted by anything.
  • Loading branch information
codereader committed Mar 25, 2021
1 parent 4bedaeb commit 74bd344
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 7 deletions.
2 changes: 0 additions & 2 deletions radiant/ui/materials/editor/MaterialEditor.cpp
Expand Up @@ -2045,8 +2045,6 @@ void MaterialEditor::_onSortRequestChanged(wxCommandEvent& ev)

void MaterialEditor::onMaterialChanged()
{
_preview->onMaterialChanged();

updateMaterialButtonSensitivity();
}

Expand Down
12 changes: 9 additions & 3 deletions radiant/ui/materials/editor/MaterialPreview.cpp
Expand Up @@ -121,7 +121,16 @@ void MaterialPreview::setMaterial(const MaterialPtr& material)
{
bool hadMaterial = _material != nullptr;

_materialChanged.disconnect();

_material = material;

if (_material)
{
_materialChanged = _material->sig_materialChanged().connect(
sigc::mem_fun(this, &MaterialPreview::onMaterialChanged));
}

_sceneIsReady = false;

if (_model)
Expand All @@ -147,9 +156,6 @@ void MaterialPreview::setMaterial(const MaterialPtr& material)

void MaterialPreview::onMaterialChanged()
{
if (!_material) return;

_renderSystem->onMaterialChanged(_material->getName());
queueDraw();
}

Expand Down
5 changes: 3 additions & 2 deletions radiant/ui/materials/editor/MaterialPreview.h
@@ -1,5 +1,6 @@
#pragma once

#include <sigc++/connection.h>
#include "ishaders.h"
#include "modelskin.h"
#include "scene/BasicRootNode.h"
Expand All @@ -16,6 +17,7 @@ class MaterialPreview :
bool _sceneIsReady;

MaterialPtr _material;
sigc::connection _materialChanged;

scene::IMapRootNodePtr _rootNode;

Expand All @@ -41,14 +43,13 @@ class MaterialPreview :
const MaterialPtr& getMaterial();
void setMaterial(const MaterialPtr& material);

void onMaterialChanged();

protected:
bool canDrawGrid() override;
void setupSceneGraph() override;
RenderStateFlags getRenderFlagsFill() override;

private:
void onMaterialChanged();
bool onPreRender() override;
void prepareScene();
void setupToolbar();
Expand Down

0 comments on commit 74bd344

Please sign in to comment.