Mantis #7935: regression on transferring attachments over the HG

LSLKeyTest
Diva Canto 2016-06-22 11:52:53 -07:00
parent 0b32cf0e8f
commit f8bd3d2f2e
2 changed files with 7 additions and 50 deletions

View File

@ -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;

View File

@ -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);