Merge branch 'master' into careminster
commit
a675f7d4c3
|
@ -138,6 +138,10 @@ namespace OpenSim
|
||||||
/// <param name="configSource"></param>
|
/// <param name="configSource"></param>
|
||||||
public OpenSimBase(IConfigSource configSource) : base()
|
public OpenSimBase(IConfigSource configSource) : base()
|
||||||
{
|
{
|
||||||
|
// FIXME: This should be done down in ServerBase but we need to sort out and refactor the log4net
|
||||||
|
// XmlConfigurator calls first accross servers.
|
||||||
|
m_log.InfoFormat("[SERVER BASE]: Starting in {0}", m_startupDirectory);
|
||||||
|
|
||||||
LoadConfigSettings(configSource);
|
LoadConfigSettings(configSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -156,9 +156,8 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||||
|
|
||||||
public void Initialise(IConfigSource config)
|
public void Initialise(IConfigSource config)
|
||||||
{
|
{
|
||||||
IConfig myConfig = config.Configs["Startup"];
|
string permissionModules = Util.GetConfigVarFromSections<string>(config, "permissionmodules",
|
||||||
|
new string[] { "Startup", "Permissions" }, "DefaultPermissionsModule");
|
||||||
string permissionModules = myConfig.GetString("permissionmodules", "DefaultPermissionsModule");
|
|
||||||
|
|
||||||
List<string> modules = new List<string>(permissionModules.Split(','));
|
List<string> modules = new List<string>(permissionModules.Split(','));
|
||||||
|
|
||||||
|
@ -167,26 +166,34 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||||
|
|
||||||
m_Enabled = true;
|
m_Enabled = true;
|
||||||
|
|
||||||
m_allowGridGods = myConfig.GetBoolean("allow_grid_gods", false);
|
m_allowGridGods = Util.GetConfigVarFromSections<bool>(config, "allow_grid_gods",
|
||||||
m_bypassPermissions = !myConfig.GetBoolean("serverside_object_permissions", true);
|
new string[] { "Startup", "Permissions" }, false);
|
||||||
m_propagatePermissions = myConfig.GetBoolean("propagate_permissions", true);
|
m_bypassPermissions = !Util.GetConfigVarFromSections<bool>(config, "serverside_object_permissions",
|
||||||
m_RegionOwnerIsGod = myConfig.GetBoolean("region_owner_is_god", true);
|
new string[] { "Startup", "Permissions" }, true);
|
||||||
m_RegionManagerIsGod = myConfig.GetBoolean("region_manager_is_god", false);
|
m_propagatePermissions = Util.GetConfigVarFromSections<bool>(config, "propagate_permissions",
|
||||||
m_ParcelOwnerIsGod = myConfig.GetBoolean("parcel_owner_is_god", true);
|
new string[] { "Startup", "Permissions" }, true);
|
||||||
|
m_RegionOwnerIsGod = Util.GetConfigVarFromSections<bool>(config, "region_owner_is_god",
|
||||||
|
new string[] { "Startup", "Permissions" }, true);
|
||||||
|
m_RegionManagerIsGod = Util.GetConfigVarFromSections<bool>(config, "region_manager_is_god",
|
||||||
|
new string[] { "Startup", "Permissions" }, false);
|
||||||
|
m_ParcelOwnerIsGod = Util.GetConfigVarFromSections<bool>(config, "parcel_owner_is_god",
|
||||||
|
new string[] { "Startup", "Permissions" }, true);
|
||||||
|
|
||||||
m_SimpleBuildPermissions = myConfig.GetBoolean("simple_build_permissions", false);
|
m_SimpleBuildPermissions = Util.GetConfigVarFromSections<bool>(config, "simple_build_permissions",
|
||||||
|
new string[] { "Startup", "Permissions" }, false);
|
||||||
|
|
||||||
m_allowedScriptCreators
|
m_allowedScriptCreators
|
||||||
= ParseUserSetConfigSetting(myConfig, "allowed_script_creators", m_allowedScriptCreators);
|
= ParseUserSetConfigSetting(config, "allowed_script_creators", m_allowedScriptCreators);
|
||||||
m_allowedScriptEditors
|
m_allowedScriptEditors
|
||||||
= ParseUserSetConfigSetting(myConfig, "allowed_script_editors", m_allowedScriptEditors);
|
= ParseUserSetConfigSetting(config, "allowed_script_editors", m_allowedScriptEditors);
|
||||||
|
|
||||||
if (m_bypassPermissions)
|
if (m_bypassPermissions)
|
||||||
m_log.Info("[PERMISSIONS]: serverside_object_permissions = false in ini file so disabling all region service permission checks");
|
m_log.Info("[PERMISSIONS]: serverside_object_permissions = false in ini file so disabling all region service permission checks");
|
||||||
else
|
else
|
||||||
m_log.Debug("[PERMISSIONS]: Enabling all region service permission checks");
|
m_log.Debug("[PERMISSIONS]: Enabling all region service permission checks");
|
||||||
|
|
||||||
string grant = myConfig.GetString("GrantLSL", "");
|
string grant = Util.GetConfigVarFromSections<string>(config, "GrantLSL",
|
||||||
|
new string[] { "Startup", "Permissions" }, string.Empty);
|
||||||
if (grant.Length > 0)
|
if (grant.Length > 0)
|
||||||
{
|
{
|
||||||
foreach (string uuidl in grant.Split(','))
|
foreach (string uuidl in grant.Split(','))
|
||||||
|
@ -196,7 +203,8 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
grant = myConfig.GetString("GrantCS", "");
|
grant = Util.GetConfigVarFromSections<string>(config, "GrantCS",
|
||||||
|
new string[] { "Startup", "Permissions" }, string.Empty);
|
||||||
if (grant.Length > 0)
|
if (grant.Length > 0)
|
||||||
{
|
{
|
||||||
foreach (string uuidl in grant.Split(','))
|
foreach (string uuidl in grant.Split(','))
|
||||||
|
@ -206,7 +214,8 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
grant = myConfig.GetString("GrantVB", "");
|
grant = Util.GetConfigVarFromSections<string>(config, "GrantVB",
|
||||||
|
new string[] { "Startup", "Permissions" }, string.Empty);
|
||||||
if (grant.Length > 0)
|
if (grant.Length > 0)
|
||||||
{
|
{
|
||||||
foreach (string uuidl in grant.Split(','))
|
foreach (string uuidl in grant.Split(','))
|
||||||
|
@ -216,7 +225,8 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
grant = myConfig.GetString("GrantJS", "");
|
grant = Util.GetConfigVarFromSections<string>(config, "GrantJS",
|
||||||
|
new string[] { "Startup", "Permissions" }, string.Empty);
|
||||||
if (grant.Length > 0)
|
if (grant.Length > 0)
|
||||||
{
|
{
|
||||||
foreach (string uuidl in grant.Split(','))
|
foreach (string uuidl in grant.Split(','))
|
||||||
|
@ -226,7 +236,8 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
grant = myConfig.GetString("GrantYP", "");
|
grant = Util.GetConfigVarFromSections<string>(config, "GrantYP",
|
||||||
|
new string[] { "Startup", "Permissions" }, string.Empty);
|
||||||
if (grant.Length > 0)
|
if (grant.Length > 0)
|
||||||
{
|
{
|
||||||
foreach (string uuidl in grant.Split(','))
|
foreach (string uuidl in grant.Split(','))
|
||||||
|
@ -464,11 +475,12 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
||||||
/// <param name="settingName"></param>
|
/// <param name="settingName"></param>
|
||||||
/// <param name="defaultValue">The default value for this attribute</param>
|
/// <param name="defaultValue">The default value for this attribute</param>
|
||||||
/// <returns>The parsed value</returns>
|
/// <returns>The parsed value</returns>
|
||||||
private static UserSet ParseUserSetConfigSetting(IConfig config, string settingName, UserSet defaultValue)
|
private static UserSet ParseUserSetConfigSetting(IConfigSource config, string settingName, UserSet defaultValue)
|
||||||
{
|
{
|
||||||
UserSet userSet = defaultValue;
|
UserSet userSet = defaultValue;
|
||||||
|
|
||||||
string rawSetting = config.GetString(settingName, defaultValue.ToString());
|
string rawSetting = Util.GetConfigVarFromSections<string>(config, settingName,
|
||||||
|
new string[] {"Startup", "Permissions"}, defaultValue.ToString());
|
||||||
|
|
||||||
// Temporary measure to allow 'gods' to be specified in config for consistency's sake. In the long term
|
// Temporary measure to allow 'gods' to be specified in config for consistency's sake. In the long term
|
||||||
// this should disappear.
|
// this should disappear.
|
||||||
|
|
|
@ -148,8 +148,6 @@ namespace OpenSim.Region.DataSnapshot
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_enabled)
|
|
||||||
m_snapStore = new SnapshotStore(m_snapsDir, m_gridinfo, m_listener_port, m_hostname);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -163,8 +161,22 @@ namespace OpenSim.Region.DataSnapshot
|
||||||
|
|
||||||
m_log.DebugFormat("[DATASNAPSHOT]: Module added to Scene {0}.", scene.RegionInfo.RegionName);
|
m_log.DebugFormat("[DATASNAPSHOT]: Module added to Scene {0}.", scene.RegionInfo.RegionName);
|
||||||
|
|
||||||
m_snapStore.AddScene(scene);
|
if (!m_servicesNotified)
|
||||||
|
{
|
||||||
|
m_hostname = scene.RegionInfo.ExternalHostName;
|
||||||
|
m_snapStore = new SnapshotStore(m_snapsDir, m_gridinfo, m_listener_port, m_hostname);
|
||||||
|
|
||||||
|
//Hand it the first scene, assuming that all scenes have the same BaseHTTPServer
|
||||||
|
new DataRequestHandler(scene, this);
|
||||||
|
|
||||||
|
if (m_dataServices != "" && m_dataServices != "noservices")
|
||||||
|
NotifyDataServices(m_dataServices, "online");
|
||||||
|
|
||||||
|
m_servicesNotified = true;
|
||||||
|
}
|
||||||
|
|
||||||
m_scenes.Add(scene);
|
m_scenes.Add(scene);
|
||||||
|
m_snapStore.AddScene(scene);
|
||||||
|
|
||||||
Assembly currentasm = Assembly.GetExecutingAssembly();
|
Assembly currentasm = Assembly.GetExecutingAssembly();
|
||||||
|
|
||||||
|
@ -189,22 +201,6 @@ namespace OpenSim.Region.DataSnapshot
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Must be done here because on shared modules, PostInitialise() will run
|
|
||||||
// BEFORE any scenes are registered. There is no "all scenes have been loaded"
|
|
||||||
// kind of callback because scenes may be created dynamically, so we cannot
|
|
||||||
// have that info, ever.
|
|
||||||
if (!m_servicesNotified)
|
|
||||||
{
|
|
||||||
//Hand it the first scene, assuming that all scenes have the same BaseHTTPServer
|
|
||||||
new DataRequestHandler(m_scenes[0], this);
|
|
||||||
|
|
||||||
m_hostname = m_scenes[0].RegionInfo.ExternalHostName;
|
|
||||||
|
|
||||||
if (m_dataServices != "" && m_dataServices != "noservices")
|
|
||||||
NotifyDataServices(m_dataServices, "online");
|
|
||||||
|
|
||||||
m_servicesNotified = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveRegion(Scene scene)
|
public void RemoveRegion(Scene scene)
|
||||||
|
|
|
@ -33,10 +33,11 @@ using Nini.Config;
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
// You will need to uncomment this line if you are adding a region module to some other assembly which does not already
|
// You will need to uncomment these lines if you are adding a region module to some other assembly which does not already
|
||||||
// specify its assembly. Otherwise, the region modules in the assembly will not be picked up when OpenSimulator scans
|
// specify its assembly. Otherwise, the region modules in the assembly will not be picked up when OpenSimulator scans
|
||||||
// the available DLLs
|
// the available DLLs
|
||||||
//[assembly: Addin("MyModule", "1.0")]
|
//[assembly: Addin("MyModule", "1.0")]
|
||||||
|
//[assembly: AddinDependency("OpenSim", "0.5")]
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Example.BareBonesNonShared
|
namespace OpenSim.Region.OptionalModules.Example.BareBonesNonShared
|
||||||
{
|
{
|
||||||
|
|
|
@ -33,10 +33,11 @@ using Nini.Config;
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
// You will need to uncomment this line if you are adding a region module to some other assembly which does not already
|
// You will need to uncomment these lines if you are adding a region module to some other assembly which does not already
|
||||||
// specify its assembly. Otherwise, the region modules in the assembly will not be picked up when OpenSimulator scans
|
// specify its assembly. Otherwise, the region modules in the assembly will not be picked up when OpenSimulator scans
|
||||||
// the available DLLs
|
// the available DLLs
|
||||||
//[assembly: Addin("MyModule", "1.0")]
|
//[assembly: Addin("MyModule", "1.0")]
|
||||||
|
//[assembly: AddinDependency("OpenSim", "0.5")]
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Example.BareBonesShared
|
namespace OpenSim.Region.OptionalModules.Example.BareBonesShared
|
||||||
{
|
{
|
||||||
|
|
|
@ -57,9 +57,10 @@ namespace OpenSim.Region.OptionalModules
|
||||||
|
|
||||||
public void Initialise(IConfigSource config)
|
public void Initialise(IConfigSource config)
|
||||||
{
|
{
|
||||||
IConfig myConfig = config.Configs["Startup"];
|
//IConfig myConfig = config.Configs["Startup"];
|
||||||
|
|
||||||
string permissionModules = myConfig.GetString("permissionmodules", "DefaultPermissionsModule");
|
string permissionModules = Util.GetConfigVarFromSections<string>(config, "permissionmodules",
|
||||||
|
new string[] { "Startup", "Permissions" }, "DefaultPermissionsModule");
|
||||||
|
|
||||||
List<string> modules=new List<string>(permissionModules.Split(','));
|
List<string> modules=new List<string>(permissionModules.Split(','));
|
||||||
|
|
||||||
|
|
|
@ -961,13 +961,13 @@ namespace OpenSim.Region.Physics.BulletSPlugin
|
||||||
// ==================================================================
|
// ==================================================================
|
||||||
// Clamp high or low velocities
|
// Clamp high or low velocities
|
||||||
float newVelocityLengthSq = VehicleVelocity.LengthSquared();
|
float newVelocityLengthSq = VehicleVelocity.LengthSquared();
|
||||||
if (newVelocityLengthSq > BSParam.VehicleMaxLinearVelocitySq)
|
if (newVelocityLengthSq > BSParam.VehicleMaxLinearVelocitySquared)
|
||||||
{
|
{
|
||||||
Vector3 origVelW = VehicleVelocity; // DEBUG DEBUG
|
Vector3 origVelW = VehicleVelocity; // DEBUG DEBUG
|
||||||
VehicleVelocity /= VehicleVelocity.Length();
|
VehicleVelocity /= VehicleVelocity.Length();
|
||||||
VehicleVelocity *= BSParam.VehicleMaxLinearVelocity;
|
VehicleVelocity *= BSParam.VehicleMaxLinearVelocity;
|
||||||
VDetailLog("{0}, MoveLinear,clampMax,origVelW={1},lenSq={2},maxVelSq={3},,newVelW={4}",
|
VDetailLog("{0}, MoveLinear,clampMax,origVelW={1},lenSq={2},maxVelSq={3},,newVelW={4}",
|
||||||
Prim.LocalID, origVelW, newVelocityLengthSq, BSParam.VehicleMaxLinearVelocitySq, VehicleVelocity);
|
Prim.LocalID, origVelW, newVelocityLengthSq, BSParam.VehicleMaxLinearVelocitySquared, VehicleVelocity);
|
||||||
}
|
}
|
||||||
else if (newVelocityLengthSq < 0.001f)
|
else if (newVelocityLengthSq < 0.001f)
|
||||||
VehicleVelocity = Vector3.Zero;
|
VehicleVelocity = Vector3.Zero;
|
||||||
|
|
|
@ -47,12 +47,16 @@ public static class BSParam
|
||||||
public static float SculptLOD { get; private set; }
|
public static float SculptLOD { get; private set; }
|
||||||
|
|
||||||
public static int CrossingFailuresBeforeOutOfBounds { get; private set; }
|
public static int CrossingFailuresBeforeOutOfBounds { get; private set; }
|
||||||
|
public static float UpdateVelocityChangeThreshold { get; private set; }
|
||||||
|
|
||||||
public static float MinimumObjectMass { get; private set; }
|
public static float MinimumObjectMass { get; private set; }
|
||||||
public static float MaximumObjectMass { get; private set; }
|
public static float MaximumObjectMass { get; private set; }
|
||||||
public static float MaxLinearVelocity { get; private set; }
|
public static float MaxLinearVelocity { get; private set; }
|
||||||
|
public static float MaxLinearVelocitySquared { get; private set; }
|
||||||
public static float MaxAngularVelocity { get; private set; }
|
public static float MaxAngularVelocity { get; private set; }
|
||||||
|
public static float MaxAngularVelocitySquared { get; private set; }
|
||||||
public static float MaxAddForceMagnitude { get; private set; }
|
public static float MaxAddForceMagnitude { get; private set; }
|
||||||
|
public static float MaxAddForceMagnitudeSquared { get; private set; }
|
||||||
public static float DensityScaleFactor { get; private set; }
|
public static float DensityScaleFactor { get; private set; }
|
||||||
|
|
||||||
public static float LinearDamping { get; private set; }
|
public static float LinearDamping { get; private set; }
|
||||||
|
@ -109,7 +113,7 @@ public static class BSParam
|
||||||
|
|
||||||
// Vehicle parameters
|
// Vehicle parameters
|
||||||
public static float VehicleMaxLinearVelocity { get; private set; }
|
public static float VehicleMaxLinearVelocity { get; private set; }
|
||||||
public static float VehicleMaxLinearVelocitySq { get; private set; }
|
public static float VehicleMaxLinearVelocitySquared { get; private set; }
|
||||||
public static float VehicleMaxAngularVelocity { get; private set; }
|
public static float VehicleMaxAngularVelocity { get; private set; }
|
||||||
public static float VehicleMaxAngularVelocitySq { get; private set; }
|
public static float VehicleMaxAngularVelocitySq { get; private set; }
|
||||||
public static float VehicleAngularDamping { get; private set; }
|
public static float VehicleAngularDamping { get; private set; }
|
||||||
|
@ -265,7 +269,7 @@ public static class BSParam
|
||||||
// The single letter parameters for the delegates are:
|
// The single letter parameters for the delegates are:
|
||||||
// s = BSScene
|
// s = BSScene
|
||||||
// o = BSPhysObject
|
// o = BSPhysObject
|
||||||
// v = value (float)
|
// v = value (appropriate type)
|
||||||
private static ParameterDefnBase[] ParameterDefinitions =
|
private static ParameterDefnBase[] ParameterDefinitions =
|
||||||
{
|
{
|
||||||
new ParameterDefn<bool>("MeshSculptedPrim", "Whether to create meshes for sculpties",
|
new ParameterDefn<bool>("MeshSculptedPrim", "Whether to create meshes for sculpties",
|
||||||
|
@ -289,6 +293,10 @@ public static class BSParam
|
||||||
5,
|
5,
|
||||||
(s) => { return CrossingFailuresBeforeOutOfBounds; },
|
(s) => { return CrossingFailuresBeforeOutOfBounds; },
|
||||||
(s,v) => { CrossingFailuresBeforeOutOfBounds = v; } ),
|
(s,v) => { CrossingFailuresBeforeOutOfBounds = v; } ),
|
||||||
|
new ParameterDefn<float>("UpdateVelocityChangeThreshold", "Change in updated velocity required before reporting change to simulator",
|
||||||
|
0.1f,
|
||||||
|
(s) => { return UpdateVelocityChangeThreshold; },
|
||||||
|
(s,v) => { UpdateVelocityChangeThreshold = v; } ),
|
||||||
|
|
||||||
new ParameterDefn<float>("MeshLevelOfDetail", "Level of detail to render meshes (32, 16, 8 or 4. 32=most detailed)",
|
new ParameterDefn<float>("MeshLevelOfDetail", "Level of detail to render meshes (32, 16, 8 or 4. 32=most detailed)",
|
||||||
32f,
|
32f,
|
||||||
|
@ -343,16 +351,16 @@ public static class BSParam
|
||||||
new ParameterDefn<float>("MaxLinearVelocity", "Maximum velocity magnitude that can be assigned to an object",
|
new ParameterDefn<float>("MaxLinearVelocity", "Maximum velocity magnitude that can be assigned to an object",
|
||||||
1000.0f,
|
1000.0f,
|
||||||
(s) => { return MaxLinearVelocity; },
|
(s) => { return MaxLinearVelocity; },
|
||||||
(s,v) => { MaxLinearVelocity = v; } ),
|
(s,v) => { MaxLinearVelocity = v; MaxLinearVelocitySquared = v * v; } ),
|
||||||
new ParameterDefn<float>("MaxAngularVelocity", "Maximum rotational velocity magnitude that can be assigned to an object",
|
new ParameterDefn<float>("MaxAngularVelocity", "Maximum rotational velocity magnitude that can be assigned to an object",
|
||||||
1000.0f,
|
1000.0f,
|
||||||
(s) => { return MaxAngularVelocity; },
|
(s) => { return MaxAngularVelocity; },
|
||||||
(s,v) => { MaxAngularVelocity = v; } ),
|
(s,v) => { MaxAngularVelocity = v; MaxAngularVelocitySquared = v * v; } ),
|
||||||
// LL documentation says thie number should be 20f for llApplyImpulse and 200f for llRezObject
|
// LL documentation says thie number should be 20f for llApplyImpulse and 200f for llRezObject
|
||||||
new ParameterDefn<float>("MaxAddForceMagnitude", "Maximum force that can be applied by llApplyImpulse (SL says 20f)",
|
new ParameterDefn<float>("MaxAddForceMagnitude", "Maximum force that can be applied by llApplyImpulse (SL says 20f)",
|
||||||
20000.0f,
|
20000.0f,
|
||||||
(s) => { return MaxAddForceMagnitude; },
|
(s) => { return MaxAddForceMagnitude; },
|
||||||
(s,v) => { MaxAddForceMagnitude = v; } ),
|
(s,v) => { MaxAddForceMagnitude = v; MaxAddForceMagnitudeSquared = v * v; } ),
|
||||||
// Density is passed around as 100kg/m3. This scales that to 1kg/m3.
|
// Density is passed around as 100kg/m3. This scales that to 1kg/m3.
|
||||||
new ParameterDefn<float>("DensityScaleFactor", "Conversion for simulator/viewer density (100kg/m3) to physical density (1kg/m3)",
|
new ParameterDefn<float>("DensityScaleFactor", "Conversion for simulator/viewer density (100kg/m3) to physical density (1kg/m3)",
|
||||||
0.01f,
|
0.01f,
|
||||||
|
@ -505,7 +513,7 @@ public static class BSParam
|
||||||
new ParameterDefn<float>("VehicleMaxLinearVelocity", "Maximum velocity magnitude that can be assigned to a vehicle",
|
new ParameterDefn<float>("VehicleMaxLinearVelocity", "Maximum velocity magnitude that can be assigned to a vehicle",
|
||||||
1000.0f,
|
1000.0f,
|
||||||
(s) => { return (float)VehicleMaxLinearVelocity; },
|
(s) => { return (float)VehicleMaxLinearVelocity; },
|
||||||
(s,v) => { VehicleMaxLinearVelocity = v; VehicleMaxLinearVelocitySq = v * v; } ),
|
(s,v) => { VehicleMaxLinearVelocity = v; VehicleMaxLinearVelocitySquared = v * v; } ),
|
||||||
new ParameterDefn<float>("VehicleMaxAngularVelocity", "Maximum rotational velocity magnitude that can be assigned to a vehicle",
|
new ParameterDefn<float>("VehicleMaxAngularVelocity", "Maximum rotational velocity magnitude that can be assigned to a vehicle",
|
||||||
12.0f,
|
12.0f,
|
||||||
(s) => { return (float)VehicleMaxAngularVelocity; },
|
(s) => { return (float)VehicleMaxAngularVelocity; },
|
||||||
|
|
|
@ -108,6 +108,9 @@ public class BSPrim : BSPhysObject
|
||||||
// do the actual object creation at taint time
|
// do the actual object creation at taint time
|
||||||
PhysicsScene.TaintedObject("BSPrim.create", delegate()
|
PhysicsScene.TaintedObject("BSPrim.create", delegate()
|
||||||
{
|
{
|
||||||
|
// Make sure the object is being created with some sanity.
|
||||||
|
ExtremeSanityCheck(true /* inTaintTime */);
|
||||||
|
|
||||||
CreateGeomAndObject(true);
|
CreateGeomAndObject(true);
|
||||||
|
|
||||||
CurrentCollisionFlags = PhysicsScene.PE.GetCollisionFlags(PhysBody);
|
CurrentCollisionFlags = PhysicsScene.PE.GetCollisionFlags(PhysBody);
|
||||||
|
@ -450,6 +453,38 @@ public class BSPrim : BSPhysObject
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Occasionally things will fly off and really get lost.
|
||||||
|
// Find the wanderers and bring them back.
|
||||||
|
// Return 'true' if some parameter need some sanity.
|
||||||
|
private bool ExtremeSanityCheck(bool inTaintTime)
|
||||||
|
{
|
||||||
|
bool ret = false;
|
||||||
|
|
||||||
|
uint wayOutThere = Constants.RegionSize * Constants.RegionSize;
|
||||||
|
// There have been instances of objects getting thrown way out of bounds and crashing
|
||||||
|
// the border crossing code.
|
||||||
|
if ( _position.X < -Constants.RegionSize || _position.X > wayOutThere
|
||||||
|
|| _position.Y < -Constants.RegionSize || _position.Y > wayOutThere
|
||||||
|
|| _position.Z < -Constants.RegionSize || _position.Z > wayOutThere)
|
||||||
|
{
|
||||||
|
_position = new OMV.Vector3(10, 10, 50);
|
||||||
|
ZeroMotion(inTaintTime);
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
if (_velocity.LengthSquared() > BSParam.MaxLinearVelocity)
|
||||||
|
{
|
||||||
|
_velocity = Util.ClampV(_velocity, BSParam.MaxLinearVelocity);
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
if (_rotationalVelocity.LengthSquared() > BSParam.MaxAngularVelocitySquared)
|
||||||
|
{
|
||||||
|
_rotationalVelocity = Util.ClampV(_rotationalVelocity, BSParam.MaxAngularVelocity);
|
||||||
|
ret = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
// Return the effective mass of the object.
|
// Return the effective mass of the object.
|
||||||
// The definition of this call is to return the mass of the prim.
|
// The definition of this call is to return the mass of the prim.
|
||||||
// If the simulator cares about the mass of the linkset, it will sum it itself.
|
// If the simulator cares about the mass of the linkset, it will sum it itself.
|
||||||
|
@ -585,12 +620,12 @@ public class BSPrim : BSPhysObject
|
||||||
if (VehicleController.Type == Vehicle.TYPE_NONE)
|
if (VehicleController.Type == Vehicle.TYPE_NONE)
|
||||||
{
|
{
|
||||||
UnRegisterPreStepAction("BSPrim.Vehicle", LocalID);
|
UnRegisterPreStepAction("BSPrim.Vehicle", LocalID);
|
||||||
PhysicsScene.AfterStep -= VehicleController.PostStep;
|
UnRegisterPostStepAction("BSPrim.Vehicle", LocalID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
RegisterPreStepAction("BSPrim.Vehicle", LocalID, VehicleController.Step);
|
RegisterPreStepAction("BSPrim.Vehicle", LocalID, VehicleController.Step);
|
||||||
PhysicsScene.AfterStep += VehicleController.PostStep;
|
RegisterPostStepAction("BSPrim.Vehicle", LocalID, VehicleController.PostStep);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -732,7 +767,7 @@ public class BSPrim : BSPhysObject
|
||||||
set {
|
set {
|
||||||
PhysicsScene.AssertInTaintTime("BSPrim.ForceVelocity");
|
PhysicsScene.AssertInTaintTime("BSPrim.ForceVelocity");
|
||||||
|
|
||||||
_velocity = value;
|
_velocity = Util.ClampV(value, BSParam.MaxLinearVelocity);
|
||||||
if (PhysBody.HasPhysicalBody)
|
if (PhysBody.HasPhysicalBody)
|
||||||
{
|
{
|
||||||
DetailLog("{0},BSPrim.ForceVelocity,taint,vel={1}", LocalID, _velocity);
|
DetailLog("{0},BSPrim.ForceVelocity,taint,vel={1}", LocalID, _velocity);
|
||||||
|
@ -1098,7 +1133,7 @@ public class BSPrim : BSPhysObject
|
||||||
return _rotationalVelocity;
|
return _rotationalVelocity;
|
||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
_rotationalVelocity = value;
|
_rotationalVelocity = Util.ClampV(value, BSParam.MaxAngularVelocity);
|
||||||
if (PhysBody.HasPhysicalBody)
|
if (PhysBody.HasPhysicalBody)
|
||||||
{
|
{
|
||||||
DetailLog("{0},BSPrim.ForceRotationalVel,taint,rotvel={1}", LocalID, _rotationalVelocity);
|
DetailLog("{0},BSPrim.ForceRotationalVel,taint,rotvel={1}", LocalID, _rotationalVelocity);
|
||||||
|
@ -1230,6 +1265,7 @@ public class BSPrim : BSPhysObject
|
||||||
|
|
||||||
RegisterPreStepAction("BSPrim.Hover", LocalID, delegate(float timeStep)
|
RegisterPreStepAction("BSPrim.Hover", LocalID, delegate(float timeStep)
|
||||||
{
|
{
|
||||||
|
// Don't do hovering while the object is selected.
|
||||||
if (!IsPhysicallyActive)
|
if (!IsPhysicallyActive)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1737,10 +1773,9 @@ public class BSPrim : BSPhysObject
|
||||||
// Assign directly to the local variables so the normal set actions do not happen
|
// Assign directly to the local variables so the normal set actions do not happen
|
||||||
_position = entprop.Position;
|
_position = entprop.Position;
|
||||||
_orientation = entprop.Rotation;
|
_orientation = entprop.Rotation;
|
||||||
// _velocity = entprop.Velocity;
|
|
||||||
// DEBUG DEBUG DEBUG -- smooth velocity changes a bit. The simulator seems to be
|
// DEBUG DEBUG DEBUG -- smooth velocity changes a bit. The simulator seems to be
|
||||||
// very sensitive to velocity changes.
|
// very sensitive to velocity changes.
|
||||||
if (entprop.Velocity == OMV.Vector3.Zero || !entprop.Velocity.ApproxEquals(_velocity, 0.1f))
|
if (entprop.Velocity == OMV.Vector3.Zero || !entprop.Velocity.ApproxEquals(_velocity, BSParam.UpdateVelocityChangeThreshold))
|
||||||
_velocity = entprop.Velocity;
|
_velocity = entprop.Velocity;
|
||||||
_acceleration = entprop.Acceleration;
|
_acceleration = entprop.Acceleration;
|
||||||
_rotationalVelocity = entprop.RotationalVelocity;
|
_rotationalVelocity = entprop.RotationalVelocity;
|
||||||
|
|
|
@ -9,6 +9,9 @@ Enable vehicle border crossings (at least as poorly as ODE)
|
||||||
Lock axis
|
Lock axis
|
||||||
Deleting a linkset while standing on the root will leave the physical shape of the root behind.
|
Deleting a linkset while standing on the root will leave the physical shape of the root behind.
|
||||||
Not sure if it is because standing on it. Done with large prim linksets.
|
Not sure if it is because standing on it. Done with large prim linksets.
|
||||||
|
Linkset child rotations.
|
||||||
|
Nebadon spiral tube has middle sections which are rotated wrong.
|
||||||
|
Select linked spiral tube. Delink and note where the middle section ends up.
|
||||||
Vehicle angular vertical attraction
|
Vehicle angular vertical attraction
|
||||||
vehicle angular banking
|
vehicle angular banking
|
||||||
Center-of-gravity
|
Center-of-gravity
|
||||||
|
@ -68,6 +71,8 @@ Vehicle attributes are not restored when a vehicle is rezzed on region creation
|
||||||
|
|
||||||
GENERAL TODO LIST:
|
GENERAL TODO LIST:
|
||||||
=================================================
|
=================================================
|
||||||
|
Explore btGImpactMeshShape as alternative to convex hulls for simplified physical objects.
|
||||||
|
Regular triangle meshes don't do physical collisions.
|
||||||
Resitution of a prim works on another prim but not on terrain.
|
Resitution of a prim works on another prim but not on terrain.
|
||||||
The dropped prim doesn't bounce properly on the terrain.
|
The dropped prim doesn't bounce properly on the terrain.
|
||||||
Add a sanity check for PIDTarget location.
|
Add a sanity check for PIDTarget location.
|
||||||
|
@ -338,4 +343,4 @@ Avatar standing on a moving object should start to move with the object. (DONE 2
|
||||||
Angular motion around Z moves the vehicle in world Z and not vehicle Z in ODE.
|
Angular motion around Z moves the vehicle in world Z and not vehicle Z in ODE.
|
||||||
Verify that angular motion specified around Z moves in the vehicle coordinates.
|
Verify that angular motion specified around Z moves in the vehicle coordinates.
|
||||||
DONE 20130120: BulletSim properly applies force in vehicle relative coordinates.
|
DONE 20130120: BulletSim properly applies force in vehicle relative coordinates.
|
||||||
Nebadon vehicles turning funny in arena (DONE)
|
Nebadon vehicles turning funny in arena (DONE)
|
||||||
|
|
|
@ -186,6 +186,10 @@ namespace OpenSim.Server.Base
|
||||||
XmlConfigurator.Configure();
|
XmlConfigurator.Configure();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: This should be done down in ServerBase but we need to sort out and refactor the log4net
|
||||||
|
// XmlConfigurator calls first accross servers.
|
||||||
|
m_log.InfoFormat("[SERVER BASE]: Starting in {0}", m_startupDirectory);
|
||||||
|
|
||||||
RegisterCommonAppenders(startupConfig);
|
RegisterCommonAppenders(startupConfig);
|
||||||
|
|
||||||
if (startupConfig.GetString("PIDFile", String.Empty) != String.Empty)
|
if (startupConfig.GetString("PIDFile", String.Empty) != String.Empty)
|
||||||
|
|
|
@ -216,6 +216,77 @@
|
||||||
; physics = basicphysics
|
; physics = basicphysics
|
||||||
; physics = POS
|
; physics = POS
|
||||||
|
|
||||||
|
;# {DefaultScriptEngine} {} {Default script engine} {XEngine} XEngine
|
||||||
|
;; Default script engine to use. Currently, we only have XEngine
|
||||||
|
; DefaultScriptEngine = "XEngine"
|
||||||
|
|
||||||
|
;# {HttpProxy} {} {Proxy URL for llHTTPRequest and dynamic texture loading} {} http://proxy.com:8080
|
||||||
|
;; Http proxy setting for llHTTPRequest and dynamic texture loading, if
|
||||||
|
;; required
|
||||||
|
; HttpProxy = "http://proxy.com:8080"
|
||||||
|
|
||||||
|
;# {HttpProxyExceptions} {HttpProxy} {Set of regular expressions defining URL that should not be proxied} {}
|
||||||
|
;; If you're using HttpProxy, then you can set HttpProxyExceptions to a
|
||||||
|
;; list of regular expressions for URLs that you don't want to go through
|
||||||
|
;; the proxy.
|
||||||
|
;; For example, servers inside your firewall.
|
||||||
|
;; Separate patterns with a ';'
|
||||||
|
; HttpProxyExceptions = ".mydomain.com;localhost"
|
||||||
|
|
||||||
|
;# {emailmodule} {} {Provide llEmail and llGetNextEmail functionality? (requires SMTP server)} {true false} false
|
||||||
|
;; The email module requires some configuration. It needs an SMTP
|
||||||
|
;; server to send mail through.
|
||||||
|
; emailmodule = DefaultEmailModule
|
||||||
|
|
||||||
|
;# {SpawnPointRouting} {} {Set routing method for Telehub Spawnpoints} {closest random sequence} closest
|
||||||
|
;; SpawnPointRouting adjusts the landing for incoming avatars.
|
||||||
|
;; "closest" will place the avatar at the SpawnPoint located in the closest
|
||||||
|
;; available spot to the destination (typically map click/landmark).
|
||||||
|
;; "random" will place the avatar on a randomly selected spawnpoint;
|
||||||
|
;; "sequence" will place the avatar on the next sequential SpawnPoint
|
||||||
|
; SpawnPointRouting = closest
|
||||||
|
|
||||||
|
;# {TelehubAllowLandmark} {} {Allow users with landmarks to override telehub routing} {true false} false
|
||||||
|
;; TelehubAllowLandmark allows users with landmarks to override telehub
|
||||||
|
;; routing and land at the landmark coordinates when set to true
|
||||||
|
;; default is false
|
||||||
|
; TelehubAllowLandmark = false
|
||||||
|
|
||||||
|
[Map]
|
||||||
|
;# {GenerateMaptiles} {} {Generate map tiles?} {true false} true
|
||||||
|
;; Map tile options.
|
||||||
|
;; If true, then maptiles are generated using the MapImageModule below.
|
||||||
|
;; If false then the texture referenced by MaptileStaticUUID is used instead, which can also be overriden
|
||||||
|
;; in individual region config file(s). If you do not want to upload map tiles at all, then you will need
|
||||||
|
;; both to set this to false and comment out the [Modules] MapImageServiceModule setting in config-include/
|
||||||
|
; GenerateMaptiles = true
|
||||||
|
|
||||||
|
;# {MapImageModule} [] {The map image module to use} {MapImageModule Warp3DImageModule} MapImageModule
|
||||||
|
;; The module to use in order to generate map images.
|
||||||
|
;; MapImageModule is the default. Warp3DImageModule is an alternative experimental module that can
|
||||||
|
;; generate better images.
|
||||||
|
;MapImageModule = "MapImageModule"
|
||||||
|
|
||||||
|
;# {MaptileRefresh} {GenerateMaptiles} {Maptile refresh period?} {} 0
|
||||||
|
;; If desired, a running region can update the map tiles periodically
|
||||||
|
;; to reflect building activity. This names no sense of you don't have
|
||||||
|
;; prims on maptiles. Value is in seconds.
|
||||||
|
; MaptileRefresh = 0
|
||||||
|
|
||||||
|
;# {MaptileStaticUUID} {} {Asset ID for static map texture} {} 00000000-0000-0000-0000-000000000000
|
||||||
|
;; If not generating maptiles, use this static texture asset ID
|
||||||
|
; MaptileStaticUUID = "00000000-0000-0000-0000-000000000000"
|
||||||
|
|
||||||
|
;# {TextureOnMapTile} {} {Use terrain textures for map tiles?} {true false} true
|
||||||
|
;; Use terrain texture for maptiles if true, use shaded green if false
|
||||||
|
; TextureOnMapTile = true
|
||||||
|
|
||||||
|
;# {DrawPrimOnMapTile} {} {Draw prim shapes on map tiles?} {true false} false
|
||||||
|
;; Draw objects on maptile. This step might take a long time if you've
|
||||||
|
;; got a large number of objects, so you can turn it off here if you'd like.
|
||||||
|
; DrawPrimOnMapTile = true
|
||||||
|
|
||||||
|
[Permissions]
|
||||||
;# {permissionmodules} {} {Permission modules to use (may specify multiple modules, separated by comma} {} DefaultPermissionsModule
|
;# {permissionmodules} {} {Permission modules to use (may specify multiple modules, separated by comma} {} DefaultPermissionsModule
|
||||||
;; Permission modules to use, separated by comma.
|
;; Permission modules to use, separated by comma.
|
||||||
;; Possible modules are DefaultPermissionsModule, PrimLimitsModule
|
;; Possible modules are DefaultPermissionsModule, PrimLimitsModule
|
||||||
|
@ -260,97 +331,6 @@
|
||||||
; simple_build_permissions = false
|
; simple_build_permissions = false
|
||||||
|
|
||||||
|
|
||||||
;# {DefaultScriptEngine} {} {Default script engine} {XEngine} XEngine
|
|
||||||
;; Default script engine to use. Currently, we only have XEngine
|
|
||||||
; DefaultScriptEngine = "XEngine"
|
|
||||||
|
|
||||||
;# {HttpProxy} {} {Proxy URL for llHTTPRequest and dynamic texture loading} {} http://proxy.com:8080
|
|
||||||
;; Http proxy setting for llHTTPRequest and dynamic texture loading, if
|
|
||||||
;; required
|
|
||||||
; HttpProxy = "http://proxy.com:8080"
|
|
||||||
|
|
||||||
;# {HttpProxyExceptions} {HttpProxy} {Set of regular expressions defining URL that should not be proxied} {}
|
|
||||||
;; If you're using HttpProxy, then you can set HttpProxyExceptions to a
|
|
||||||
;; list of regular expressions for URLs that you don't want to go through
|
|
||||||
;; the proxy.
|
|
||||||
;; For example, servers inside your firewall.
|
|
||||||
;; Separate patterns with a ';'
|
|
||||||
; HttpProxyExceptions = ".mydomain.com;localhost"
|
|
||||||
|
|
||||||
;# {emailmodule} {} {Provide llEmail and llGetNextEmail functionality? (requires SMTP server)} {true false} false
|
|
||||||
;; The email module requires some configuration. It needs an SMTP
|
|
||||||
;; server to send mail through.
|
|
||||||
; emailmodule = DefaultEmailModule
|
|
||||||
|
|
||||||
;# {SpawnPointRouting} {} {Set routing method for Telehub Spawnpoints} {closest random sequence} closest
|
|
||||||
;; SpawnPointRouting adjusts the landing for incoming avatars.
|
|
||||||
;; "closest" will place the avatar at the SpawnPoint located in the closest
|
|
||||||
;; available spot to the destination (typically map click/landmark).
|
|
||||||
;; "random" will place the avatar on a randomly selected spawnpoint;
|
|
||||||
;; "sequence" will place the avatar on the next sequential SpawnPoint
|
|
||||||
; SpawnPointRouting = closest
|
|
||||||
|
|
||||||
;# {TelehubAllowLandmark} {} {Allow users with landmarks to override telehub routing} {true false} false
|
|
||||||
;; TelehubAllowLandmark allows users with landmarks to override telehub
|
|
||||||
;; routing and land at the landmark coordinates when set to true
|
|
||||||
;; default is false
|
|
||||||
; TelehubAllowLandmark = false
|
|
||||||
|
|
||||||
;# {AllowedClients} {} {Bar (|) separated list of allowed clients} {}
|
|
||||||
;; Bar (|) separated list of viewers which may gain access to the regions.
|
|
||||||
;; One can use a substring of the viewer name to enable only certain
|
|
||||||
;; versions
|
|
||||||
;; Example: Agent uses the viewer "Imprudence 1.3.2.0"
|
|
||||||
;; - "Imprudence" has access
|
|
||||||
;; - "Imprudence 1.3" has access
|
|
||||||
;; - "Imprudence 1.3.1" has no access
|
|
||||||
; AllowedViewerList =
|
|
||||||
|
|
||||||
;# {BannedClients} {} {Bar (|) separated list of banned clients} {}
|
|
||||||
;# Bar (|) separated list of viewers which may not gain access to the regions.
|
|
||||||
;; One can use a Substring of the viewer name to disable only certain
|
|
||||||
;; versions
|
|
||||||
;; Example: Agent uses the viewer "Imprudence 1.3.2.0"
|
|
||||||
;; - "Imprudence" has no access
|
|
||||||
;; - "Imprudence 1.3" has no access
|
|
||||||
;; - "Imprudence 1.3.1" has access
|
|
||||||
; BannedViewerList =
|
|
||||||
|
|
||||||
[Map]
|
|
||||||
;# {GenerateMaptiles} {} {Generate map tiles?} {true false} true
|
|
||||||
;; Map tile options.
|
|
||||||
;; If true, then maptiles are generated using the MapImageModule below.
|
|
||||||
;; If false then the texture referenced by MaptileStaticUUID is used instead, which can also be overriden
|
|
||||||
;; in individual region config file(s). If you do not want to upload map tiles at all, then you will need
|
|
||||||
;; both to set this to false and comment out the [Modules] MapImageServiceModule setting in config-include/
|
|
||||||
; GenerateMaptiles = true
|
|
||||||
|
|
||||||
;# {MapImageModule} [] {The map image module to use} {MapImageModule Warp3DImageModule} MapImageModule
|
|
||||||
;; The module to use in order to generate map images.
|
|
||||||
;; MapImageModule is the default. Warp3DImageModule is an alternative experimental module that can
|
|
||||||
;; generate better images.
|
|
||||||
;MapImageModule = "MapImageModule"
|
|
||||||
|
|
||||||
;# {MaptileRefresh} {GenerateMaptiles} {Maptile refresh period?} {} 0
|
|
||||||
;; If desired, a running region can update the map tiles periodically
|
|
||||||
;; to reflect building activity. This names no sense of you don't have
|
|
||||||
;; prims on maptiles. Value is in seconds.
|
|
||||||
; MaptileRefresh = 0
|
|
||||||
|
|
||||||
;# {MaptileStaticUUID} {} {Asset ID for static map texture} {} 00000000-0000-0000-0000-000000000000
|
|
||||||
;; If not generating maptiles, use this static texture asset ID
|
|
||||||
; MaptileStaticUUID = "00000000-0000-0000-0000-000000000000"
|
|
||||||
|
|
||||||
;# {TextureOnMapTile} {} {Use terrain textures for map tiles?} {true false} true
|
|
||||||
;; Use terrain texture for maptiles if true, use shaded green if false
|
|
||||||
; TextureOnMapTile = true
|
|
||||||
|
|
||||||
;# {DrawPrimOnMapTile} {} {Draw prim shapes on map tiles?} {true false} false
|
|
||||||
;; Draw objects on maptile. This step might take a long time if you've
|
|
||||||
;; got a large number of objects, so you can turn it off here if you'd like.
|
|
||||||
; DrawPrimOnMapTile = true
|
|
||||||
|
|
||||||
|
|
||||||
[Estates]
|
[Estates]
|
||||||
; If these values are commented out then the user will be asked for estate details when required (this is the normal case).
|
; If these values are commented out then the user will be asked for estate details when required (this is the normal case).
|
||||||
; If these values are uncommented then they will be used to create a default estate as necessary.
|
; If these values are uncommented then they will be used to create a default estate as necessary.
|
||||||
|
|
|
@ -226,54 +226,6 @@
|
||||||
;physics = modified_BulletX
|
;physics = modified_BulletX
|
||||||
;physics = BulletSim
|
;physics = BulletSim
|
||||||
|
|
||||||
; ##
|
|
||||||
; ## PERMISSIONS
|
|
||||||
; ##
|
|
||||||
|
|
||||||
;permissionmodules = "DefaultPermissionsModule"
|
|
||||||
|
|
||||||
; If set to false, then, in theory, the server never carries out permission checks (allowing anybody to copy
|
|
||||||
; any item, etc. This may not yet be implemented uniformally.
|
|
||||||
; If set to true, then all permissions checks are carried out
|
|
||||||
; Default is true
|
|
||||||
serverside_object_permissions = true
|
|
||||||
|
|
||||||
allow_grid_gods = false
|
|
||||||
|
|
||||||
; This allows somne control over permissions
|
|
||||||
; please note that this still doesn't duplicate SL, and is not intended to
|
|
||||||
;region_owner_is_god = true
|
|
||||||
;region_manager_is_god = false
|
|
||||||
;parcel_owner_is_god = true
|
|
||||||
|
|
||||||
; Control user types that are allowed to create new scripts
|
|
||||||
; Only enforced if serviceside_object_permissions is true
|
|
||||||
;
|
|
||||||
; Current possible values are
|
|
||||||
; all - anyone can create scripts (subject to normal permissions)
|
|
||||||
; gods - only administrators can create scripts (as long as allow_grid_gods is true)
|
|
||||||
; Default value is all
|
|
||||||
; allowed_script_creators = all
|
|
||||||
|
|
||||||
; Control user types that are allowed to edit (save) scripts
|
|
||||||
; Only enforced if serviceside_object_permissions is true
|
|
||||||
;
|
|
||||||
; Current possible values are
|
|
||||||
; all - anyone can edit scripts (subject to normal permissions)
|
|
||||||
; gods - only administrators can edit scripts (as long as allow_grid_gods is true)
|
|
||||||
; Default value is all
|
|
||||||
; allowed_script_editors = all
|
|
||||||
|
|
||||||
; Provides a simple control for land owners to give build rights to specific avatars
|
|
||||||
; in publicly accessible parcels that disallow object creation in general.
|
|
||||||
; Owners specific avatars by adding them to the Access List of the parcel
|
|
||||||
; without having to use the Groups feature
|
|
||||||
; Disabled by default
|
|
||||||
; simple_build_permissions = False
|
|
||||||
|
|
||||||
; Minimum user level required to upload assets
|
|
||||||
;LevelUpload = 0
|
|
||||||
|
|
||||||
; ##
|
; ##
|
||||||
; ## SCRIPT ENGINE
|
; ## SCRIPT ENGINE
|
||||||
; ##
|
; ##
|
||||||
|
@ -340,6 +292,55 @@
|
||||||
; Use terrain texture for maptiles if true, use shaded green if false
|
; Use terrain texture for maptiles if true, use shaded green if false
|
||||||
TextureOnMapTile = true
|
TextureOnMapTile = true
|
||||||
|
|
||||||
|
[Permissions]
|
||||||
|
; ##
|
||||||
|
; ## PERMISSIONS
|
||||||
|
; ##
|
||||||
|
|
||||||
|
;permissionmodules = "DefaultPermissionsModule"
|
||||||
|
|
||||||
|
; If set to false, then, in theory, the server never carries out permission checks (allowing anybody to copy
|
||||||
|
; any item, etc. This may not yet be implemented uniformally.
|
||||||
|
; If set to true, then all permissions checks are carried out
|
||||||
|
; Default is true
|
||||||
|
serverside_object_permissions = true
|
||||||
|
|
||||||
|
allow_grid_gods = false
|
||||||
|
|
||||||
|
; This allows somne control over permissions
|
||||||
|
; please note that this still doesn't duplicate SL, and is not intended to
|
||||||
|
;region_owner_is_god = true
|
||||||
|
;region_manager_is_god = false
|
||||||
|
;parcel_owner_is_god = true
|
||||||
|
|
||||||
|
; Control user types that are allowed to create new scripts
|
||||||
|
; Only enforced if serviceside_object_permissions is true
|
||||||
|
;
|
||||||
|
; Current possible values are
|
||||||
|
; all - anyone can create scripts (subject to normal permissions)
|
||||||
|
; gods - only administrators can create scripts (as long as allow_grid_gods is true)
|
||||||
|
; Default value is all
|
||||||
|
; allowed_script_creators = all
|
||||||
|
|
||||||
|
; Control user types that are allowed to edit (save) scripts
|
||||||
|
; Only enforced if serviceside_object_permissions is true
|
||||||
|
;
|
||||||
|
; Current possible values are
|
||||||
|
; all - anyone can edit scripts (subject to normal permissions)
|
||||||
|
; gods - only administrators can edit scripts (as long as allow_grid_gods is true)
|
||||||
|
; Default value is all
|
||||||
|
; allowed_script_editors = all
|
||||||
|
|
||||||
|
; Provides a simple control for land owners to give build rights to specific avatars
|
||||||
|
; in publicly accessible parcels that disallow object creation in general.
|
||||||
|
; Owners specific avatars by adding them to the Access List of the parcel
|
||||||
|
; without having to use the Groups feature
|
||||||
|
; Disabled by default
|
||||||
|
; simple_build_permissions = False
|
||||||
|
|
||||||
|
; Minimum user level required to upload assets
|
||||||
|
;LevelUpload = 0
|
||||||
|
|
||||||
|
|
||||||
[RegionReady]
|
[RegionReady]
|
||||||
; Enable this module to get notified once all items and scripts in the region have been completely loaded and compiled
|
; Enable this module to get notified once all items and scripts in the region have been completely loaded and compiled
|
||||||
|
|
|
@ -3513,6 +3513,7 @@
|
||||||
|
|
||||||
<ReferencePath>../../../bin/</ReferencePath>
|
<ReferencePath>../../../bin/</ReferencePath>
|
||||||
<Reference name="System"/>
|
<Reference name="System"/>
|
||||||
|
<Reference name="System.Core"/>
|
||||||
<Reference name="System.Xml"/>
|
<Reference name="System.Xml"/>
|
||||||
<Reference name="OpenSim.Framework"/>
|
<Reference name="OpenSim.Framework"/>
|
||||||
<Reference name="OpenSim.Framework.Communications"/>
|
<Reference name="OpenSim.Framework.Communications"/>
|
||||||
|
|
Loading…
Reference in New Issue