Update StarClientApplication.cpp
This commit is contained in:
parent
7253f40932
commit
209d89a07d
@ -434,6 +434,8 @@ void ClientApplication::getAudioData(int16_t* sampleData, size_t frameCount) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto postProcessGroupsRoot = "postProcessGroups";
|
||||||
|
|
||||||
void ClientApplication::renderReload() {
|
void ClientApplication::renderReload() {
|
||||||
auto assets = m_root->assets();
|
auto assets = m_root->assets();
|
||||||
auto renderer = Application::renderer();
|
auto renderer = Application::renderer();
|
||||||
@ -464,18 +466,55 @@ void ClientApplication::renderReload() {
|
|||||||
|
|
||||||
loadEffectConfig("world");
|
loadEffectConfig("world");
|
||||||
|
|
||||||
|
// define post process groups and set them to be enabled/disabled based on config
|
||||||
|
|
||||||
|
auto config = m_root->configuration();
|
||||||
|
if (!config->get(postProcessGroupsRoot).isType(Json::Type::Object))
|
||||||
|
config->set(postProcessGroupsRoot, JsonObject());
|
||||||
|
auto groupsConfig = config->get(postProcessGroupsRoot);
|
||||||
|
|
||||||
|
m_postProcessGroups.clear();
|
||||||
|
auto postProcessGroups = assets->json("/client.config:postProcessGroups").toObject();
|
||||||
|
for (auto& pair : postProcessGroups) {
|
||||||
|
auto name = pair.first;
|
||||||
|
auto groupConfig = groupsConfig.opt(name);
|
||||||
|
auto def = pair.second.getBool("enabledDefault",true);
|
||||||
|
if (!groupConfig)
|
||||||
|
config->setPath(strf("{}.{}", postProcessGroupsRoot, name),JsonObject());
|
||||||
|
m_postProcessGroups.add(name,PostProcessGroup{ groupConfig ? groupConfig.value().getBool("enabled", def) : def });
|
||||||
|
}
|
||||||
|
|
||||||
|
// define post process layers and optionally assign them to groups
|
||||||
m_postProcessLayers.clear();
|
m_postProcessLayers.clear();
|
||||||
auto postProcessLayers = assets->json("/client.config:postProcessLayers").toArray();
|
auto postProcessLayers = assets->json("/client.config:postProcessLayers").toArray();
|
||||||
for (auto& layer : postProcessLayers) {
|
for (auto& layer : postProcessLayers) {
|
||||||
auto effects = jsonToStringList(layer.getArray("effects"));
|
auto effects = jsonToStringList(layer.getArray("effects"));
|
||||||
for (auto& effect : effects)
|
for (auto& effect : effects)
|
||||||
loadEffectConfig(effect);
|
loadEffectConfig(effect);
|
||||||
m_postProcessLayers.append(PostProcessLayer{ std::move(effects), (unsigned)layer.getUInt("passes", 1) });
|
PostProcessGroup* group = nullptr;
|
||||||
|
auto gname = layer.optString("group");
|
||||||
|
if (gname) {
|
||||||
|
group = &m_postProcessGroups.get(gname.value());
|
||||||
|
}
|
||||||
|
m_postProcessLayers.append(PostProcessLayer{ std::move(effects), (unsigned)layer.getUInt("passes", 1), group });
|
||||||
}
|
}
|
||||||
|
|
||||||
loadEffectConfig("interface");
|
loadEffectConfig("interface");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ClientApplication::setPostProcessGroupEnabled(String group, bool enabled, Maybe<bool> save) {
|
||||||
|
m_postProcessGroups.get(group).enabled = enabled;
|
||||||
|
if (save && save.value())
|
||||||
|
m_root->configuration()->setPath(strf("{}.{}.enabled", postProcessGroupsRoot, group),enabled);
|
||||||
|
}
|
||||||
|
bool ClientApplication::postProcessGroupEnabled(String group) {
|
||||||
|
return m_postProcessGroups.get(group).enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
Json ClientApplication::postProcessGroups() {
|
||||||
|
return m_root->assets()->json("/client.config:postProcessGroups");
|
||||||
|
}
|
||||||
|
|
||||||
void ClientApplication::changeState(MainAppState newState) {
|
void ClientApplication::changeState(MainAppState newState) {
|
||||||
MainAppState oldState = m_state;
|
MainAppState oldState = m_state;
|
||||||
m_state = newState;
|
m_state = newState;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user