/
MaterialPreview.h
77 lines (58 loc) · 1.83 KB
/
MaterialPreview.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#pragma once
#include <sigc++/connection.h>
#include "ishaders.h"
#include "modelskin.h"
#include "scene/BasicRootNode.h"
#include "TestModelSkin.h"
#include "wxutil/preview/RenderPreview.h"
namespace ui
{
class MaterialPreview :
public wxutil::RenderPreview
{
private:
bool _sceneIsReady;
MaterialPtr _material;
sigc::connection _materialChanged;
scene::IMapRootNodePtr _rootNode;
scene::INodePtr _entity; // The func_static entity
scene::INodePtr _model; // The textured model
scene::INodePtr _room; // The textured room
scene::INodePtr _light; // The light
std::shared_ptr<TestModelSkin> _testModelSkin;
std::shared_ptr<TestModelSkin> _testRoomSkin;
float _defaultCamDistanceFactor;
wxToolBarToolBase* _testModelCubeButton;
wxToolBarToolBase* _testModelSphereButton;
wxToolBarToolBase* _testModelTilesButton;
sigc::signal<void> _sigLightChanged;
public:
MaterialPreview(wxWindow* parent);
virtual ~MaterialPreview();
const MaterialPtr& getMaterial();
void setMaterial(const MaterialPtr& material);
void enableFrobHighlight(bool enable);
// Light management
std::string getLightClassname();
void setLightClassname(const std::string& className);
Vector3 getLightColour();
void setLightColour(const Vector3& colour);
void resetLightColour();
sigc::signal<void>& signal_LightChanged();
protected:
bool canDrawGrid() override;
void setupSceneGraph() override;
RenderStateFlags getRenderFlagsFill() override;
private:
void onMaterialChanged();
bool onPreRender() override;
void prepareScene();
void setupToolbar();
void setupTestModel();
void setupRoom();
void updateModelSkin();
void updateRoomSkin();
std::string getRoomMaterial();
void onTestModelSelectionChanged(wxCommandEvent& ev);
};
}