Skip to content

Commit

Permalink
#5532: Preparations to draw a background room in the preview
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Mar 22, 2021
1 parent 0a59f33 commit 4ab09da
Show file tree
Hide file tree
Showing 4 changed files with 335 additions and 3 deletions.
288 changes: 288 additions & 0 deletions install/resources/preview/room_cuboid.ase
@@ -0,0 +1,288 @@
*3DSMAX_ASCIIEXPORT 200
*COMMENT "DarkRadiant ASCII Scene Export(*.ase)"
*SCENE {
*SCENE_FILENAME "maps/room_cuboid.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 "Room"
*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 "Room"
*MAP_CLASS "Bitmap"
*MAP_SUBNO 1
*MAP_AMOUNT 1.0000
*BITMAP "\\base\textures\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 36
*MESH_NUMFACES 12
*MESH_VERTEX_LIST {
*MESH_VERTEX 0 160 160 256
*MESH_VERTEX 1 160 -160 256
*MESH_VERTEX 2 -160 -160 256
*MESH_VERTEX 3 -160 160 256
*MESH_VERTEX 4 160 160 256
*MESH_VERTEX 5 -160 -160 256
*MESH_VERTEX 6 160 160 -96
*MESH_VERTEX 7 160 160 256
*MESH_VERTEX 8 -160 160 256
*MESH_VERTEX 9 -160 160 -96
*MESH_VERTEX 10 160 160 -96
*MESH_VERTEX 11 -160 160 256
*MESH_VERTEX 12 160 -160 256
*MESH_VERTEX 13 160 160 256
*MESH_VERTEX 14 160 160 -96
*MESH_VERTEX 15 160 -160 -96
*MESH_VERTEX 16 160 -160 256
*MESH_VERTEX 17 160 160 -96
*MESH_VERTEX 18 -160 160 -96
*MESH_VERTEX 19 -160 -160 -96
*MESH_VERTEX 20 160 -160 -96
*MESH_VERTEX 21 160 160 -96
*MESH_VERTEX 22 -160 160 -96
*MESH_VERTEX 23 160 -160 -96
*MESH_VERTEX 24 -160 -160 256
*MESH_VERTEX 25 160 -160 256
*MESH_VERTEX 26 160 -160 -96
*MESH_VERTEX 27 -160 -160 -96
*MESH_VERTEX 28 -160 -160 256
*MESH_VERTEX 29 160 -160 -96
*MESH_VERTEX 30 -160 160 256
*MESH_VERTEX 31 -160 -160 256
*MESH_VERTEX 32 -160 -160 -96
*MESH_VERTEX 33 -160 160 -96
*MESH_VERTEX 34 -160 160 256
*MESH_VERTEX 35 -160 -160 -96
}
*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: 3 B: 4 C: 5 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0
*MESH_FACE 2: A: 6 B: 7 C: 8 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0
*MESH_FACE 3: A: 9 B: 10 C: 11 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0
*MESH_FACE 4: A: 12 B: 13 C: 14 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0
*MESH_FACE 5: A: 15 B: 16 C: 17 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0
*MESH_FACE 6: A: 18 B: 19 C: 20 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0
*MESH_FACE 7: A: 21 B: 22 C: 23 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0
*MESH_FACE 8: A: 24 B: 25 C: 26 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0
*MESH_FACE 9: A: 27 B: 28 C: 29 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0
*MESH_FACE 10: A: 30 B: 31 C: 32 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0
*MESH_FACE 11: A: 33 B: 34 C: 35 AB: 0 BC: 0 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0
}
*MESH_NUMTVERTEX 36
*MESH_TVERTLIST {
*MESH_TVERT 0 2 -4.36364 0.0000
*MESH_TVERT 1 0 -4.36364 0.0000
*MESH_TVERT 2 0 -7.09091 0.0000
*MESH_TVERT 3 2 -7.09091 0.0000
*MESH_TVERT 4 2 -4.36364 0.0000
*MESH_TVERT 5 0 -7.09091 0.0000
*MESH_TVERT 6 4 -3 0.0000
*MESH_TVERT 7 4 -6.50232e-08 0.0000
*MESH_TVERT 8 2 -6.50232e-08 0.0000
*MESH_TVERT 9 2 -3 0.0000
*MESH_TVERT 10 4 -3 0.0000
*MESH_TVERT 11 2 -6.50232e-08 0.0000
*MESH_TVERT 12 2 -6.50232e-08 0.0000
*MESH_TVERT 13 0 -6.50232e-08 0.0000
*MESH_TVERT 14 0 -3 0.0000
*MESH_TVERT 15 2 -3 0.0000
*MESH_TVERT 16 2 -6.50232e-08 0.0000
*MESH_TVERT 17 0 -3 0.0000
*MESH_TVERT 18 2 1.36364 0.0000
*MESH_TVERT 19 0 1.36364 0.0000
*MESH_TVERT 20 0 -1.36364 0.0000
*MESH_TVERT 21 2 -1.36364 0.0000
*MESH_TVERT 22 2 1.36364 0.0000
*MESH_TVERT 23 0 -1.36364 0.0000
*MESH_TVERT 24 0 -6.50232e-08 0.0000
*MESH_TVERT 25 -2 -6.50232e-08 0.0000
*MESH_TVERT 26 -2 -3 0.0000
*MESH_TVERT 27 0 -3 0.0000
*MESH_TVERT 28 0 -6.50232e-08 0.0000
*MESH_TVERT 29 -2 -3 0.0000
*MESH_TVERT 30 2 -6.50232e-08 0.0000
*MESH_TVERT 31 0 -6.50232e-08 0.0000
*MESH_TVERT 32 0 -3 0.0000
*MESH_TVERT 33 2 -3 0.0000
*MESH_TVERT 34 2 -6.50232e-08 0.0000
*MESH_TVERT 35 0 -3 0.0000
}
*MESH_NUMTVFACES 12
*MESH_TFACELIST {
*MESH_TFACE 0 0 1 2
*MESH_TFACE 1 3 4 5
*MESH_TFACE 2 6 7 8
*MESH_TFACE 3 9 10 11
*MESH_TFACE 4 12 13 14
*MESH_TFACE 5 15 16 17
*MESH_TFACE 6 18 19 20
*MESH_TFACE 7 21 22 23
*MESH_TFACE 8 24 25 26
*MESH_TFACE 9 27 28 29
*MESH_TFACE 10 30 31 32
*MESH_TFACE 11 33 34 35
}
*MESH_NUMCVERTEX 36
*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_VERTCOL 4 1 1 1
*MESH_VERTCOL 5 1 1 1
*MESH_VERTCOL 6 1 1 1
*MESH_VERTCOL 7 1 1 1
*MESH_VERTCOL 8 1 1 1
*MESH_VERTCOL 9 1 1 1
*MESH_VERTCOL 10 1 1 1
*MESH_VERTCOL 11 1 1 1
*MESH_VERTCOL 12 1 1 1
*MESH_VERTCOL 13 1 1 1
*MESH_VERTCOL 14 1 1 1
*MESH_VERTCOL 15 1 1 1
*MESH_VERTCOL 16 1 1 1
*MESH_VERTCOL 17 1 1 1
*MESH_VERTCOL 18 1 1 1
*MESH_VERTCOL 19 1 1 1
*MESH_VERTCOL 20 1 1 1
*MESH_VERTCOL 21 1 1 1
*MESH_VERTCOL 22 1 1 1
*MESH_VERTCOL 23 1 1 1
*MESH_VERTCOL 24 1 1 1
*MESH_VERTCOL 25 1 1 1
*MESH_VERTCOL 26 1 1 1
*MESH_VERTCOL 27 1 1 1
*MESH_VERTCOL 28 1 1 1
*MESH_VERTCOL 29 1 1 1
*MESH_VERTCOL 30 1 1 1
*MESH_VERTCOL 31 1 1 1
*MESH_VERTCOL 32 1 1 1
*MESH_VERTCOL 33 1 1 1
*MESH_VERTCOL 34 1 1 1
*MESH_VERTCOL 35 1 1 1
}
*MESH_NUMCVFACES 12
*MESH_CFACELIST {
*MESH_CFACE 0 0 1 2
*MESH_CFACE 1 3 4 5
*MESH_CFACE 2 6 7 8
*MESH_CFACE 3 9 10 11
*MESH_CFACE 4 12 13 14
*MESH_CFACE 5 15 16 17
*MESH_CFACE 6 18 19 20
*MESH_CFACE 7 21 22 23
*MESH_CFACE 8 24 25 26
*MESH_CFACE 9 27 28 29
*MESH_CFACE 10 30 31 32
*MESH_CFACE 11 33 34 35
}
*MESH_NORMALS {
*MESH_FACENORMAL 0 -0 -0 -1
*MESH_VERTEXNORMAL 0 -0 -0 -1
*MESH_VERTEXNORMAL 1 -0 -0 -1
*MESH_VERTEXNORMAL 2 -0 -0 -1
*MESH_FACENORMAL 1 -0 -0 -1
*MESH_VERTEXNORMAL 3 -0 -0 -1
*MESH_VERTEXNORMAL 4 -0 -0 -1
*MESH_VERTEXNORMAL 5 -0 -0 -1
*MESH_FACENORMAL 2 -0 -1 0
*MESH_VERTEXNORMAL 6 -0 -1 0
*MESH_VERTEXNORMAL 7 -0 -1 0
*MESH_VERTEXNORMAL 8 -0 -1 0
*MESH_FACENORMAL 3 -0 -1 0
*MESH_VERTEXNORMAL 9 -0 -1 0
*MESH_VERTEXNORMAL 10 -0 -1 0
*MESH_VERTEXNORMAL 11 -0 -1 0
*MESH_FACENORMAL 4 -1 -0 -0
*MESH_VERTEXNORMAL 12 -1 -0 -0
*MESH_VERTEXNORMAL 13 -1 -0 -0
*MESH_VERTEXNORMAL 14 -1 -0 -0
*MESH_FACENORMAL 5 -1 -0 -0
*MESH_VERTEXNORMAL 15 -1 -0 -0
*MESH_VERTEXNORMAL 16 -1 -0 -0
*MESH_VERTEXNORMAL 17 -1 -0 -0
*MESH_FACENORMAL 6 -0 -0 1
*MESH_VERTEXNORMAL 18 -0 -0 1
*MESH_VERTEXNORMAL 19 -0 -0 1
*MESH_VERTEXNORMAL 20 -0 -0 1
*MESH_FACENORMAL 7 -0 -0 1
*MESH_VERTEXNORMAL 21 -0 -0 1
*MESH_VERTEXNORMAL 22 -0 -0 1
*MESH_VERTEXNORMAL 23 -0 -0 1
*MESH_FACENORMAL 8 -0 1 -0
*MESH_VERTEXNORMAL 24 -0 1 -0
*MESH_VERTEXNORMAL 25 -0 1 -0
*MESH_VERTEXNORMAL 26 -0 1 -0
*MESH_FACENORMAL 9 -0 1 -0
*MESH_VERTEXNORMAL 27 -0 1 -0
*MESH_VERTEXNORMAL 28 -0 1 -0
*MESH_VERTEXNORMAL 29 -0 1 -0
*MESH_FACENORMAL 10 1 -0 -0
*MESH_VERTEXNORMAL 30 1 -0 -0
*MESH_VERTEXNORMAL 31 1 -0 -0
*MESH_VERTEXNORMAL 32 1 -0 -0
*MESH_FACENORMAL 11 1 -0 -0
*MESH_VERTEXNORMAL 33 1 -0 -0
*MESH_VERTEXNORMAL 34 1 -0 -0
*MESH_VERTEXNORMAL 35 1 -0 -0
}
}
*PROP_MOTIONBLUR 0
*PROP_CASTSHADOW 1
*PROP_RECVSHADOW 1
*MATERIAL_REF 0
}
37 changes: 36 additions & 1 deletion radiant/ui/materials/MaterialPreview.cpp
Expand Up @@ -22,9 +22,12 @@ MaterialPreview::MaterialPreview(wxWindow* parent) :
_sceneIsReady(false),
_defaultCamDistanceFactor(2.0f)
{
_testModelSkin.reset(new TestModelSkin);
_testModelSkin.reset(new TestModelSkin("model"));
GlobalModelSkinCache().addNamedSkin(_testModelSkin);

_testRoomSkin.reset(new TestModelSkin("room"));
GlobalModelSkinCache().addNamedSkin(_testRoomSkin);

setupToolbar();
}

Expand All @@ -35,6 +38,12 @@ MaterialPreview::~MaterialPreview()
GlobalModelSkinCache().removeSkin(_testModelSkin->getName());
_testModelSkin.reset();
}

if (_testRoomSkin)
{
GlobalModelSkinCache().removeSkin(_testRoomSkin->getName());
_testRoomSkin.reset();
}
}

void MaterialPreview::setupToolbar()
Expand Down Expand Up @@ -74,6 +83,17 @@ void MaterialPreview::updateModelSkin()
}
}

void MaterialPreview::updateRoomSkin()
{
// Let the model update its remaps
auto skinnedRoom = std::dynamic_pointer_cast<SkinnedModel>(_room);

if (skinnedRoom)
{
skinnedRoom->skinChanged(_testRoomSkin->getName());
}
}

void MaterialPreview::setMaterial(const MaterialPtr& material)
{
bool hadMaterial = _material != nullptr;
Expand Down Expand Up @@ -149,6 +169,8 @@ void MaterialPreview::setupSceneGraph()
{
_rootNode = std::make_shared<scene::BasicRootNode>();

setupRoom();

_entity = GlobalEntityModule().createEntity(
GlobalEntityClassManager().findClass(FUNC_STATIC_CLASS));

Expand Down Expand Up @@ -180,6 +202,19 @@ void MaterialPreview::setupSceneGraph()
}
}

void MaterialPreview::setupRoom()
{
_room = GlobalModelCache().getModelNodeForStaticResource("preview/room_cuboid.ase");

auto roomEntity = GlobalEntityModule().createEntity(
GlobalEntityClassManager().findClass(FUNC_STATIC_CLASS));

_rootNode->addChildNode(roomEntity);

roomEntity->addChildNode(_room);
updateRoomSkin();
}

void MaterialPreview::setupTestModel()
{
if (_entity && _model)
Expand Down
4 changes: 4 additions & 0 deletions radiant/ui/materials/MaterialPreview.h
Expand Up @@ -21,9 +21,11 @@ class MaterialPreview :

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;

Expand All @@ -49,7 +51,9 @@ class MaterialPreview :
void prepareScene();
void setupToolbar();
void setupTestModel();
void setupRoom();
void updateModelSkin();
void updateRoomSkin();
void onTestModelSelectionChanged(wxCommandEvent& ev);
};

Expand Down

0 comments on commit 4ab09da

Please sign in to comment.