Merge branch 'master' into connector_plugin

connector_plugin
BlueWall 2012-10-19 07:46:00 -04:00
commit 276600ab71
19 changed files with 144 additions and 59 deletions

View File

@ -85,21 +85,6 @@ namespace OpenSim.Data
List<RegionData> GetHyperlinks(UUID scopeID); List<RegionData> GetHyperlinks(UUID scopeID);
} }
[Flags]
public enum RegionFlags : int
{
DefaultRegion = 1, // Used for new Rez. Random if multiple defined
FallbackRegion = 2, // Regions we redirect to when the destination is down
RegionOnline = 4, // Set when a region comes online, unset when it unregisters and DeleteOnUnregister is false
NoDirectLogin = 8, // Region unavailable for direct logins (by name)
Persistent = 16, // Don't remove on unregister
LockedOut = 32, // Don't allow registration
NoMove = 64, // Don't allow moving this region
Reservation = 128, // This is an inactive reservation
Authenticate = 256, // Require authentication
Hyperlink = 512 // Record represents a HG link
}
public class RegionDataDistanceCompare : IComparer<RegionData> public class RegionDataDistanceCompare : IComparer<RegionData>
{ {
private Vector2 m_origin; private Vector2 m_origin;

View File

@ -37,6 +37,7 @@ using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
using RegionFlags = OpenSim.Framework.RegionFlags;
namespace OpenSim.Data.MSSQL namespace OpenSim.Data.MSSQL
{ {

View File

@ -30,11 +30,11 @@ using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using System.Reflection; using System.Reflection;
using MySql.Data.MySqlClient;
using OpenMetaverse; using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Data; using OpenSim.Data;
using MySql.Data.MySqlClient; using RegionFlags = OpenSim.Framework.RegionFlags;
namespace OpenSim.Data.MySQL namespace OpenSim.Data.MySQL
{ {

View File

@ -33,6 +33,7 @@ using OpenSim.Framework;
using OpenSim.Data; using OpenSim.Data;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using RegionFlags = OpenSim.Framework.RegionFlags;
namespace OpenSim.Data.Null namespace OpenSim.Data.Null
{ {

View File

@ -0,0 +1,53 @@
/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System;
namespace OpenSim.Framework
{
/// <summary>
/// Region flags used internally by OpenSimulator to store installation specific information about regions.
/// </summary>
/// <remarks>
/// Don't confuse with OpenMetaverse.RegionFlags which are client facing flags (i.e. they go over the wire).
/// Returned by IGridService.GetRegionFlags()
/// </remarks>
[Flags]
public enum RegionFlags : int
{
DefaultRegion = 1, // Used for new Rez. Random if multiple defined
FallbackRegion = 2, // Regions we redirect to when the destination is down
RegionOnline = 4, // Set when a region comes online, unset when it unregisters and DeleteOnUnregister is false
NoDirectLogin = 8, // Region unavailable for direct logins (by name)
Persistent = 16, // Don't remove on unregister
LockedOut = 32, // Don't allow registration
NoMove = 64, // Don't allow moving this region
Reservation = 128, // This is an inactive reservation
Authenticate = 256, // Require authentication
Hyperlink = 512 // Record represents a HG link
}
}

View File

@ -47,6 +47,7 @@ using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces; using OpenSim.Services.Interfaces;
using Timer = System.Timers.Timer; using Timer = System.Timers.Timer;
using AssetLandmark = OpenSim.Framework.AssetLandmark; using AssetLandmark = OpenSim.Framework.AssetLandmark;
using RegionFlags = OpenMetaverse.RegionFlags;
using Nini.Config; using Nini.Config;
using System.IO; using System.IO;

View File

@ -212,7 +212,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
int flags = Scene.GridService.GetRegionFlags(Scene.RegionInfo.ScopeID, region.RegionID); int flags = Scene.GridService.GetRegionFlags(Scene.RegionInfo.ScopeID, region.RegionID);
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: region {0} flags: {1}", region.RegionID, flags); m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: region {0} flags: {1}", region.RegionID, flags);
if ((flags & (int)OpenSim.Data.RegionFlags.Hyperlink) != 0) if ((flags & (int)OpenSim.Framework.RegionFlags.Hyperlink) != 0)
{ {
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Destination region {0} is hyperlink", region.RegionID); m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Destination region {0} is hyperlink", region.RegionID);
GridRegion real_destination = m_GatekeeperConnector.GetHyperlinkRegion(region, region.RegionID); GridRegion real_destination = m_GatekeeperConnector.GetHyperlinkRegion(region, region.RegionID);
@ -232,7 +232,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
return true; return true;
int flags = Scene.GridService.GetRegionFlags(Scene.RegionInfo.ScopeID, reg.RegionID); int flags = Scene.GridService.GetRegionFlags(Scene.RegionInfo.ScopeID, reg.RegionID);
if (flags == -1 /* no region in DB */ || (flags & (int)OpenSim.Data.RegionFlags.Hyperlink) != 0) if (flags == -1 /* no region in DB */ || (flags & (int)OpenSim.Framework.RegionFlags.Hyperlink) != 0)
return true; return true;
return false; return false;
@ -256,7 +256,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
reason = string.Empty; reason = string.Empty;
logout = false; logout = false;
int flags = Scene.GridService.GetRegionFlags(Scene.RegionInfo.ScopeID, reg.RegionID); int flags = Scene.GridService.GetRegionFlags(Scene.RegionInfo.ScopeID, reg.RegionID);
if (flags == -1 /* no region in DB */ || (flags & (int)OpenSim.Data.RegionFlags.Hyperlink) != 0) if (flags == -1 /* no region in DB */ || (flags & (int)OpenSim.Framework.RegionFlags.Hyperlink) != 0)
{ {
// this user is going to another grid // this user is going to another grid
// check if HyperGrid teleport is allowed, based on user level // check if HyperGrid teleport is allowed, based on user level
@ -298,7 +298,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
// The rest is only needed for controlling appearance // The rest is only needed for controlling appearance
int flags = Scene.GridService.GetRegionFlags(Scene.RegionInfo.ScopeID, reg.RegionID); int flags = Scene.GridService.GetRegionFlags(Scene.RegionInfo.ScopeID, reg.RegionID);
if (flags == -1 /* no region in DB */ || (flags & (int)OpenSim.Data.RegionFlags.Hyperlink) != 0) if (flags == -1 /* no region in DB */ || (flags & (int)OpenSim.Framework.RegionFlags.Hyperlink) != 0)
{ {
// this user is going to another grid // this user is going to another grid
if (Scene.UserManagementModule.IsLocalGridUser(sp.UUID)) if (Scene.UserManagementModule.IsLocalGridUser(sp.UUID))

View File

@ -39,6 +39,7 @@ using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
using RegionFlags = OpenMetaverse.RegionFlags;
namespace OpenSim.Region.CoreModules.World.Estate namespace OpenSim.Region.CoreModules.World.Estate
{ {

View File

@ -33,6 +33,7 @@ using OpenMetaverse;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes;
using RegionFlags = OpenMetaverse.RegionFlags;
namespace OpenSim.Region.CoreModules.World.Land namespace OpenSim.Region.CoreModules.World.Land
{ {

View File

@ -913,7 +913,7 @@ namespace OpenSim.Region.Framework.Scenes
public event SceneObjectPartCopyDelegate OnSceneObjectPartCopy; public event SceneObjectPartCopyDelegate OnSceneObjectPartCopy;
public delegate void SceneObjectPartCopyDelegate(SceneObjectPart copy, SceneObjectPart original, bool userExposed); public delegate void SceneObjectPartCopyDelegate(SceneObjectPart copy, SceneObjectPart original, bool userExposed);
public delegate void SceneObjectPartUpdated(SceneObjectPart sop); public delegate void SceneObjectPartUpdated(SceneObjectPart sop, bool full);
public event SceneObjectPartUpdated OnSceneObjectPartUpdated; public event SceneObjectPartUpdated OnSceneObjectPartUpdated;
public delegate void ScenePresenceUpdated(ScenePresence sp); public delegate void ScenePresenceUpdated(ScenePresence sp);
@ -2837,7 +2837,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
} }
public void TriggerSceneObjectPartUpdated(SceneObjectPart sop) public void TriggerSceneObjectPartUpdated(SceneObjectPart sop, bool full)
{ {
SceneObjectPartUpdated handler = OnSceneObjectPartUpdated; SceneObjectPartUpdated handler = OnSceneObjectPartUpdated;
if (handler != null) if (handler != null)
@ -2846,7 +2846,7 @@ namespace OpenSim.Region.Framework.Scenes
{ {
try try
{ {
d(sop); d(sop, full);
} }
catch (Exception e) catch (Exception e)
{ {

View File

@ -2139,7 +2139,14 @@ namespace OpenSim.Region.Framework.Scenes
public bool AddRestoredSceneObject( public bool AddRestoredSceneObject(
SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted, bool sendClientUpdates) SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted, bool sendClientUpdates)
{ {
return m_sceneGraph.AddRestoredSceneObject(sceneObject, attachToBackup, alreadyPersisted, sendClientUpdates); if (m_sceneGraph.AddRestoredSceneObject(sceneObject, attachToBackup, alreadyPersisted, sendClientUpdates))
{
EventManager.TriggerObjectAddedToScene(sceneObject);
return true;
}
return false;
} }
/// <summary> /// <summary>

View File

@ -2465,7 +2465,7 @@ namespace OpenSim.Region.Framework.Scenes
// UUID, Name, TimeStampFull); // UUID, Name, TimeStampFull);
if (ParentGroup.Scene != null) if (ParentGroup.Scene != null)
ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this); ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this, true);
} }
/// <summary> /// <summary>
@ -2499,7 +2499,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
if (ParentGroup.Scene != null) if (ParentGroup.Scene != null)
ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this); ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this, false);
} }
public void ScriptSetPhysicsStatus(bool UsePhysics) public void ScriptSetPhysicsStatus(bool UsePhysics)

View File

@ -100,7 +100,7 @@ namespace OpenSim.Region.Physics.OdePlugin
private bool m_hackSentFly = false; private bool m_hackSentFly = false;
private int m_requestedUpdateFrequency = 0; private int m_requestedUpdateFrequency = 0;
private Vector3 m_taintPosition; private Vector3 m_taintPosition;
internal bool m_avatarplanted = false;
/// <summary> /// <summary>
/// Hold set forces so we can process them outside physics calculations. This prevents race conditions if we set force /// Hold set forces so we can process them outside physics calculations. This prevents race conditions if we set force
/// while calculatios are going on /// while calculatios are going on
@ -413,7 +413,7 @@ namespace OpenSim.Region.Physics.OdePlugin
set set
{ {
m_iscollidingObj = value; m_iscollidingObj = value;
if (value) if (value && !m_avatarplanted)
m_pidControllerActive = false; m_pidControllerActive = false;
else else
m_pidControllerActive = true; m_pidControllerActive = true;

View File

@ -501,6 +501,8 @@ namespace OpenSim.Region.Physics.OdePlugin
public int physics_logging_interval = 0; public int physics_logging_interval = 0;
public bool physics_logging_append_existing_logfile = false; public bool physics_logging_append_existing_logfile = false;
private bool avplanted = false;
private bool av_av_collisions_off = false;
public d.Vector3 xyz = new d.Vector3(128.1640f, 128.3079f, 25.7600f); public d.Vector3 xyz = new d.Vector3(128.1640f, 128.3079f, 25.7600f);
public d.Vector3 hpr = new d.Vector3(125.5000f, -17.0000f, 0.0000f); public d.Vector3 hpr = new d.Vector3(125.5000f, -17.0000f, 0.0000f);
@ -644,6 +646,9 @@ namespace OpenSim.Region.Physics.OdePlugin
avMovementDivisorWalk = physicsconfig.GetFloat("av_movement_divisor_walk", 1.3f); avMovementDivisorWalk = physicsconfig.GetFloat("av_movement_divisor_walk", 1.3f);
avMovementDivisorRun = physicsconfig.GetFloat("av_movement_divisor_run", 0.8f); avMovementDivisorRun = physicsconfig.GetFloat("av_movement_divisor_run", 0.8f);
avCapRadius = physicsconfig.GetFloat("av_capsule_radius", 0.37f); avCapRadius = physicsconfig.GetFloat("av_capsule_radius", 0.37f);
avplanted = physicsconfig.GetBoolean("av_planted", false);
av_av_collisions_off = physicsconfig.GetBoolean("av_av_collisions_off", false);
IsAvCapsuleTilted = physicsconfig.GetBoolean("av_capsule_tilted", false); IsAvCapsuleTilted = physicsconfig.GetBoolean("av_capsule_tilted", false);
contactsPerCollision = physicsconfig.GetInt("contacts_per_collision", 80); contactsPerCollision = physicsconfig.GetInt("contacts_per_collision", 80);
@ -664,6 +669,8 @@ namespace OpenSim.Region.Physics.OdePlugin
MeshSculptphysicalLOD = physicsconfig.GetFloat("mesh_physical_lod", 16f); MeshSculptphysicalLOD = physicsconfig.GetFloat("mesh_physical_lod", 16f);
m_filterCollisions = physicsconfig.GetBoolean("filter_collisions", false); m_filterCollisions = physicsconfig.GetBoolean("filter_collisions", false);
if (Environment.OSVersion.Platform == PlatformID.Unix) if (Environment.OSVersion.Platform == PlatformID.Unix)
{ {
avPIDD = physicsconfig.GetFloat("av_pid_derivative_linux", 2200.0f); avPIDD = physicsconfig.GetFloat("av_pid_derivative_linux", 2200.0f);
@ -1309,6 +1316,10 @@ namespace OpenSim.Region.Physics.OdePlugin
if ((p1 is OdePrim) && (((OdePrim)p1).m_isVolumeDetect)) if ((p1 is OdePrim) && (((OdePrim)p1).m_isVolumeDetect))
skipThisContact = true; // No collision on volume detect prims skipThisContact = true; // No collision on volume detect prims
if (av_av_collisions_off)
if ((p1 is OdeCharacter) && (p2 is OdeCharacter))
skipThisContact = true;
if (!skipThisContact && (p2 is OdePrim) && (((OdePrim)p2).m_isVolumeDetect)) if (!skipThisContact && (p2 is OdePrim) && (((OdePrim)p2).m_isVolumeDetect))
skipThisContact = true; // No collision on volume detect prims skipThisContact = true; // No collision on volume detect prims
@ -1972,6 +1983,7 @@ namespace OpenSim.Region.Physics.OdePlugin
newAv.Flying = isFlying; newAv.Flying = isFlying;
newAv.MinimumGroundFlightOffset = minimumGroundFlightOffset; newAv.MinimumGroundFlightOffset = minimumGroundFlightOffset;
newAv.m_avatarplanted = avplanted;
return newAv; return newAv;
} }
@ -1987,6 +1999,7 @@ namespace OpenSim.Region.Physics.OdePlugin
internal void AddCharacter(OdeCharacter chr) internal void AddCharacter(OdeCharacter chr)
{ {
chr.m_avatarplanted = avplanted;
if (!_characters.Contains(chr)) if (!_characters.Contains(chr))
{ {
_characters.Add(chr); _characters.Add(chr);

View File

@ -384,8 +384,8 @@ namespace OpenSim.Services.Connectors.SimianGrid
if (response["Success"].AsBoolean()) if (response["Success"].AsBoolean())
{ {
OSDMap extraData = response["ExtraData"] as OSDMap; OSDMap extraData = response["ExtraData"] as OSDMap;
int enabled = response["Enabled"].AsBoolean() ? (int) OpenSim.Data.RegionFlags.RegionOnline : 0; int enabled = response["Enabled"].AsBoolean() ? (int)OpenSim.Framework.RegionFlags.RegionOnline : 0;
int hypergrid = extraData["HyperGrid"].AsBoolean() ? (int) OpenSim.Data.RegionFlags.Hyperlink : 0; int hypergrid = extraData["HyperGrid"].AsBoolean() ? (int)OpenSim.Framework.RegionFlags.Hyperlink : 0;
int flags = enabled | hypergrid; int flags = enabled | hypergrid;
m_log.DebugFormat("[SGGC] enabled - {0} hg - {1} flags - {2}", enabled, hypergrid, flags); m_log.DebugFormat("[SGGC] enabled - {0} hg - {1} flags - {2}", enabled, hypergrid, flags);
return flags; return flags;

View File

@ -151,11 +151,11 @@ namespace OpenSim.Services.GridService
// //
// Get it's flags // Get it's flags
// //
OpenSim.Data.RegionFlags rflags = (OpenSim.Data.RegionFlags)Convert.ToInt32(region.Data["flags"]); OpenSim.Framework.RegionFlags rflags = (OpenSim.Framework.RegionFlags)Convert.ToInt32(region.Data["flags"]);
// Is this a reservation? // Is this a reservation?
// //
if ((rflags & OpenSim.Data.RegionFlags.Reservation) != 0) if ((rflags & OpenSim.Framework.RegionFlags.Reservation) != 0)
{ {
// Regions reserved for the null key cannot be taken. // Regions reserved for the null key cannot be taken.
if ((string)region.Data["PrincipalID"] == UUID.Zero.ToString()) if ((string)region.Data["PrincipalID"] == UUID.Zero.ToString())
@ -166,10 +166,10 @@ namespace OpenSim.Services.GridService
// NOTE: Fudging the flags value here, so these flags // NOTE: Fudging the flags value here, so these flags
// should not be used elsewhere. Don't optimize // should not be used elsewhere. Don't optimize
// this with the later retrieval of the same flags! // this with the later retrieval of the same flags!
rflags |= OpenSim.Data.RegionFlags.Authenticate; rflags |= OpenSim.Framework.RegionFlags.Authenticate;
} }
if ((rflags & OpenSim.Data.RegionFlags.Authenticate) != 0) if ((rflags & OpenSim.Framework.RegionFlags.Authenticate) != 0)
{ {
// Can we authenticate at all? // Can we authenticate at all?
// //
@ -205,10 +205,10 @@ namespace OpenSim.Services.GridService
if ((region != null) && (region.RegionID == regionInfos.RegionID) && if ((region != null) && (region.RegionID == regionInfos.RegionID) &&
((region.posX != regionInfos.RegionLocX) || (region.posY != regionInfos.RegionLocY))) ((region.posX != regionInfos.RegionLocX) || (region.posY != regionInfos.RegionLocY)))
{ {
if ((Convert.ToInt32(region.Data["flags"]) & (int)OpenSim.Data.RegionFlags.NoMove) != 0) if ((Convert.ToInt32(region.Data["flags"]) & (int)OpenSim.Framework.RegionFlags.NoMove) != 0)
return "Can't move this region"; return "Can't move this region";
if ((Convert.ToInt32(region.Data["flags"]) & (int)OpenSim.Data.RegionFlags.LockedOut) != 0) if ((Convert.ToInt32(region.Data["flags"]) & (int)OpenSim.Framework.RegionFlags.LockedOut) != 0)
return "Region locked out"; return "Region locked out";
// Region reregistering in other coordinates. Delete the old entry // Region reregistering in other coordinates. Delete the old entry
@ -233,7 +233,7 @@ namespace OpenSim.Services.GridService
{ {
int oldFlags = Convert.ToInt32(region.Data["flags"]); int oldFlags = Convert.ToInt32(region.Data["flags"]);
oldFlags &= ~(int)OpenSim.Data.RegionFlags.Reservation; oldFlags &= ~(int)OpenSim.Framework.RegionFlags.Reservation;
rdata.Data["flags"] = oldFlags.ToString(); // Preserve flags rdata.Data["flags"] = oldFlags.ToString(); // Preserve flags
} }
@ -252,7 +252,7 @@ namespace OpenSim.Services.GridService
} }
int flags = Convert.ToInt32(rdata.Data["flags"]); int flags = Convert.ToInt32(rdata.Data["flags"]);
flags |= (int)OpenSim.Data.RegionFlags.RegionOnline; flags |= (int)OpenSim.Framework.RegionFlags.RegionOnline;
rdata.Data["flags"] = flags.ToString(); rdata.Data["flags"] = flags.ToString();
try try
@ -283,9 +283,9 @@ namespace OpenSim.Services.GridService
int flags = Convert.ToInt32(region.Data["flags"]); int flags = Convert.ToInt32(region.Data["flags"]);
if (!m_DeleteOnUnregister || (flags & (int)OpenSim.Data.RegionFlags.Persistent) != 0) if (!m_DeleteOnUnregister || (flags & (int)OpenSim.Framework.RegionFlags.Persistent) != 0)
{ {
flags &= ~(int)OpenSim.Data.RegionFlags.RegionOnline; flags &= ~(int)OpenSim.Framework.RegionFlags.RegionOnline;
region.Data["flags"] = flags.ToString(); region.Data["flags"] = flags.ToString();
region.Data["last_seen"] = Util.UnixTimeSinceEpoch(); region.Data["last_seen"] = Util.UnixTimeSinceEpoch();
try try
@ -320,7 +320,7 @@ namespace OpenSim.Services.GridService
if (rdata.RegionID != regionID) if (rdata.RegionID != regionID)
{ {
int flags = Convert.ToInt32(rdata.Data["flags"]); int flags = Convert.ToInt32(rdata.Data["flags"]);
if ((flags & (int)Data.RegionFlags.Hyperlink) == 0) // no hyperlinks as neighbours if ((flags & (int)Framework.RegionFlags.Hyperlink) == 0) // no hyperlinks as neighbours
rinfos.Add(RegionData2RegionInfo(rdata)); rinfos.Add(RegionData2RegionInfo(rdata));
} }
} }
@ -470,7 +470,7 @@ namespace OpenSim.Services.GridService
foreach (RegionData r in regions) foreach (RegionData r in regions)
{ {
if ((Convert.ToInt32(r.Data["flags"]) & (int)OpenSim.Data.RegionFlags.RegionOnline) != 0) if ((Convert.ToInt32(r.Data["flags"]) & (int)OpenSim.Framework.RegionFlags.RegionOnline) != 0)
ret.Add(RegionData2RegionInfo(r)); ret.Add(RegionData2RegionInfo(r));
} }
@ -486,7 +486,7 @@ namespace OpenSim.Services.GridService
foreach (RegionData r in regions) foreach (RegionData r in regions)
{ {
if ((Convert.ToInt32(r.Data["flags"]) & (int)OpenSim.Data.RegionFlags.RegionOnline) != 0) if ((Convert.ToInt32(r.Data["flags"]) & (int)OpenSim.Framework.RegionFlags.RegionOnline) != 0)
ret.Add(RegionData2RegionInfo(r)); ret.Add(RegionData2RegionInfo(r));
} }
@ -502,7 +502,7 @@ namespace OpenSim.Services.GridService
foreach (RegionData r in regions) foreach (RegionData r in regions)
{ {
if ((Convert.ToInt32(r.Data["flags"]) & (int)OpenSim.Data.RegionFlags.RegionOnline) != 0) if ((Convert.ToInt32(r.Data["flags"]) & (int)OpenSim.Framework.RegionFlags.RegionOnline) != 0)
ret.Add(RegionData2RegionInfo(r)); ret.Add(RegionData2RegionInfo(r));
} }
@ -629,7 +629,7 @@ namespace OpenSim.Services.GridService
private void OutputRegionToConsole(RegionData r) private void OutputRegionToConsole(RegionData r)
{ {
OpenSim.Data.RegionFlags flags = (OpenSim.Data.RegionFlags)Convert.ToInt32(r.Data["flags"]); OpenSim.Framework.RegionFlags flags = (OpenSim.Framework.RegionFlags)Convert.ToInt32(r.Data["flags"]);
ConsoleDisplayList dispList = new ConsoleDisplayList(); ConsoleDisplayList dispList = new ConsoleDisplayList();
dispList.AddRow("Region Name", r.RegionName); dispList.AddRow("Region Name", r.RegionName);
@ -659,7 +659,7 @@ namespace OpenSim.Services.GridService
foreach (RegionData r in regions) foreach (RegionData r in regions)
{ {
OpenSim.Data.RegionFlags flags = (OpenSim.Data.RegionFlags)Convert.ToInt32(r.Data["flags"]); OpenSim.Framework.RegionFlags flags = (OpenSim.Framework.RegionFlags)Convert.ToInt32(r.Data["flags"]);
dispTable.AddRow( dispTable.AddRow(
r.RegionName, r.RegionName,
r.RegionID.ToString(), r.RegionID.ToString(),
@ -673,7 +673,7 @@ namespace OpenSim.Services.GridService
private int ParseFlags(int prev, string flags) private int ParseFlags(int prev, string flags)
{ {
OpenSim.Data.RegionFlags f = (OpenSim.Data.RegionFlags)prev; OpenSim.Framework.RegionFlags f = (OpenSim.Framework.RegionFlags)prev;
string[] parts = flags.Split(new char[] {',', ' '}, StringSplitOptions.RemoveEmptyEntries); string[] parts = flags.Split(new char[] {',', ' '}, StringSplitOptions.RemoveEmptyEntries);
@ -685,18 +685,18 @@ namespace OpenSim.Services.GridService
{ {
if (p.StartsWith("+")) if (p.StartsWith("+"))
{ {
val = (int)Enum.Parse(typeof(OpenSim.Data.RegionFlags), p.Substring(1)); val = (int)Enum.Parse(typeof(OpenSim.Framework.RegionFlags), p.Substring(1));
f |= (OpenSim.Data.RegionFlags)val; f |= (OpenSim.Framework.RegionFlags)val;
} }
else if (p.StartsWith("-")) else if (p.StartsWith("-"))
{ {
val = (int)Enum.Parse(typeof(OpenSim.Data.RegionFlags), p.Substring(1)); val = (int)Enum.Parse(typeof(OpenSim.Framework.RegionFlags), p.Substring(1));
f &= ~(OpenSim.Data.RegionFlags)val; f &= ~(OpenSim.Framework.RegionFlags)val;
} }
else else
{ {
val = (int)Enum.Parse(typeof(OpenSim.Data.RegionFlags), p); val = (int)Enum.Parse(typeof(OpenSim.Framework.RegionFlags), p);
f |= (OpenSim.Data.RegionFlags)val; f |= (OpenSim.Framework.RegionFlags)val;
} }
} }
catch (Exception) catch (Exception)
@ -728,7 +728,7 @@ namespace OpenSim.Services.GridService
int flags = Convert.ToInt32(r.Data["flags"]); int flags = Convert.ToInt32(r.Data["flags"]);
flags = ParseFlags(flags, cmd[4]); flags = ParseFlags(flags, cmd[4]);
r.Data["flags"] = flags.ToString(); r.Data["flags"] = flags.ToString();
OpenSim.Data.RegionFlags f = (OpenSim.Data.RegionFlags)flags; OpenSim.Framework.RegionFlags f = (OpenSim.Framework.RegionFlags)flags;
MainConsole.Instance.Output(String.Format("Set region {0} to {1}", r.RegionName, f)); MainConsole.Instance.Output(String.Format("Set region {0} to {1}", r.RegionName, f));
m_Database.Store(r); m_Database.Store(r);

View File

@ -390,8 +390,8 @@ namespace OpenSim.Services.GridService
List<RegionData> regions = m_Database.Get(mapName, m_ScopeID); List<RegionData> regions = m_Database.Get(mapName, m_ScopeID);
if (regions != null && regions.Count > 0) if (regions != null && regions.Count > 0)
{ {
OpenSim.Data.RegionFlags rflags = (OpenSim.Data.RegionFlags)Convert.ToInt32(regions[0].Data["flags"]); OpenSim.Framework.RegionFlags rflags = (OpenSim.Framework.RegionFlags)Convert.ToInt32(regions[0].Data["flags"]);
if ((rflags & OpenSim.Data.RegionFlags.Hyperlink) != 0) if ((rflags & OpenSim.Framework.RegionFlags.Hyperlink) != 0)
{ {
regInfo = new GridRegion(); regInfo = new GridRegion();
regInfo.RegionID = regions[0].RegionID; regInfo.RegionID = regions[0].RegionID;
@ -460,7 +460,7 @@ namespace OpenSim.Services.GridService
private void AddHyperlinkRegion(GridRegion regionInfo, ulong regionHandle) private void AddHyperlinkRegion(GridRegion regionInfo, ulong regionHandle)
{ {
RegionData rdata = m_GridService.RegionInfo2RegionData(regionInfo); RegionData rdata = m_GridService.RegionInfo2RegionData(regionInfo);
int flags = (int)OpenSim.Data.RegionFlags.Hyperlink + (int)OpenSim.Data.RegionFlags.NoDirectLogin + (int)OpenSim.Data.RegionFlags.RegionOnline; int flags = (int)OpenSim.Framework.RegionFlags.Hyperlink + (int)OpenSim.Framework.RegionFlags.NoDirectLogin + (int)OpenSim.Framework.RegionFlags.RegionOnline;
rdata.Data["flags"] = flags.ToString(); rdata.Data["flags"] = flags.ToString();
m_Database.Store(rdata); m_Database.Store(rdata);

View File

@ -100,6 +100,19 @@ namespace OpenSim.Services.Interfaces
List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y); List<GridRegion> GetFallbackRegions(UUID scopeID, int x, int y);
List<GridRegion> GetHyperlinks(UUID scopeID); List<GridRegion> GetHyperlinks(UUID scopeID);
/// <summary>
/// Get internal OpenSimulator region flags.
/// </summary>
/// <remarks>
/// See OpenSimulator.Framework.RegionFlags. These are not returned in the GridRegion structure -
/// they currently need to be requested separately. Possibly this should change to avoid multiple service calls
/// in some situations.
/// </remarks>
/// <returns>
/// The region flags.
/// </returns>
/// <param name='scopeID'></param>
/// <param name='regionID'></param>
int GetRegionFlags(UUID scopeID, UUID regionID); int GetRegionFlags(UUID scopeID, UUID regionID);
} }

View File

@ -844,6 +844,15 @@
; When the avatar flies, it will be moved up by this amount off the ground (in meters) ; When the avatar flies, it will be moved up by this amount off the ground (in meters)
minimum_ground_flight_offset = 3.0 minimum_ground_flight_offset = 3.0
; Plant avatar. This reduces the effect of physical contacts with the avatar.
; If you have a group of unruly and rude visitors that bump each other, turn this on to make that less attractive.
; The avatar still allows a small movement based on the PID settings above. Stronger PID settings AND this active
; will lock the avatar in place
av_planted = false
; No Avatar Avatar Collissions. This causes avatar to be able to walk through each other as if they're ghosts but still interact with the environment
av_av_collisions_off = false
; ## ; ##
; ## Object options ; ## Object options
; ## ; ##