diff options
author | onefang | 2019-09-11 16:36:50 +1000 |
---|---|---|
committer | onefang | 2019-09-11 16:36:50 +1000 |
commit | 50cd1ffd32f69228e566f2b0b89f86ea0d9fe489 (patch) | |
tree | 52f2ab0c04f1a5d7d6ac5dc872981b4b156447e7 /OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs | |
parent | Renamed branch to SledjChisl. (diff) | |
parent | Bump to release flavour, build 0. (diff) | |
download | opensim-SC_OLD-50cd1ffd32f69228e566f2b0b89f86ea0d9fe489.zip opensim-SC_OLD-50cd1ffd32f69228e566f2b0b89f86ea0d9fe489.tar.gz opensim-SC_OLD-50cd1ffd32f69228e566f2b0b89f86ea0d9fe489.tar.bz2 opensim-SC_OLD-50cd1ffd32f69228e566f2b0b89f86ea0d9fe489.tar.xz |
Merge branch 'SledjChisl'
Diffstat (limited to 'OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs')
-rw-r--r-- | OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs b/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs index 535bf67..c3f3851 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs | |||
@@ -125,7 +125,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments | |||
125 | SendConsoleOutput(agentID, "Command parameter error"); | 125 | SendConsoleOutput(agentID, "Command parameter error"); |
126 | return; | 126 | return; |
127 | } | 127 | } |
128 | 128 | ||
129 | m_scene.StoreExtraSetting("auto_grant_attach_perms", val); | 129 | m_scene.StoreExtraSetting("auto_grant_attach_perms", val); |
130 | 130 | ||
131 | SendConsoleOutput(agentID, String.Format("auto_grant_attach_perms set to {0}", val)); | 131 | SendConsoleOutput(agentID, String.Format("auto_grant_attach_perms set to {0}", val)); |
@@ -134,11 +134,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments | |||
134 | private int llAttachToAvatarTemp(UUID host, UUID script, int attachmentPoint) | 134 | private int llAttachToAvatarTemp(UUID host, UUID script, int attachmentPoint) |
135 | { | 135 | { |
136 | SceneObjectPart hostPart = m_scene.GetSceneObjectPart(host); | 136 | SceneObjectPart hostPart = m_scene.GetSceneObjectPart(host); |
137 | |||
138 | if (hostPart == null) | 137 | if (hostPart == null) |
139 | return 0; | 138 | return 0; |
140 | 139 | ||
141 | if (hostPart.ParentGroup.IsAttachment) | 140 | SceneObjectGroup hostgroup = hostPart.ParentGroup; |
141 | |||
142 | if (hostgroup== null || hostgroup.IsAttachment) | ||
142 | return 0; | 143 | return 0; |
143 | 144 | ||
144 | IAttachmentsModule attachmentsModule = m_scene.RequestModuleInterface<IAttachmentsModule>(); | 145 | IAttachmentsModule attachmentsModule = m_scene.RequestModuleInterface<IAttachmentsModule>(); |
@@ -155,33 +156,33 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments | |||
155 | ScenePresence target; | 156 | ScenePresence target; |
156 | if (!m_scene.TryGetScenePresence(item.PermsGranter, out target)) | 157 | if (!m_scene.TryGetScenePresence(item.PermsGranter, out target)) |
157 | return 0; | 158 | return 0; |
158 | 159 | ||
159 | if (target.UUID != hostPart.ParentGroup.OwnerID) | 160 | if (target.UUID != hostgroup.OwnerID) |
160 | { | 161 | { |
161 | uint effectivePerms = hostPart.ParentGroup.GetEffectivePermissions(); | 162 | uint effectivePerms = hostgroup.EffectiveOwnerPerms; |
162 | 163 | ||
163 | if ((effectivePerms & (uint)PermissionMask.Transfer) == 0) | 164 | if ((effectivePerms & (uint)PermissionMask.Transfer) == 0) |
164 | return 0; | 165 | return 0; |
165 | 166 | ||
166 | hostPart.ParentGroup.SetOwnerId(target.UUID); | 167 | hostgroup.SetOwner(target.UUID, target.ControllingClient.ActiveGroupId); |
167 | hostPart.ParentGroup.SetRootPartOwner(hostPart.ParentGroup.RootPart, target.UUID, target.ControllingClient.ActiveGroupId); | ||
168 | 168 | ||
169 | if (m_scene.Permissions.PropagatePermissions()) | 169 | if (m_scene.Permissions.PropagatePermissions()) |
170 | { | 170 | { |
171 | foreach (SceneObjectPart child in hostPart.ParentGroup.Parts) | 171 | foreach (SceneObjectPart child in hostgroup.Parts) |
172 | { | 172 | { |
173 | child.Inventory.ChangeInventoryOwner(target.UUID); | 173 | child.Inventory.ChangeInventoryOwner(target.UUID); |
174 | child.TriggerScriptChangedEvent(Changed.OWNER); | 174 | child.TriggerScriptChangedEvent(Changed.OWNER); |
175 | child.ApplyNextOwnerPermissions(); | 175 | child.ApplyNextOwnerPermissions(); |
176 | } | 176 | } |
177 | hostgroup.InvalidateEffectivePerms(); | ||
177 | } | 178 | } |
178 | 179 | ||
179 | hostPart.ParentGroup.RootPart.ObjectSaleType = 0; | 180 | hostgroup.RootPart.ObjectSaleType = 0; |
180 | hostPart.ParentGroup.RootPart.SalePrice = 10; | 181 | hostgroup.RootPart.SalePrice = 10; |
181 | 182 | ||
182 | hostPart.ParentGroup.HasGroupChanged = true; | 183 | hostgroup.HasGroupChanged = true; |
183 | hostPart.ParentGroup.RootPart.SendPropertiesToClient(target.ControllingClient); | 184 | hostgroup.RootPart.SendPropertiesToClient(target.ControllingClient); |
184 | hostPart.ParentGroup.RootPart.ScheduleFullUpdate(); | 185 | hostgroup.RootPart.ScheduleFullUpdate(); |
185 | } | 186 | } |
186 | 187 | ||
187 | return attachmentsModule.AttachObject(target, hostPart.ParentGroup, (uint)attachmentPoint, false, false, true) ? 1 : 0; | 188 | return attachmentsModule.AttachObject(target, hostPart.ParentGroup, (uint)attachmentPoint, false, false, true) ? 1 : 0; |