Skip to content

Commit

Permalink
#5570: Default light def is configurable through the .game file now
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Apr 9, 2021
1 parent c10b873 commit d78eb47
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 1 deletion.
1 change: 1 addition & 0 deletions install/games/darkmod.game
Expand Up @@ -350,5 +350,6 @@

<materialPreview>
<defaultRoomMaterial value="textures/darkmod/stone/brick/blocks_brown" />
<defaultLightDef value="light_torchflame" />
</materialPreview>
</game>
15 changes: 14 additions & 1 deletion radiant/ui/materials/editor/MaterialPreview.cpp
Expand Up @@ -21,6 +21,7 @@ namespace
{
const char* const FUNC_STATIC_CLASS = "func_static";
const char* const GKEY_DEFAULT_ROOM_MATERIAL = "/materialPreview/defaultRoomMaterial";
const char* const GKEY_DEFAULT_LIGHT_DEF = "/materialPreview/defaultLightDef";
}

MaterialPreview::MaterialPreview(wxWindow* parent) :
Expand Down Expand Up @@ -104,6 +105,18 @@ std::string MaterialPreview::getRoomMaterial()
return game::current::getValue<std::string>(GKEY_DEFAULT_ROOM_MATERIAL);
}

std::string MaterialPreview::getDefaultLightDef()
{
auto className = game::current::getValue<std::string>(GKEY_DEFAULT_LIGHT_DEF);

if (className.empty() || !GlobalEntityClassManager().findClass(className))
{
className = "light";
}

return className;
}

void MaterialPreview::updateRoomSkin()
{
auto roomMaterial = getRoomMaterial();
Expand Down Expand Up @@ -228,7 +241,7 @@ void MaterialPreview::setupSceneGraph()

// Set up the light
_light = GlobalEntityModule().createEntity(
GlobalEntityClassManager().findClass("light"));
GlobalEntityClassManager().findClass(getDefaultLightDef()));

Node_getEntity(_light)->setKeyValue("light_radius", "750 750 750");
Node_getEntity(_light)->setKeyValue("origin", "150 150 150");
Expand Down
1 change: 1 addition & 0 deletions radiant/ui/materials/editor/MaterialPreview.h
Expand Up @@ -71,6 +71,7 @@ class MaterialPreview :
void updateModelSkin();
void updateRoomSkin();
std::string getRoomMaterial();
std::string getDefaultLightDef();
void onTestModelSelectionChanged(wxCommandEvent& ev);
};

Expand Down

0 comments on commit d78eb47

Please sign in to comment.