|
|
@@ -31,38 +31,7 @@
|
|
|
namespace Atomic
|
|
|
{
|
|
|
|
|
|
-VariantMap EngineConfig::engineConfig_;
|
|
|
-String EngineConfig::engineConfigFilename_;
|
|
|
-
|
|
|
-bool EngineConfig::GetBoolValue(const JSONValue& jvalue, bool defaultValue)
|
|
|
-{
|
|
|
- bool value = defaultValue;
|
|
|
-
|
|
|
- if (jvalue.IsBool())
|
|
|
- value = jvalue.GetBool();
|
|
|
-
|
|
|
- return value;
|
|
|
-}
|
|
|
-
|
|
|
-int EngineConfig::GetIntValue(const JSONValue& jvalue, int defaultValue)
|
|
|
-{
|
|
|
- int value = defaultValue;
|
|
|
-
|
|
|
- if (jvalue.IsNumber())
|
|
|
- value = jvalue.GetInt();
|
|
|
-
|
|
|
- return value;
|
|
|
-}
|
|
|
-
|
|
|
-String EngineConfig::GetStringValue(const JSONValue& jvalue, const String& defaultValue)
|
|
|
-{
|
|
|
- String value = defaultValue;
|
|
|
-
|
|
|
- if (jvalue.IsString())
|
|
|
- value = jvalue.GetString();
|
|
|
-
|
|
|
- return value;
|
|
|
-}
|
|
|
+EngineConfig EngineConfig::engineConfig_;
|
|
|
|
|
|
bool EngineConfig::LoadEngineConfig(const JSONValue& jengine)
|
|
|
{
|
|
|
@@ -75,11 +44,11 @@ bool EngineConfig::LoadEngineConfig(const JSONValue& jengine)
|
|
|
const JSONValue& jvalue = i->second_;
|
|
|
|
|
|
if (key == "workerthreads")
|
|
|
- engineConfig_["WorkerThreads"] = GetBoolValue(jvalue, true);
|
|
|
+ valueMap_["WorkerThreads"] = GetBoolValue(jvalue, true);
|
|
|
else if (key == "logquiet")
|
|
|
- engineConfig_["LogQuiet"] = GetBoolValue(jvalue, false);
|
|
|
+ valueMap_["LogQuiet"] = GetBoolValue(jvalue, false);
|
|
|
else if (key == "loglevel")
|
|
|
- engineConfig_["LogLevel"] = GetIntValue(jvalue, 1);
|
|
|
+ valueMap_["LogLevel"] = GetIntValue(jvalue, 1);
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
@@ -96,74 +65,74 @@ bool EngineConfig::LoadGraphicsConfig(const JSONValue& jgraphics)
|
|
|
const JSONValue& jvalue = i->second_;
|
|
|
|
|
|
if (key == "headless")
|
|
|
- engineConfig_["Headless"] = GetBoolValue(jvalue, false);
|
|
|
+ valueMap_["Headless"] = GetBoolValue(jvalue, false);
|
|
|
else if (key == "framelimiter")
|
|
|
- engineConfig_["FrameLimiter"] = GetBoolValue(jvalue, true);
|
|
|
+ valueMap_["FrameLimiter"] = GetBoolValue(jvalue, true);
|
|
|
else if (key == "flushgpu")
|
|
|
- engineConfig_["FlushGPU"] = GetBoolValue(jvalue, false);
|
|
|
+ valueMap_["FlushGPU"] = GetBoolValue(jvalue, false);
|
|
|
else if (key == "forcegl2")
|
|
|
- engineConfig_["ForceGL2"] = GetBoolValue(jvalue, false);
|
|
|
+ valueMap_["ForceGL2"] = GetBoolValue(jvalue, false);
|
|
|
else if (key == "orientations")
|
|
|
- engineConfig_["Orientations"] = GetStringValue(jvalue, "LandscapeLeft LandscapeRight");
|
|
|
+ valueMap_["Orientations"] = GetStringValue(jvalue, "LandscapeLeft LandscapeRight");
|
|
|
else if (key == "vsync")
|
|
|
- engineConfig_["VSync"] = GetBoolValue(jvalue, false);
|
|
|
+ valueMap_["VSync"] = GetBoolValue(jvalue, false);
|
|
|
else if (key == "triplebuffer")
|
|
|
- engineConfig_["TripleBuffer"] = GetBoolValue(jvalue, false);
|
|
|
+ valueMap_["TripleBuffer"] = GetBoolValue(jvalue, false);
|
|
|
else if (key == "multisample")
|
|
|
- engineConfig_["Multisample"] = GetIntValue(jvalue, 1);
|
|
|
+ valueMap_["Multisample"] = GetIntValue(jvalue, 1);
|
|
|
else if (key == "renderpath")
|
|
|
{
|
|
|
String renderPath = GetStringValue(jvalue, "forward").ToLower();
|
|
|
|
|
|
if (renderPath == "forward")
|
|
|
- engineConfig_["RenderPath"] = "RenderPaths/Forward.xml";
|
|
|
+ valueMap_["RenderPath"] = "RenderPaths/Forward.xml";
|
|
|
else if (renderPath == "prepass")
|
|
|
- engineConfig_["RenderPath"] = "RenderPaths/Prepass.xml";
|
|
|
+ valueMap_["RenderPath"] = "RenderPaths/Prepass.xml";
|
|
|
else if (renderPath == "deferred")
|
|
|
- engineConfig_["RenderPath"] = "RenderPaths/Deferred.xml";
|
|
|
+ valueMap_["RenderPath"] = "RenderPaths/Deferred.xml";
|
|
|
}
|
|
|
else if (key == "shadows")
|
|
|
- engineConfig_["Shadows"] = GetBoolValue(jvalue, true);
|
|
|
+ valueMap_["Shadows"] = GetBoolValue(jvalue, true);
|
|
|
else if (key == "lowqualityshadows")
|
|
|
- engineConfig_["LowQualityShadows"] = GetBoolValue(jvalue, false);
|
|
|
+ valueMap_["LowQualityShadows"] = GetBoolValue(jvalue, false);
|
|
|
else if (key == "materialquality")
|
|
|
{
|
|
|
String quality = GetStringValue(jvalue, "high").ToLower();
|
|
|
|
|
|
if (quality == "high")
|
|
|
- engineConfig_["MaterialQuality"] = QUALITY_HIGH;
|
|
|
+ valueMap_["MaterialQuality"] = QUALITY_HIGH;
|
|
|
else if (quality == "medium")
|
|
|
- engineConfig_["MaterialQuality"] = QUALITY_MEDIUM;
|
|
|
+ valueMap_["MaterialQuality"] = QUALITY_MEDIUM;
|
|
|
else if (quality == "low")
|
|
|
- engineConfig_["MaterialQuality"] = QUALITY_LOW;
|
|
|
+ valueMap_["MaterialQuality"] = QUALITY_LOW;
|
|
|
}
|
|
|
else if (key == "texturequality")
|
|
|
{
|
|
|
String quality = GetStringValue(jvalue, "high").ToLower();
|
|
|
|
|
|
if (quality == "high")
|
|
|
- engineConfig_["TextureQuality"] = QUALITY_HIGH;
|
|
|
+ valueMap_["TextureQuality"] = QUALITY_HIGH;
|
|
|
else if (quality == "medium")
|
|
|
- engineConfig_["TextureQuality"] = QUALITY_MEDIUM;
|
|
|
+ valueMap_["TextureQuality"] = QUALITY_MEDIUM;
|
|
|
else if (quality == "low")
|
|
|
- engineConfig_["TextureQuality"] = QUALITY_LOW;
|
|
|
+ valueMap_["TextureQuality"] = QUALITY_LOW;
|
|
|
}
|
|
|
else if (key == "texturefiltermode")
|
|
|
{
|
|
|
String mode = GetStringValue(jvalue, "trilinear").ToLower();
|
|
|
|
|
|
if (mode == "trilinear")
|
|
|
- engineConfig_["TextureFilterMode"] = FILTER_TRILINEAR;
|
|
|
+ valueMap_["TextureFilterMode"] = FILTER_TRILINEAR;
|
|
|
else if (mode == "bilinear")
|
|
|
- engineConfig_["TextureFilterMode"] = FILTER_BILINEAR;
|
|
|
+ valueMap_["TextureFilterMode"] = FILTER_BILINEAR;
|
|
|
else if (mode == "nearest")
|
|
|
- engineConfig_["TextureFilterMode"] = FILTER_NEAREST;
|
|
|
+ valueMap_["TextureFilterMode"] = FILTER_NEAREST;
|
|
|
else if (mode == "anisotropic")
|
|
|
- engineConfig_["TextureFilterMode"] = FILTER_ANISOTROPIC;
|
|
|
+ valueMap_["TextureFilterMode"] = FILTER_ANISOTROPIC;
|
|
|
}
|
|
|
else if (key == "textureanisotropy")
|
|
|
{
|
|
|
- engineConfig_["TextureAnisotropy"] = GetIntValue(jvalue, 4);
|
|
|
+ valueMap_["TextureAnisotropy"] = GetIntValue(jvalue, 4);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -183,21 +152,21 @@ bool EngineConfig::LoadWindowConfig(const JSONValue& jwindow)
|
|
|
const JSONValue& jvalue = i->second_;
|
|
|
|
|
|
if (key == "title")
|
|
|
- engineConfig_["WindowTitle"] = GetStringValue(jvalue, "Atomic");
|
|
|
+ valueMap_["WindowTitle"] = GetStringValue(jvalue, "Atomic");
|
|
|
else if (key == "fullscreen")
|
|
|
- engineConfig_["FullScreen"] = GetBoolValue(jvalue, false);
|
|
|
+ valueMap_["FullScreen"] = GetBoolValue(jvalue, false);
|
|
|
else if (key == "borderless")
|
|
|
- engineConfig_["Borderless"] = GetBoolValue(jvalue, false);
|
|
|
+ valueMap_["Borderless"] = GetBoolValue(jvalue, false);
|
|
|
else if (key == "resizable")
|
|
|
- engineConfig_["WindowResizable"] = GetBoolValue(jvalue, false);
|
|
|
+ valueMap_["WindowResizable"] = GetBoolValue(jvalue, false);
|
|
|
else if (key == "width")
|
|
|
- engineConfig_["WindowWidth"] = GetIntValue(jvalue, false);
|
|
|
+ valueMap_["WindowWidth"] = GetIntValue(jvalue, false);
|
|
|
else if (key == "height")
|
|
|
- engineConfig_["WindowHeight"] = GetIntValue(jvalue, false);
|
|
|
+ valueMap_["WindowHeight"] = GetIntValue(jvalue, false);
|
|
|
else if (key == "positionx")
|
|
|
- engineConfig_["WindowPositionX"] = GetIntValue(jvalue, false);
|
|
|
+ valueMap_["WindowPositionX"] = GetIntValue(jvalue, false);
|
|
|
else if (key == "positiony")
|
|
|
- engineConfig_["WindowPositionY"] = GetIntValue(jvalue, false);
|
|
|
+ valueMap_["WindowPositionY"] = GetIntValue(jvalue, false);
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -216,15 +185,15 @@ bool EngineConfig::LoadSoundConfig(const JSONValue& jsound)
|
|
|
const JSONValue& jvalue = i->second_;
|
|
|
|
|
|
if (key == "enabled")
|
|
|
- engineConfig_["Sound"] = GetBoolValue(jvalue, true);
|
|
|
+ valueMap_["Sound"] = GetBoolValue(jvalue, true);
|
|
|
else if (key == "interpolation")
|
|
|
- engineConfig_["SoundInterpolation"] = GetBoolValue(jvalue, true);
|
|
|
+ valueMap_["SoundInterpolation"] = GetBoolValue(jvalue, true);
|
|
|
else if (key == "stereo")
|
|
|
- engineConfig_["SoundStereo"] = GetBoolValue(jvalue, true);
|
|
|
+ valueMap_["SoundStereo"] = GetBoolValue(jvalue, true);
|
|
|
else if (key == "bufferms")
|
|
|
- engineConfig_["SoundBuffer"] = GetIntValue(jvalue, 100);
|
|
|
+ valueMap_["SoundBuffer"] = GetIntValue(jvalue, 100);
|
|
|
else if (key == "mixrate")
|
|
|
- engineConfig_["SoundMixRate"] = GetIntValue(jvalue, 44100);
|
|
|
+ valueMap_["SoundMixRate"] = GetIntValue(jvalue, 44100);
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -243,7 +212,7 @@ bool EngineConfig::LoadInputConfig(const JSONValue& jinput)
|
|
|
const JSONValue& jvalue = i->second_;
|
|
|
|
|
|
if (key == "touchemulation")
|
|
|
- engineConfig_["TouchEmulation"] = GetBoolValue(jvalue, false);
|
|
|
+ valueMap_["TouchEmulation"] = GetBoolValue(jvalue, false);
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
@@ -281,71 +250,4 @@ bool EngineConfig::LoadDesktopConfig(JSONValue root)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-bool EngineConfig::LoadFromJSON(const String& json)
|
|
|
-{
|
|
|
- engineConfig_.Clear();
|
|
|
-
|
|
|
- JSONValue jroot;
|
|
|
-
|
|
|
- if (!JSONFile::ParseJSON(json, jroot))
|
|
|
- {
|
|
|
- LOGERRORF("EngineConfig::LoadFromJSON - Unable to parse config file JSON: %s", engineConfigFilename_.CString());
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- if (!jroot.IsObject())
|
|
|
- return false;
|
|
|
-
|
|
|
- if (!LoadDesktopConfig(jroot))
|
|
|
- return false;
|
|
|
-
|
|
|
- return true;
|
|
|
-}
|
|
|
-
|
|
|
-bool EngineConfig::LoadFromFile(Context *context, const String& filename)
|
|
|
-{
|
|
|
-
|
|
|
- FileSystem* fileSystem = context->GetSubsystem<FileSystem>();
|
|
|
-
|
|
|
- if (!fileSystem->FileExists(filename))
|
|
|
- return false;
|
|
|
-
|
|
|
- engineConfigFilename_ = filename;
|
|
|
-
|
|
|
- SharedPtr<File> file(new File(context));
|
|
|
-
|
|
|
- if (!file->Open(filename))
|
|
|
- {
|
|
|
- LOGERRORF("EngineConfig::LoadFromFile - Unable to open config file %s", filename.CString());
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- String json;
|
|
|
- file->ReadText(json);
|
|
|
-
|
|
|
- return LoadFromJSON(json);
|
|
|
-}
|
|
|
-
|
|
|
-void EngineConfig::ApplyConfig(VariantMap& settings, bool overwrite)
|
|
|
-{
|
|
|
- VariantMap::ConstIterator itr = engineConfig_.Begin();
|
|
|
- if (overwrite)
|
|
|
- {
|
|
|
- while (itr != engineConfig_.End())
|
|
|
- {
|
|
|
- settings[itr->first_] = itr->second_;
|
|
|
- itr++;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- while (itr != engineConfig_.End())
|
|
|
- {
|
|
|
- settings.InsertNew(itr->first_, itr->second_);
|
|
|
- itr++;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
}
|