Mantis #7935: regression on transferring attachments over the HG
parent
0b32cf0e8f
commit
f8bd3d2f2e
|
@ -1491,7 +1491,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
// m_log.DebugFormat(
|
// m_log.DebugFormat(
|
||||||
// "[ENTITY TRANSFER MODULE]: Crossing agent {0} at pos {1} in {2}", agent.Name, pos, scene.Name);
|
// "[ENTITY TRANSFER MODULE]: Crossing agent {0} at pos {1} in {2}", agent.Name, pos, scene.Name);
|
||||||
|
|
||||||
// Compute world location of the agente position
|
// Compute world location of the agent's position
|
||||||
double presenceWorldX = (double)scene.RegionInfo.WorldLocX + pos.X;
|
double presenceWorldX = (double)scene.RegionInfo.WorldLocX + pos.X;
|
||||||
double presenceWorldY = (double)scene.RegionInfo.WorldLocY + pos.Y;
|
double presenceWorldY = (double)scene.RegionInfo.WorldLocY + pos.Y;
|
||||||
|
|
||||||
|
@ -2240,7 +2240,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
// needed for current OSG or old grid code
|
// needed for current OSG or old grid code
|
||||||
|
|
||||||
public GridRegion GetRegionContainingWorldLocation(IGridService pGridService, UUID pScopeID, double px, double py)
|
protected GridRegion GetRegionContainingWorldLocation(IGridService pGridService, UUID pScopeID, double px, double py)
|
||||||
{
|
{
|
||||||
// Since we don't know how big the regions could be, we have to search a very large area
|
// Since we don't know how big the regions could be, we have to search a very large area
|
||||||
// to find possible regions.
|
// to find possible regions.
|
||||||
|
@ -2253,7 +2253,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
// 'pSizeHint' is the size of the source region but since the destination point can be anywhere
|
// 'pSizeHint' is the size of the source region but since the destination point can be anywhere
|
||||||
// the size of the target region is unknown thus the search area might have to be very large.
|
// the size of the target region is unknown thus the search area might have to be very large.
|
||||||
// Return 'null' if no such region exists.
|
// Return 'null' if no such region exists.
|
||||||
public GridRegion GetRegionContainingWorldLocation(IGridService pGridService, UUID pScopeID,
|
protected GridRegion GetRegionContainingWorldLocation(IGridService pGridService, UUID pScopeID,
|
||||||
double px, double py, uint pSizeHint)
|
double px, double py, uint pSizeHint)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("{0} GetRegionContainingWorldLocation: call, XY=<{1},{2}>", LogHeader, px, py);
|
m_log.DebugFormat("{0} GetRegionContainingWorldLocation: call, XY=<{1},{2}>", LogHeader, px, py);
|
||||||
|
@ -2795,8 +2795,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
so.ResumeScripts();
|
so.ResumeScripts();
|
||||||
|
|
||||||
if (so.RootPart.KeyframeMotion != null)
|
// AddSceneObject already does this and doing it again messes
|
||||||
so.RootPart.KeyframeMotion.UpdateSceneObject(so);
|
//if (so.RootPart.KeyframeMotion != null)
|
||||||
|
// so.RootPart.KeyframeMotion.UpdateSceneObject(so);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -2954,52 +2954,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the user is banned, we won't let any of their objects
|
if (!EntityTransferModule.HandleIncomingSceneObject(newObject, newPosition))
|
||||||
// enter. Period.
|
|
||||||
//
|
|
||||||
if (RegionInfo.EstateSettings.IsBanned(newObject.OwnerID, 36))
|
|
||||||
{
|
|
||||||
m_log.InfoFormat("[INTERREGION]: Denied prim crossing for banned avatar {0}", newObject.OwnerID);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
if (newPosition != Vector3.Zero)
|
|
||||||
newObject.RootPart.GroupPosition = newPosition;
|
|
||||||
|
|
||||||
if (!AddSceneObject(newObject))
|
|
||||||
{
|
|
||||||
m_log.DebugFormat(
|
|
||||||
"[INTERREGION]: Problem adding scene object {0} in {1} ", newObject.UUID, RegionInfo.RegionName);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!newObject.IsAttachment)
|
|
||||||
{
|
|
||||||
// FIXME: It would be better to never add the scene object at all rather than add it and then delete
|
|
||||||
// it
|
|
||||||
if (!Permissions.CanObjectEntry(newObject.UUID, true, newObject.AbsolutePosition))
|
|
||||||
{
|
|
||||||
// Deny non attachments based on parcel settings
|
|
||||||
//
|
|
||||||
m_log.Info("[INTERREGION]: Denied prim crossing because of parcel settings");
|
|
||||||
|
|
||||||
DeleteSceneObject(newObject, false);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// For attachments, we need to wait until the agent is root
|
|
||||||
// before we restart the scripts, or else some functions won't work.
|
|
||||||
newObject.RootPart.ParentGroup.CreateScriptInstances(0, false, DefaultScriptEngine, GetStateSource(newObject));
|
|
||||||
newObject.ResumeScripts();
|
|
||||||
|
|
||||||
// AddSceneObject already does this and doing it again messes
|
|
||||||
// up region crossings, so don't.
|
|
||||||
//if (newObject.RootPart.KeyframeMotion != null)
|
|
||||||
// newObject.RootPart.KeyframeMotion.UpdateSceneObject(newObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Do this as late as possible so that listeners have full access to the incoming object
|
// Do this as late as possible so that listeners have full access to the incoming object
|
||||||
EventManager.TriggerOnIncomingSceneObject(newObject);
|
EventManager.TriggerOnIncomingSceneObject(newObject);
|
||||||
|
|
Loading…
Reference in New Issue