/
MaterialPreview.h
63 lines (47 loc) · 1.41 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
#pragma once
#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;
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;
public:
MaterialPreview(wxWindow* parent);
virtual ~MaterialPreview();
const MaterialPtr& getMaterial();
void setMaterial(const MaterialPtr& material);
void onMaterialChanged();
protected:
bool canDrawGrid() override;
void setupSceneGraph() override;
RenderStateFlags getRenderFlagsFill() override;
private:
bool onPreRender() override;
void prepareScene();
void setupToolbar();
void setupTestModel();
void setupRoom();
void updateModelSkin();
void updateRoomSkin();
std::string getRoomMaterial();
void onTestModelSelectionChanged(wxCommandEvent& ev);
};
}