diff options
3 files changed, 17 insertions, 8 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index d134ea3..2b3ddaa 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | |||
@@ -1905,7 +1905,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1905 | /// <param name="vel"></param> | 1905 | /// <param name="vel"></param> |
1906 | /// <param name="param"></param> | 1906 | /// <param name="param"></param> |
1907 | /// <returns></returns> | 1907 | /// <returns></returns> |
1908 | public virtual SceneObjectGroup RezObject(TaskInventoryItem item, LLVector3 pos, LLQuaternion rot, LLVector3 vel, int param) | 1908 | public virtual SceneObjectGroup RezObject(SceneObjectPart sourcePart, TaskInventoryItem item, LLVector3 pos, LLQuaternion rot, LLVector3 vel, int param) |
1909 | { | 1909 | { |
1910 | // Rez object | 1910 | // Rez object |
1911 | if (item != null) | 1911 | if (item != null) |
@@ -1942,15 +1942,18 @@ namespace OpenSim.Region.Environment.Scenes | |||
1942 | 1942 | ||
1943 | if (rootPart.OwnerID != item.OwnerID) | 1943 | if (rootPart.OwnerID != item.OwnerID) |
1944 | { | 1944 | { |
1945 | if ((item.OwnerMask & 8) != 0) | 1945 | if (ExternalChecks.ExternalChecksPropagatePermissions()) |
1946 | { | 1946 | { |
1947 | foreach (SceneObjectPart part in partList) | 1947 | if ((item.OwnerMask & 8) != 0) |
1948 | { | 1948 | { |
1949 | part.EveryoneMask = item.EveryoneMask; | 1949 | foreach (SceneObjectPart part in partList) |
1950 | part.NextOwnerMask = item.NextOwnerMask; | 1950 | { |
1951 | part.EveryoneMask = item.EveryoneMask; | ||
1952 | part.NextOwnerMask = item.NextOwnerMask; | ||
1953 | } | ||
1951 | } | 1954 | } |
1955 | group.ApplyNextOwnerPermissions(); | ||
1952 | } | 1956 | } |
1953 | group.ApplyNextOwnerPermissions(); | ||
1954 | } | 1957 | } |
1955 | 1958 | ||
1956 | foreach (SceneObjectPart part in partList) | 1959 | foreach (SceneObjectPart part in partList) |
@@ -1977,6 +1980,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
1977 | group.Velocity = vel; | 1980 | group.Velocity = vel; |
1978 | group.CreateScriptInstances(param, true); | 1981 | group.CreateScriptInstances(param, true); |
1979 | rootPart.ScheduleFullUpdate(); | 1982 | rootPart.ScheduleFullUpdate(); |
1983 | |||
1984 | if (!ExternalChecks.ExternalChecksBypassPermissions()) | ||
1985 | { | ||
1986 | if ((item.OwnerMask & (uint)PermissionMask.Copy) == 0) | ||
1987 | sourcePart.RemoveInventoryItem(item.ItemID); | ||
1988 | } | ||
1980 | return rootPart.ParentGroup; | 1989 | return rootPart.ParentGroup; |
1981 | } | 1990 | } |
1982 | } | 1991 | } |
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index 69235c4..b65174e 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | |||
@@ -1993,7 +1993,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
1993 | // need the magnitude later | 1993 | // need the magnitude later |
1994 | float velmag = (float)Util.GetMagnitude(llvel); | 1994 | float velmag = (float)Util.GetMagnitude(llvel); |
1995 | 1995 | ||
1996 | SceneObjectGroup new_group = World.RezObject(inv.Value, llpos, new LLQuaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s), llvel, param); | 1996 | 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); |
1997 | 1997 | ||
1998 | // If either of these are null, then there was an unknown error. | 1998 | // If either of these are null, then there was an unknown error. |
1999 | if (new_group == null) | 1999 | if (new_group == null) |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 0320857..235b657 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -1844,7 +1844,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1844 | // need the magnitude later | 1844 | // need the magnitude later |
1845 | float velmag = (float)Util.GetMagnitude(llvel); | 1845 | float velmag = (float)Util.GetMagnitude(llvel); |
1846 | 1846 | ||
1847 | SceneObjectGroup new_group = World.RezObject(inv.Value, llpos, new LLQuaternion((float)rot.x, (float)rot.y, (float)rot.z, (float)rot.s), llvel, param); | 1847 | 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); |
1848 | 1848 | ||
1849 | // If either of these are null, then there was an unknown error. | 1849 | // If either of these are null, then there was an unknown error. |
1850 | if (new_group == null) | 1850 | if (new_group == null) |