Merge branch 'master' into httptests
commit
16a8e166ff
|
@ -457,6 +457,9 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
/// </summary>
|
||||
private object m_originRegionIDAccessLock = new object();
|
||||
|
||||
|
||||
private AutoResetEvent m_updateAgentReceivedAfterTransferEvent = new AutoResetEvent(false);
|
||||
|
||||
/// <summary>
|
||||
/// Used by the entity transfer module to signal when the presence should not be closed because a subsequent
|
||||
/// teleport is reusing the connection.
|
||||
|
@ -1950,30 +1953,32 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
// (which triggers Scene.IncomingUpdateChildAgent(AgentData cAgentData) here in the destination,
|
||||
// m_originRegionID is UUID.Zero; after, it's non-Zero. The CompleteMovement sequence initiated from the
|
||||
// viewer (in turn triggered by the source region sending it a TeleportFinish event) waits until it's non-zero
|
||||
// m_updateAgentReceivedAfterTransferEvent.WaitOne(10000);
|
||||
int count = 50;
|
||||
UUID originID = UUID.Zero;
|
||||
|
||||
lock (m_originRegionIDAccessLock)
|
||||
originID = m_originRegionID;
|
||||
|
||||
while (originID.Equals(UUID.Zero) && count-- > 0)
|
||||
try
|
||||
{
|
||||
lock (m_originRegionIDAccessLock)
|
||||
originID = m_originRegionID;
|
||||
if(m_updateAgentReceivedAfterTransferEvent.WaitOne(10000))
|
||||
{
|
||||
UUID originID = UUID.Zero;
|
||||
|
||||
m_log.DebugFormat("[SCENE PRESENCE]: Agent {0} waiting for update in {1}", client.Name, Scene.Name);
|
||||
Thread.Sleep(200);
|
||||
lock (m_originRegionIDAccessLock)
|
||||
originID = m_originRegionID;
|
||||
if (originID.Equals(UUID.Zero))
|
||||
{
|
||||
// Movement into region will fail
|
||||
m_log.WarnFormat("[SCENE PRESENCE]: Update agent {0} at {1} got invalid origin region id ", client.Name, Scene.Name);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_log.WarnFormat("[SCENE PRESENCE]: Update agent {0} at {1} did not receive agent update ", client.Name, Scene.Name);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
|
||||
if (originID.Equals(UUID.Zero))
|
||||
{
|
||||
// Movement into region will fail
|
||||
m_log.WarnFormat("[SCENE PRESENCE]: Update agent {0} never arrived in {1}", client.Name, Scene.Name);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public void RotateToLookAt(Vector3 lookAt)
|
||||
|
@ -2283,6 +2288,13 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
if(gotCrossUpdate)
|
||||
{
|
||||
if(IgnoredControls != ScriptControlled.CONTROL_ZERO)
|
||||
ControllingClient.SendTakeControls((int)IgnoredControls, false, true);
|
||||
|
||||
}
|
||||
|
||||
m_log.DebugFormat("[CompleteMovement] attachments: {0}ms", Util.EnvironmentTickCountSubtract(ts));
|
||||
if (openChildAgents)
|
||||
{
|
||||
|
@ -4574,7 +4586,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
return;
|
||||
|
||||
CopyFrom(cAgentData);
|
||||
|
||||
m_updateAgentReceivedAfterTransferEvent.Set();
|
||||
}
|
||||
|
||||
private static Vector3 marker = new Vector3(-1f, -1f, -1f);
|
||||
|
@ -4787,6 +4799,10 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
AddToPhysicalScene(isFlying);
|
||||
}
|
||||
*/
|
||||
|
||||
if (Scene.AttachmentsModule != null)
|
||||
Scene.AttachmentsModule.CopyAttachments(cAgent, this);
|
||||
|
||||
try
|
||||
{
|
||||
lock (scriptedcontrols)
|
||||
|
@ -4794,6 +4810,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
if (cAgent.Controllers != null)
|
||||
{
|
||||
scriptedcontrols.Clear();
|
||||
IgnoredControls = ScriptControlled.CONTROL_ZERO;
|
||||
|
||||
foreach (ControllerData c in cAgent.Controllers)
|
||||
{
|
||||
|
@ -4804,6 +4821,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
sc.eventControls = (ScriptControlled)c.EventControls;
|
||||
|
||||
scriptedcontrols[sc.itemID] = sc;
|
||||
IgnoredControls |= sc.ignoreControls; // this is not correct, aparently only last applied should count
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4824,8 +4842,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
if (cAgent.MotionState != 0)
|
||||
Animator.currentControlState = (ScenePresenceAnimator.motionControlStates) cAgent.MotionState;
|
||||
|
||||
if (Scene.AttachmentsModule != null)
|
||||
Scene.AttachmentsModule.CopyAttachments(cAgent, this);
|
||||
|
||||
crossingFlags = cAgent.CrossingFlags;
|
||||
gotCrossUpdate = (crossingFlags != 0);
|
||||
|
@ -5108,6 +5124,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
ControllingClient = null;
|
||||
LifecycleState = ScenePresenceState.Removed;
|
||||
IsDeleted = true;
|
||||
m_updateAgentReceivedAfterTransferEvent.Dispose();
|
||||
m_updateAgentReceivedAfterTransferEvent = null;
|
||||
}
|
||||
|
||||
public void AddAttachment(SceneObjectGroup gobj)
|
||||
|
|
|
@ -261,7 +261,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
}
|
||||
|
||||
// Returns if OSSL is enabled. Throws a script exception if OSSL is not allowed..
|
||||
// for safe funtions always active
|
||||
// for safe funtions always active
|
||||
public void CheckThreatLevel()
|
||||
{
|
||||
m_host.AddScriptLPS(1);
|
||||
|
@ -1056,7 +1056,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
targetID,
|
||||
part.SitTargetPosition);
|
||||
}
|
||||
|
||||
|
||||
// Get a list of all the avatars/agents in the region
|
||||
public LSL_List osGetAgents()
|
||||
{
|
||||
|
@ -1074,7 +1074,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
public string osGetAgentIP(string agent)
|
||||
{
|
||||
CheckThreatLevel(ThreatLevel.Severe, "osGetAgentIP");
|
||||
CheckThreatLevel(ThreatLevel.Severe, "osGetAgentIP");
|
||||
if(!(World.Permissions.IsGod(m_host.OwnerID))) // user god always needed
|
||||
return "";
|
||||
|
||||
|
@ -1651,7 +1651,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
else
|
||||
{
|
||||
if (UUID.TryParse(arg, out uuid))
|
||||
{
|
||||
{
|
||||
if(newLand.OwnerID != uuid)
|
||||
{
|
||||
changed = true;
|
||||
|
@ -1760,7 +1760,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
if(changedSeeAvs && avatar.currentParcelUUID == parcelID )
|
||||
avatar.currentParcelUUID = parcelID; // force parcel flags review
|
||||
|
||||
|
||||
if(avatar.ControllingClient == null)
|
||||
return;
|
||||
|
||||
|
@ -3593,7 +3593,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
public int osGetSimulatorMemoryKB()
|
||||
{
|
||||
CheckThreatLevel(ThreatLevel.Moderate, "osGetSimulatorMemory");
|
||||
CheckThreatLevel(ThreatLevel.Moderate, "osGetSimulatorMemoryKB");
|
||||
|
||||
long pws = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64;
|
||||
|
||||
|
@ -4500,7 +4500,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
/// LSL_Vector CenterOfMass, center mass relative to root prim
|
||||
/// LSL_Vector Inertia, elements of diagonal of inertia Ixx,Iyy,Izz divided by total mass
|
||||
/// LSL_Vector aux, elements of upper triagle of inertia Ixy (= Iyx), Ixz (= Izx), Iyz(= Izy) divided by total mass
|
||||
/// </returns>
|
||||
/// </returns>
|
||||
public LSL_List osGetInertiaData()
|
||||
{
|
||||
CheckThreatLevel();
|
||||
|
@ -4513,8 +4513,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
SceneObjectGroup sog = m_host.ParentGroup;
|
||||
if(sog== null || sog.IsDeleted)
|
||||
return result;
|
||||
|
||||
return result;
|
||||
|
||||
sog.GetInertiaData(out TotalMass, out CenterOfMass, out Inertia, out aux );
|
||||
if(TotalMass > 0)
|
||||
{
|
||||
|
@ -4538,7 +4538,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
/// <summary>
|
||||
/// set inertial data
|
||||
/// replaces the automatic calculation of mass, center of mass and inertia
|
||||
///
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="Mass">total mass of linkset</param>
|
||||
/// <param name="centerOfMass">location of center of mass relative to root prim in local coords</param>
|
||||
|
@ -4562,7 +4562,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
// need more checks
|
||||
|
||||
Vector3 CenterOfMass = new Vector3((float)centerOfMass.x,(float)centerOfMass.y,(float)centerOfMass.z);
|
||||
Vector3 Inertia;
|
||||
Vector3 Inertia;
|
||||
float m = (float)mass;
|
||||
|
||||
Inertia.X = m * (float)principalInertiaScaled.x;
|
||||
|
@ -4578,7 +4578,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
/// <summary>
|
||||
/// set inertial data as a sphere
|
||||
/// replaces the automatic calculation of mass, center of mass and inertia
|
||||
///
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="Mass">total mass of linkset</param>
|
||||
/// <param name="boxsize">size of the Box</param>
|
||||
|
@ -4600,7 +4600,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
// need more checks
|
||||
|
||||
Vector3 CenterOfMass = new Vector3((float)centerOfMass.x,(float)centerOfMass.y,(float)centerOfMass.z);
|
||||
Vector3 Inertia;
|
||||
Vector3 Inertia;
|
||||
float lx = (float)boxSize.x;
|
||||
float ly = (float)boxSize.y;
|
||||
float lz = (float)boxSize.z;
|
||||
|
@ -4620,7 +4620,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
/// <summary>
|
||||
/// set inertial data as a sphere
|
||||
/// replaces the automatic calculation of mass, center of mass and inertia
|
||||
///
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="Mass">total mass of linkset</param>
|
||||
/// <param name="radius">radius of the sphere</param>
|
||||
|
@ -4639,9 +4639,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
return;
|
||||
|
||||
// need more checks
|
||||
|
||||
|
||||
Vector3 CenterOfMass = new Vector3((float)centerOfMass.x,(float)centerOfMass.y,(float)centerOfMass.z);
|
||||
Vector3 Inertia;
|
||||
Vector3 Inertia;
|
||||
float r = (float)radius;
|
||||
float m = (float)mass;
|
||||
float t = 0.4f * m * r * r;
|
||||
|
@ -4656,7 +4656,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
/// <summary>
|
||||
/// set inertial data as a cylinder
|
||||
/// replaces the automatic calculation of mass, center of mass and inertia
|
||||
///
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="Mass">total mass of linkset</param>
|
||||
/// <param name="radius">radius of the cylinder</param>
|
||||
|
@ -4678,9 +4678,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
return;
|
||||
|
||||
// need more checks
|
||||
|
||||
|
||||
Vector3 CenterOfMass = new Vector3((float)centerOfMass.x,(float)centerOfMass.y,(float)centerOfMass.z);
|
||||
Vector3 Inertia;
|
||||
Vector3 Inertia;
|
||||
float m = (float)mass;
|
||||
float r = (float)radius;
|
||||
r *= r;
|
||||
|
@ -4702,7 +4702,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
/// <summary>
|
||||
/// removes inertial data manual override
|
||||
/// default automatic calculation is used again
|
||||
///
|
||||
///
|
||||
/// </summary>
|
||||
public void osClearInertia()
|
||||
{
|
||||
|
|
|
@ -2061,7 +2061,7 @@
|
|||
;MessagingEnabled = true
|
||||
|
||||
; Experimental option to only message cached online users rather than all users
|
||||
; Should make large group with few online members messaging faster, as the expense of more calls to ROBUST presence service
|
||||
; Should make large group with few online members messaging faster, at the expense of more calls to ROBUST presence service
|
||||
; (Flotsam groups only; in V2 this is always on)
|
||||
MessageOnlineUsersOnly = false
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
Allow_osGetGender = true
|
||||
Allow_osGetHealth = true
|
||||
Allow_osGetHealRate = true
|
||||
Allow_osGetNPCList = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
|
||||
Allow_osGetNPCList = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
|
||||
Allow_osGetRezzingObject = true
|
||||
Allow_osNpcGetOwner = ${XEngine|osslNPC}
|
||||
Allow_osParseJSON = true
|
||||
|
@ -121,7 +121,7 @@
|
|||
Allow_osLoadedCreationTime = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
|
||||
Allow_osMessageObject = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
|
||||
Allow_osRegexIsMatch = true
|
||||
Allow_osGetAvatarHomeURI = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
|
||||
Allow_osGetAvatarHomeURI = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
|
||||
Allow_osNpcSetProfileAbout = ${XEngine|osslNPC}
|
||||
Allow_osNpcSetProfileImage = ${XEngine|osslNPC}
|
||||
Allow_osDie = ${XEngine|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER
|
||||
|
@ -138,6 +138,7 @@
|
|||
Allow_osGetNumberOfAttachments = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
Allow_osGetRegionStats = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
Allow_osGetSimulatorMemory = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
Allow_osGetSimulatorMemoryKB = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
Allow_osMessageAttachments = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
Allow_osSetSpeed = ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER
|
||||
|
||||
|
@ -221,28 +222,28 @@
|
|||
Allow_osGetAgentIP = true ; always restricted to Administrators (true or false to disable)
|
||||
|
||||
; available functions out of Threat level control (for reference only)
|
||||
; Allow_osClearInertia = true
|
||||
; Allow_osCheckODE = true
|
||||
; Allow_osClearInertia = true
|
||||
; Allow_osCollisionSound = true
|
||||
; Allow_osDrawEllipse = true
|
||||
; Allow_osDrawFilledEllipse = true
|
||||
; Allow_osDrawFilledPolygon = true
|
||||
; Allow_osDrawFilledRectangle = true
|
||||
; Allow_osDrawResetTransform = true
|
||||
; Allow_osDrawRotationTransform = true
|
||||
; Allow_osDrawScaleTransform = true
|
||||
; Allow_osDrawTranslationTransform = true
|
||||
; Allow_osDrawImage = true
|
||||
; Allow_osDrawLine = true
|
||||
; Allow_osDrawPolygon = true
|
||||
; Allow_osDrawRectangle = true
|
||||
; Allow_osDrawResetTransform = true
|
||||
; Allow_osDrawRotationTransform = true
|
||||
; Allow_osDrawScaleTransform = true
|
||||
; Allow_osDrawText = true
|
||||
; Allow_osDrawTranslationTransform = true
|
||||
; Allow_osGetCurrentSunHour = true
|
||||
; Allow_osGetPhysicsEngineName = true
|
||||
; Allow_osGetInertiaData = true
|
||||
; Allow_osGetInventoryDesc = true
|
||||
; Allow_osGetLinkNumber = true
|
||||
; Allow_osGetMapTexture = true
|
||||
; Allow_osGetPhysicsEngineName = true
|
||||
; Allow_osGetRegionSize = true
|
||||
; Allow_osGetSunParam = true
|
||||
; Allow_osGetTerrainHeight = true
|
||||
|
@ -253,12 +254,12 @@
|
|||
; Allow_osMax = true
|
||||
; Allow_osMin = true
|
||||
; Allow_osMovePen = true
|
||||
; Allow_osSetFontName = true
|
||||
; Allow_osSetFontSize = true
|
||||
; Allow_osSetInertia = true
|
||||
; Allow_osSetInertiaAsBox = true
|
||||
; Allow_osSetInertiaAsSphere = true
|
||||
; Allow_osSetInertiaAsCylinder = true
|
||||
; Allow_osSetFontName = true
|
||||
; Allow_osSetFontSize = true
|
||||
; Allow_osSetPenCap = true
|
||||
; Allow_osSetPenColor = true
|
||||
; Allow_osSetPenSize = true
|
||||
|
|
Loading…
Reference in New Issue