Merge branch 'master' into careminster
commit
a675f7d4c3
|
@ -138,6 +138,10 @@ namespace OpenSim
|
|||
/// <param name="configSource"></param>
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -156,9 +156,8 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
|||
|
||||
public void Initialise(IConfigSource config)
|
||||
{
|
||||
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(','));
|
||||
|
||||
|
@ -167,26 +166,34 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
|||
|
||||
m_Enabled = true;
|
||||
|
||||
m_allowGridGods = myConfig.GetBoolean("allow_grid_gods", false);
|
||||
m_bypassPermissions = !myConfig.GetBoolean("serverside_object_permissions", true);
|
||||
m_propagatePermissions = myConfig.GetBoolean("propagate_permissions", true);
|
||||
m_RegionOwnerIsGod = myConfig.GetBoolean("region_owner_is_god", true);
|
||||
m_RegionManagerIsGod = myConfig.GetBoolean("region_manager_is_god", false);
|
||||
m_ParcelOwnerIsGod = myConfig.GetBoolean("parcel_owner_is_god", true);
|
||||
m_allowGridGods = Util.GetConfigVarFromSections<bool>(config, "allow_grid_gods",
|
||||
new string[] { "Startup", "Permissions" }, false);
|
||||
m_bypassPermissions = !Util.GetConfigVarFromSections<bool>(config, "serverside_object_permissions",
|
||||
new string[] { "Startup", "Permissions" }, true);
|
||||
m_propagatePermissions = Util.GetConfigVarFromSections<bool>(config, "propagate_permissions",
|
||||
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
|
||||
= ParseUserSetConfigSetting(myConfig, "allowed_script_creators", m_allowedScriptCreators);
|
||||
= ParseUserSetConfigSetting(config, "allowed_script_creators", m_allowedScriptCreators);
|
||||
m_allowedScriptEditors
|
||||
= ParseUserSetConfigSetting(myConfig, "allowed_script_editors", m_allowedScriptEditors);
|
||||
= ParseUserSetConfigSetting(config, "allowed_script_editors", m_allowedScriptEditors);
|
||||
|
||||
if (m_bypassPermissions)
|
||||
m_log.Info("[PERMISSIONS]: serverside_object_permissions = false in ini file so disabling all region service permission checks");
|
||||
else
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
foreach (string uuidl in grant.Split(','))
|
||||
|
@ -464,11 +475,12 @@ namespace OpenSim.Region.CoreModules.World.Permissions
|
|||
/// <param name="settingName"></param>
|
||||
/// <param name="defaultValue">The default value for this attribute</param>
|
||||
/// <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;
|
||||
|
||||
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
|
||||
// this should disappear.
|
||||
|
|
|
@ -148,8 +148,6 @@ namespace OpenSim.Region.DataSnapshot
|
|||
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_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_snapStore.AddScene(scene);
|
||||
|
||||
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)
|
||||
|
|
|
@ -33,10 +33,11 @@ using Nini.Config;
|
|||
using OpenSim.Region.Framework.Interfaces;
|
||||
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
|
||||
// the available DLLs
|
||||
//[assembly: Addin("MyModule", "1.0")]
|
||||
//[assembly: AddinDependency("OpenSim", "0.5")]
|
||||
|
||||
namespace OpenSim.Region.OptionalModules.Example.BareBonesNonShared
|
||||
{
|
||||
|
|
|
@ -33,10 +33,11 @@ using Nini.Config;
|
|||
using OpenSim.Region.Framework.Interfaces;
|
||||
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
|
||||
// the available DLLs
|
||||
//[assembly: Addin("MyModule", "1.0")]
|
||||
//[assembly: AddinDependency("OpenSim", "0.5")]
|
||||
|
||||
namespace OpenSim.Region.OptionalModules.Example.BareBonesShared
|
||||
{
|
||||
|
|
|
@ -57,9 +57,10 @@ namespace OpenSim.Region.OptionalModules
|
|||
|
||||
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(','));
|
||||
|
||||
|
|
|
@ -961,13 +961,13 @@ namespace OpenSim.Region.Physics.BulletSPlugin
|
|||
// ==================================================================
|
||||
// Clamp high or low velocities
|
||||
float newVelocityLengthSq = VehicleVelocity.LengthSquared();
|
||||
if (newVelocityLengthSq > BSParam.VehicleMaxLinearVelocitySq)
|
||||
if (newVelocityLengthSq > BSParam.VehicleMaxLinearVelocitySquared)
|
||||
{
|
||||
Vector3 origVelW = VehicleVelocity; // DEBUG DEBUG
|
||||
VehicleVelocity /= VehicleVelocity.Length();
|
||||
VehicleVelocity *= BSParam.VehicleMaxLinearVelocity;
|
||||
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)
|
||||
VehicleVelocity = Vector3.Zero;
|
||||
|
|
|
@ -47,12 +47,16 @@ public static class BSParam
|
|||
public static float SculptLOD { 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 MaximumObjectMass { 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 MaxAngularVelocitySquared { 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 LinearDamping { get; private set; }
|
||||
|
@ -109,7 +113,7 @@ public static class BSParam
|
|||
|
||||
// Vehicle parameters
|
||||
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 VehicleMaxAngularVelocitySq { 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:
|
||||
// s = BSScene
|
||||
// o = BSPhysObject
|
||||
// v = value (float)
|
||||
// v = value (appropriate type)
|
||||
private static ParameterDefnBase[] ParameterDefinitions =
|
||||
{
|
||||
new ParameterDefn<bool>("MeshSculptedPrim", "Whether to create meshes for sculpties",
|
||||
|
@ -289,6 +293,10 @@ public static class BSParam
|
|||
5,
|
||||
(s) => { return CrossingFailuresBeforeOutOfBounds; },
|
||||
(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)",
|
||||
32f,
|
||||
|
@ -343,16 +351,16 @@ public static class BSParam
|
|||
new ParameterDefn<float>("MaxLinearVelocity", "Maximum velocity magnitude that can be assigned to an object",
|
||||
1000.0f,
|
||||
(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",
|
||||
1000.0f,
|
||||
(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
|
||||
new ParameterDefn<float>("MaxAddForceMagnitude", "Maximum force that can be applied by llApplyImpulse (SL says 20f)",
|
||||
20000.0f,
|
||||
(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.
|
||||
new ParameterDefn<float>("DensityScaleFactor", "Conversion for simulator/viewer density (100kg/m3) to physical density (1kg/m3)",
|
||||
0.01f,
|
||||
|
@ -505,7 +513,7 @@ public static class BSParam
|
|||
new ParameterDefn<float>("VehicleMaxLinearVelocity", "Maximum velocity magnitude that can be assigned to a vehicle",
|
||||
1000.0f,
|
||||
(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",
|
||||
12.0f,
|
||||
(s) => { return (float)VehicleMaxAngularVelocity; },
|
||||
|
|
|
@ -108,6 +108,9 @@ public class BSPrim : BSPhysObject
|
|||
// do the actual object creation at taint time
|
||||
PhysicsScene.TaintedObject("BSPrim.create", delegate()
|
||||
{
|
||||
// Make sure the object is being created with some sanity.
|
||||
ExtremeSanityCheck(true /* inTaintTime */);
|
||||
|
||||
CreateGeomAndObject(true);
|
||||
|
||||
CurrentCollisionFlags = PhysicsScene.PE.GetCollisionFlags(PhysBody);
|
||||
|
@ -450,6 +453,38 @@ public class BSPrim : BSPhysObject
|
|||
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.
|
||||
// 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.
|
||||
|
@ -585,12 +620,12 @@ public class BSPrim : BSPhysObject
|
|||
if (VehicleController.Type == Vehicle.TYPE_NONE)
|
||||
{
|
||||
UnRegisterPreStepAction("BSPrim.Vehicle", LocalID);
|
||||
PhysicsScene.AfterStep -= VehicleController.PostStep;
|
||||
UnRegisterPostStepAction("BSPrim.Vehicle", LocalID);
|
||||
}
|
||||
else
|
||||
{
|
||||
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 {
|
||||
PhysicsScene.AssertInTaintTime("BSPrim.ForceVelocity");
|
||||
|
||||
_velocity = value;
|
||||
_velocity = Util.ClampV(value, BSParam.MaxLinearVelocity);
|
||||
if (PhysBody.HasPhysicalBody)
|
||||
{
|
||||
DetailLog("{0},BSPrim.ForceVelocity,taint,vel={1}", LocalID, _velocity);
|
||||
|
@ -1098,7 +1133,7 @@ public class BSPrim : BSPhysObject
|
|||
return _rotationalVelocity;
|
||||
}
|
||||
set {
|
||||
_rotationalVelocity = value;
|
||||
_rotationalVelocity = Util.ClampV(value, BSParam.MaxAngularVelocity);
|
||||
if (PhysBody.HasPhysicalBody)
|
||||
{
|
||||
DetailLog("{0},BSPrim.ForceRotationalVel,taint,rotvel={1}", LocalID, _rotationalVelocity);
|
||||
|
@ -1230,6 +1265,7 @@ public class BSPrim : BSPhysObject
|
|||
|
||||
RegisterPreStepAction("BSPrim.Hover", LocalID, delegate(float timeStep)
|
||||
{
|
||||
// Don't do hovering while the object is selected.
|
||||
if (!IsPhysicallyActive)
|
||||
return;
|
||||
|
||||
|
@ -1737,10 +1773,9 @@ public class BSPrim : BSPhysObject
|
|||
// Assign directly to the local variables so the normal set actions do not happen
|
||||
_position = entprop.Position;
|
||||
_orientation = entprop.Rotation;
|
||||
// _velocity = entprop.Velocity;
|
||||
// DEBUG DEBUG DEBUG -- smooth velocity changes a bit. The simulator seems to be
|
||||
// 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;
|
||||
_acceleration = entprop.Acceleration;
|
||||
_rotationalVelocity = entprop.RotationalVelocity;
|
||||
|
|
|
@ -9,6 +9,9 @@ Enable vehicle border crossings (at least as poorly as ODE)
|
|||
Lock axis
|
||||
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.
|
||||
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 banking
|
||||
Center-of-gravity
|
||||
|
@ -68,6 +71,8 @@ Vehicle attributes are not restored when a vehicle is rezzed on region creation
|
|||
|
||||
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.
|
||||
The dropped prim doesn't bounce properly on the terrain.
|
||||
Add a sanity check for PIDTarget location.
|
||||
|
|
|
@ -186,6 +186,10 @@ namespace OpenSim.Server.Base
|
|||
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);
|
||||
|
||||
if (startupConfig.GetString("PIDFile", String.Empty) != String.Empty)
|
||||
|
|
|
@ -216,6 +216,77 @@
|
|||
; physics = basicphysics
|
||||
; 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
|
||||
;; Permission modules to use, separated by comma.
|
||||
;; Possible modules are DefaultPermissionsModule, PrimLimitsModule
|
||||
|
@ -260,97 +331,6 @@
|
|||
; 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]
|
||||
; 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.
|
||||
|
|
|
@ -226,54 +226,6 @@
|
|||
;physics = modified_BulletX
|
||||
;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
|
||||
; ##
|
||||
|
@ -340,6 +292,55 @@
|
|||
; Use terrain texture for maptiles if true, use shaded green if false
|
||||
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]
|
||||
; 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>
|
||||
<Reference name="System"/>
|
||||
<Reference name="System.Core"/>
|
||||
<Reference name="System.Xml"/>
|
||||
<Reference name="OpenSim.Framework"/>
|
||||
<Reference name="OpenSim.Framework.Communications"/>
|
||||
|
|
Loading…
Reference in New Issue