From 0ff2b629e0f6cef878d123556ed3f1860b3801a4 Mon Sep 17 00:00:00 2001 From: codereader Date: Mon, 22 Mar 2021 09:34:09 +0100 Subject: [PATCH] #5532: Add tiling plane test model. Source view is collapsed at the beginning --- install/bitmaps/tiles.png | Bin 0 -> 10925 bytes install/resources/preview/tiles.ase | 122 +++++++++++++++++++++++ radiant/ui/materials/MaterialEditor.cpp | 2 +- radiant/ui/materials/MaterialPreview.cpp | 10 +- radiant/ui/materials/MaterialPreview.h | 1 + 5 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 install/bitmaps/tiles.png create mode 100644 install/resources/preview/tiles.ase diff --git a/install/bitmaps/tiles.png b/install/bitmaps/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..44b024bc031f9d4ceb5de1ef952e7af0d65291b3 GIT binary patch literal 10925 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 literal 0 HcmV?d00001 diff --git a/install/resources/preview/tiles.ase b/install/resources/preview/tiles.ase new file mode 100644 index 0000000000..5f609d5d7f --- /dev/null +++ b/install/resources/preview/tiles.ase @@ -0,0 +1,122 @@ +*3DSMAX_ASCIIEXPORT 200 +*COMMENT "DarkRadiant ASCII Scene Export(*.ase)" +*SCENE { + *SCENE_FILENAME "unnamed.map" + *SCENE_FIRSTFRAME 0 + *SCENE_LASTFRAME 100 + *SCENE_FRAMESPEED 30 + *SCENE_TICKSPERFRAME 160 + *SCENE_BACKGROUND_STATIC 0.0000 0.0000 0.0000 + *SCENE_AMBIENT_STATIC 0.0000 0.0000 0.0000 +} +*MATERIAL_LIST { + *MATERIAL_COUNT 1 + *MATERIAL 0 { + *MATERIAL_NAME "Plane" + *MATERIAL_CLASS "Standard" + *MATERIAL_AMBIENT 0.5882 0.5882 0.5882 + *MATERIAL_DIFFUSE 0.5882 0.5882 0.5882 + *MATERIAL_SPECULAR 0.9000 0.9000 0.9000 + *MATERIAL_SHINE 0.1000 + *MATERIAL_SHINESTRENGTH 0.0000 + *MATERIAL_TRANSPARENCY 0.0000 + *MATERIAL_WIRESIZE 1.0000 + *MATERIAL_SHADING Blinn + *MATERIAL_XP_FALLOFF 0.0000 + *MATERIAL_SELFILLUM 0.0000 + *MATERIAL_FALLOFF In + *MATERIAL_XP_TYPE Filter + *MAP_DIFFUSE { + *MAP_NAME "Plane" + *MAP_CLASS "Bitmap" + *MAP_SUBNO 1 + *MAP_AMOUNT 1.0000 + *BITMAP "\\base\material" + *MAP_TYPE Screen + *UVW_U_OFFSET 0.0000 + *UVW_V_OFFSET 0.0000 + *UVW_U_TILING 1.0000 + *UVW_V_TILING 1.0000 + *UVW_ANGLE 0.0000 + *UVW_BLUR 1.0000 + *UVW_BLUR_OFFSET 0.0000 + *UVW_NOUSE_AMT 1.0000 + *UVW_NOISE_SIZE 1.0000 + *UVW_NOISE_LEVEL 1 + *UVW_NOISE_PHASE 0.0000 + *BITMAP_FILTER Pyramidal + } + } +} +*GEOMOBJECT { + *NODE_NAME "mesh0" + *NODE_TM { + *NODE_NAME "mesh0" + *INHERIT_POS 0 0 0 + *INHERIT_ROT 0 0 0 + *INHERIT_SCL 0 0 0 + *TM_ROW0 1.0000 0.0000 0.0000 + *TM_ROW1 0.0000 1.0000 0.0000 + *TM_ROW2 0.0000 0.0000 1.0000 + *TM_ROW3 0.0000 0.0000 0.0000 + *TM_POS 0.0000 0.0000 0.0000 + *TM_ROTAXIS 0.0000 0.0000 0.0000 + *TM_ROTANGLE 0.0000 + *TM_SCALE 1.0000 1.0000 1.0000 + *TM_SCALEAXIS 0.0000 0.0000 0.0000 + *TM_SCALEAXISANG 0.0000 + } + *MESH { + *TIMEVALUE 0 + *MESH_NUMVERTEX 4 + *MESH_NUMFACES 2 + *MESH_VERTEX_LIST { + *MESH_VERTEX 0 -105.781 -116 -21.7808 + *MESH_VERTEX 1 105.781 -116 21.7808 + *MESH_VERTEX 2 -105.781 116 -21.7808 + *MESH_VERTEX 3 105.781 116 21.7808 + } + *MESH_FACE_LIST { + *MESH_FACE 0: A: 0 B: 1 C: 2 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 + *MESH_FACE 1: A: 1 B: 3 C: 2 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 + } + *MESH_NUMTVERTEX 4 + *MESH_TVERTLIST { + *MESH_TVERT 0 0 -0 0.0000 + *MESH_TVERT 1 3 -0 0.0000 + *MESH_TVERT 2 0 -3 0.0000 + *MESH_TVERT 3 3 -3 0.0000 + } + *MESH_NUMTVFACES 2 + *MESH_TFACELIST { + *MESH_TFACE 0 0 1 2 + *MESH_TFACE 1 1 3 2 + } + *MESH_NUMCVERTEX 4 + *MESH_CVERTLIST { + *MESH_VERTCOL 0 1 1 1 + *MESH_VERTCOL 1 1 1 1 + *MESH_VERTCOL 2 1 1 1 + *MESH_VERTCOL 3 1 1 1 + } + *MESH_NUMCVFACES 2 + *MESH_CFACELIST { + *MESH_CFACE 0 0 1 2 + *MESH_CFACE 1 1 3 2 + } + *MESH_NORMALS { + *MESH_FACENORMAL 0 -0.201674 0 0.979453 + *MESH_VERTEXNORMAL 0 -0.201674 0 0.979453 + *MESH_VERTEXNORMAL 1 -0.201674 0 0.979453 + *MESH_VERTEXNORMAL 2 -0.201674 0 0.979453 + *MESH_FACENORMAL 1 -0.201674 0 0.979453 + *MESH_VERTEXNORMAL 1 -0.201674 0 0.979453 + *MESH_VERTEXNORMAL 3 -0.201674 0 0.979453 + *MESH_VERTEXNORMAL 2 -0.201674 0 0.979453 + } + } + *PROP_MOTIONBLUR 0 + *PROP_CASTSHADOW 1 + *PROP_RECVSHADOW 1 + *MATERIAL_REF 0 +} diff --git a/radiant/ui/materials/MaterialEditor.cpp b/radiant/ui/materials/MaterialEditor.cpp index 8751da2ae7..9a1c3788b6 100644 --- a/radiant/ui/materials/MaterialEditor.cpp +++ b/radiant/ui/materials/MaterialEditor.cpp @@ -160,7 +160,7 @@ MaterialEditor::MaterialEditor() : auto paneSizer = new wxBoxSizer(wxVERTICAL); paneSizer->Add(_sourceView, 1, wxGROW | wxEXPAND); sourceTextPanel->GetPane()->SetSizer(paneSizer); - sourceTextPanel->Expand(); + sourceTextPanel->Collapse(); previewPanel->GetSizer()->Add(_preview->getWidget(), 1, wxEXPAND); previewPanel->GetSizer()->Add(sourceTextPanel, 0, wxEXPAND); diff --git a/radiant/ui/materials/MaterialPreview.cpp b/radiant/ui/materials/MaterialPreview.cpp index bfb8994824..9194a6b805 100644 --- a/radiant/ui/materials/MaterialPreview.cpp +++ b/radiant/ui/materials/MaterialPreview.cpp @@ -65,8 +65,12 @@ void MaterialPreview::setupToolbar() _testModelSphereButton = toolbar->AddRadioTool(wxID_ANY, "", wxutil::GetLocalBitmap("sphere.png", wxART_TOOLBAR)); _testModelSphereButton->SetShortHelp(_("Show Sphere")); + _testModelTilesButton = toolbar->AddRadioTool(wxID_ANY, "", wxutil::GetLocalBitmap("tiles.png", wxART_TOOLBAR)); + _testModelTilesButton->SetShortHelp(_("Show Tiles")); + toolbar->Bind(wxEVT_TOOL, &MaterialPreview::onTestModelSelectionChanged, this, _testModelCubeButton->GetId()); toolbar->Bind(wxEVT_TOOL, &MaterialPreview::onTestModelSelectionChanged, this, _testModelSphereButton->GetId()); + toolbar->Bind(wxEVT_TOOL, &MaterialPreview::onTestModelSelectionChanged, this, _testModelTilesButton->GetId()); toolbar->Realize(); @@ -251,10 +255,14 @@ void MaterialPreview::setupTestModel() { _model = GlobalModelCache().getModelNodeForStaticResource("preview/cube.ase"); } - else // sphere + else if (_testModelSphereButton->IsToggled()) // sphere { _model = GlobalModelCache().getModelNodeForStaticResource("preview/sphere.ase"); } + else // Tiles + { + _model = GlobalModelCache().getModelNodeForStaticResource("preview/tiles.ase"); + } // The test model is a child of this entity _entity->addChildNode(_model); diff --git a/radiant/ui/materials/MaterialPreview.h b/radiant/ui/materials/MaterialPreview.h index 9205a839d5..f1a77f53aa 100644 --- a/radiant/ui/materials/MaterialPreview.h +++ b/radiant/ui/materials/MaterialPreview.h @@ -31,6 +31,7 @@ class MaterialPreview : wxToolBarToolBase* _testModelCubeButton; wxToolBarToolBase* _testModelSphereButton; + wxToolBarToolBase* _testModelTilesButton; public: MaterialPreview(wxWindow* parent);