patch from mantis #1632, thanks Melanie

0.6.0-stable
MW 2008-06-29 12:33:45 +00:00
parent f3f31744ab
commit 037b31f9db
3 changed files with 17 additions and 8 deletions

View File

@ -1905,7 +1905,7 @@ namespace OpenSim.Region.Environment.Scenes
/// <param name="vel"></param> /// <param name="vel"></param>
/// <param name="param"></param> /// <param name="param"></param>
/// <returns></returns> /// <returns></returns>
public virtual SceneObjectGroup RezObject(TaskInventoryItem item, LLVector3 pos, LLQuaternion rot, LLVector3 vel, int param) public virtual SceneObjectGroup RezObject(SceneObjectPart sourcePart, TaskInventoryItem item, LLVector3 pos, LLQuaternion rot, LLVector3 vel, int param)
{ {
// Rez object // Rez object
if (item != null) if (item != null)
@ -1942,15 +1942,18 @@ namespace OpenSim.Region.Environment.Scenes
if (rootPart.OwnerID != item.OwnerID) if (rootPart.OwnerID != item.OwnerID)
{ {
if ((item.OwnerMask & 8) != 0) if (ExternalChecks.ExternalChecksPropagatePermissions())
{ {
foreach (SceneObjectPart part in partList) if ((item.OwnerMask & 8) != 0)
{ {
part.EveryoneMask = item.EveryoneMask; foreach (SceneObjectPart part in partList)
part.NextOwnerMask = item.NextOwnerMask; {
part.EveryoneMask = item.EveryoneMask;
part.NextOwnerMask = item.NextOwnerMask;
}
} }
group.ApplyNextOwnerPermissions();
} }
group.ApplyNextOwnerPermissions();
} }
foreach (SceneObjectPart part in partList) foreach (SceneObjectPart part in partList)
@ -1977,6 +1980,12 @@ namespace OpenSim.Region.Environment.Scenes
group.Velocity = vel; group.Velocity = vel;
group.CreateScriptInstances(param, true); group.CreateScriptInstances(param, true);
rootPart.ScheduleFullUpdate(); rootPart.ScheduleFullUpdate();
if (!ExternalChecks.ExternalChecksBypassPermissions())
{
if ((item.OwnerMask & (uint)PermissionMask.Copy) == 0)
sourcePart.RemoveInventoryItem(item.ItemID);
}
return rootPart.ParentGroup; return rootPart.ParentGroup;
} }
} }

View File

@ -1993,7 +1993,7 @@ namespace OpenSim.Region.ScriptEngine.Common
// need the magnitude later // need the magnitude later
float velmag = (float)Util.GetMagnitude(llvel); float velmag = (float)Util.GetMagnitude(llvel);
SceneObjectGroup new_group = World.RezObject(inv.Value, llpos, new LLQuaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s), llvel, param); SceneObjectGroup new_group = World.RezObject(m_host, inv.Value, llpos, new LLQuaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s), llvel, param);
// If either of these are null, then there was an unknown error. // If either of these are null, then there was an unknown error.
if (new_group == null) if (new_group == null)

View File

@ -1844,7 +1844,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
// need the magnitude later // need the magnitude later
float velmag = (float)Util.GetMagnitude(llvel); float velmag = (float)Util.GetMagnitude(llvel);
SceneObjectGroup new_group = World.RezObject(inv.Value, llpos, new LLQuaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s), llvel, param); SceneObjectGroup new_group = World.RezObject(m_host, inv.Value, llpos, new LLQuaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s), llvel, param);
// If either of these are null, then there was an unknown error. // If either of these are null, then there was an unknown error.
if (new_group == null) if (new_group == null)