mirror of
https://github.com/opensim/opensim.git
synced 2026-05-13 01:46:07 +08:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
88ef8a9dbe |
@@ -2232,9 +2232,9 @@ namespace OpenSim.Framework
|
||||
/// <returns></returns>
|
||||
public static T GetConfigVarFromSections<T>(IConfigSource config, string varname, string[] sections, object val)
|
||||
{
|
||||
foreach (string section in sections.AsSpan())
|
||||
for (int i = 0 ; i < sections.Length; i++)
|
||||
{
|
||||
IConfig cnf = config.Configs[section];
|
||||
IConfig cnf = config.Configs[sections[i]];
|
||||
if (cnf == null)
|
||||
continue;
|
||||
|
||||
@@ -2252,6 +2252,119 @@ namespace OpenSim.Framework
|
||||
return (T)val;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the value of a configuration variable by looking into
|
||||
/// multiple sections in order. Returns as soon one is found, ignoring other sections
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// If no value is found then the given default value is returned
|
||||
/// </remarks>
|
||||
/// <typeparam name="T">Type of the variable</typeparam>
|
||||
/// <param name="config">The configuration object</param>
|
||||
/// <param name="varname">The configuration variable</param>
|
||||
/// <param name="sections">Ordered sequence of sections to look at</param>
|
||||
/// <param name="val">Default value</param>
|
||||
/// <returns></returns>
|
||||
public static T GetFirstConfigVarFromSections<T>(IConfigSource config, string varname, string[] sections, object val)
|
||||
{
|
||||
for (int i = 0 ; i < sections.Length; i++)
|
||||
{
|
||||
IConfig cnf = config.Configs[sections[i]];
|
||||
if (cnf == null)
|
||||
continue;
|
||||
|
||||
string text = cnf.Get(varname);
|
||||
if (!string.IsNullOrEmpty(text))
|
||||
{
|
||||
if (typeof(T) == typeof(string))
|
||||
return Unsafe.As<string, T>(ref text);
|
||||
|
||||
if (typeof(T) == typeof(bool))
|
||||
{
|
||||
bool b = bool.Parse(text);
|
||||
return Unsafe.As<bool, T>(ref b);
|
||||
}
|
||||
|
||||
if (typeof(T) == typeof(int))
|
||||
{
|
||||
int ti = int.Parse(text);
|
||||
return Unsafe.As<int, T>(ref ti);
|
||||
}
|
||||
|
||||
if (typeof(T) == typeof(float))
|
||||
{
|
||||
float f = float.Parse(text);
|
||||
return Unsafe.As<float, T>(ref f);
|
||||
}
|
||||
|
||||
if (typeof(T) == typeof(double))
|
||||
{
|
||||
double d = double.Parse(text);
|
||||
return Unsafe.As<double, T>(ref d);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return val == null ? default : (T) val;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the value of a configuration variable by looking into
|
||||
/// multiple sections in order. Returns as soon one is found, ignoring other sections
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// If no value is found then the default value of T is returned
|
||||
/// </remarks>
|
||||
/// <typeparam name="T">Type of the variable</typeparam>
|
||||
/// <param name="config">The configuration object</param>
|
||||
/// <param name="varname">The configuration variable</param>
|
||||
/// <param name="sections">Ordered sequence of sections to look at</param>
|
||||
/// <returns></returns>
|
||||
|
||||
public static T GetFirstConfigVarFromSections<T>(IConfigSource config, string varname, string[] sections)
|
||||
{
|
||||
for (int i = 0 ; i < sections.Length; i++)
|
||||
{
|
||||
IConfig cnf = config.Configs[sections[i]];
|
||||
if (cnf == null)
|
||||
continue;
|
||||
|
||||
string text = cnf.Get(varname);
|
||||
if (!string.IsNullOrEmpty(text))
|
||||
{
|
||||
if (typeof(T) == typeof(string))
|
||||
return Unsafe.As<string, T>(ref text);
|
||||
|
||||
if (typeof(T) == typeof(bool))
|
||||
{
|
||||
bool b = bool.Parse(text);
|
||||
return Unsafe.As<bool, T>(ref b);
|
||||
}
|
||||
|
||||
if (typeof(T) == typeof(int))
|
||||
{
|
||||
int ti = int.Parse(text);
|
||||
return Unsafe.As<int, T>(ref ti);
|
||||
}
|
||||
|
||||
if (typeof(T) == typeof(float))
|
||||
{
|
||||
float f = float.Parse(text);
|
||||
return Unsafe.As<float, T>(ref f);
|
||||
}
|
||||
|
||||
if (typeof(T) == typeof(double))
|
||||
{
|
||||
double d = double.Parse(text);
|
||||
return Unsafe.As<double, T>(ref d);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return default;
|
||||
}
|
||||
|
||||
|
||||
public static void MergeEnvironmentToConfig(IConfigSource ConfigSource)
|
||||
{
|
||||
IConfig enVars = ConfigSource.Configs["Environment"];
|
||||
|
||||
@@ -100,18 +100,7 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||
IConfigSource config = m_Scene.Config;
|
||||
if (config is not null)
|
||||
{
|
||||
IConfig sconfig = config.Configs["Startup"];
|
||||
if (sconfig is not null)
|
||||
ConfigOptions.levelUpload = sconfig.GetInt("LevelUpload", -9798);
|
||||
|
||||
if (ConfigOptions.levelUpload == -9798)
|
||||
{
|
||||
IConfig pconfig = config.Configs["Permissions"];
|
||||
if (pconfig is not null)
|
||||
ConfigOptions.levelUpload = pconfig.GetInt("LevelUpload", 0);
|
||||
}
|
||||
if (ConfigOptions.levelUpload == -9798)
|
||||
ConfigOptions.levelUpload = 0;
|
||||
ConfigOptions.levelUpload = Util.GetFirstConfigVarFromSections<int>(config,"LevelUpload",["Permissions", "Startup"], 0);
|
||||
|
||||
IConfig appearanceConfig = config.Configs["Appearance"];
|
||||
if (appearanceConfig is not null)
|
||||
|
||||
@@ -58,21 +58,7 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
|
||||
public void Initialise(IConfigSource source)
|
||||
{
|
||||
if(source != null)
|
||||
{
|
||||
IConfig sconfig = source.Configs["Permissions"];
|
||||
if (sconfig != null)
|
||||
{
|
||||
m_levelUpload = sconfig.GetInt("LevelUpload", -9798);
|
||||
}
|
||||
if(m_levelUpload == -9798)
|
||||
{
|
||||
sconfig = source.Configs["Startup"];
|
||||
if (sconfig is not null)
|
||||
m_levelUpload = sconfig.GetInt("LevelUpload", 0);
|
||||
}
|
||||
if(m_levelUpload == -9798)
|
||||
m_levelUpload = 0;
|
||||
}
|
||||
m_levelUpload = Util.GetFirstConfigVarFromSections<int>(source,"LevelUpload",["Permissions", "Startup"], 0);
|
||||
}
|
||||
|
||||
public void AddRegion(Scene scene)
|
||||
|
||||
Reference in New Issue
Block a user