diff options
Merge branch 'master' into careminster
Conflicts:
OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs
Diffstat (limited to 'OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs')
-rw-r--r-- | OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs b/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs index b166588..68a484a 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Attachments/TempAttachmentsModule.cs | |||
@@ -59,6 +59,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments | |||
59 | 59 | ||
60 | public void AddRegion(Scene scene) | 60 | public void AddRegion(Scene scene) |
61 | { | 61 | { |
62 | } | ||
63 | |||
64 | public void RemoveRegion(Scene scene) | ||
65 | { | ||
66 | } | ||
67 | |||
68 | public void RegionLoaded(Scene scene) | ||
69 | { | ||
62 | m_scene = scene; | 70 | m_scene = scene; |
63 | 71 | ||
64 | IScriptModuleComms comms = scene.RequestModuleInterface<IScriptModuleComms>(); | 72 | IScriptModuleComms comms = scene.RequestModuleInterface<IScriptModuleComms>(); |
@@ -73,14 +81,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments | |||
73 | } | 81 | } |
74 | } | 82 | } |
75 | 83 | ||
76 | public void RemoveRegion(Scene scene) | ||
77 | { | ||
78 | } | ||
79 | |||
80 | public void RegionLoaded(Scene scene) | ||
81 | { | ||
82 | } | ||
83 | |||
84 | public void Close() | 84 | public void Close() |
85 | { | 85 | { |
86 | } | 86 | } |
@@ -120,6 +120,34 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments | |||
120 | if (!m_scene.TryGetScenePresence(item.PermsGranter, out target)) | 120 | if (!m_scene.TryGetScenePresence(item.PermsGranter, out target)) |
121 | return; | 121 | return; |
122 | 122 | ||
123 | if (target.UUID != hostPart.ParentGroup.OwnerID) | ||
124 | { | ||
125 | uint effectivePerms = hostPart.ParentGroup.GetEffectivePermissions(); | ||
126 | |||
127 | if ((effectivePerms & (uint)PermissionMask.Transfer) == 0) | ||
128 | return; | ||
129 | |||
130 | hostPart.ParentGroup.SetOwnerId(target.UUID); | ||
131 | hostPart.ParentGroup.SetRootPartOwner(hostPart.ParentGroup.RootPart, target.UUID, target.ControllingClient.ActiveGroupId); | ||
132 | |||
133 | if (m_scene.Permissions.PropagatePermissions()) | ||
134 | { | ||
135 | foreach (SceneObjectPart child in hostPart.ParentGroup.Parts) | ||
136 | { | ||
137 | child.Inventory.ChangeInventoryOwner(target.UUID); | ||
138 | child.TriggerScriptChangedEvent(Changed.OWNER); | ||
139 | child.ApplyNextOwnerPermissions(); | ||
140 | } | ||
141 | } | ||
142 | |||
143 | hostPart.ParentGroup.RootPart.ObjectSaleType = 0; | ||
144 | hostPart.ParentGroup.RootPart.SalePrice = 10; | ||
145 | |||
146 | hostPart.ParentGroup.HasGroupChanged = true; | ||
147 | hostPart.ParentGroup.RootPart.SendPropertiesToClient(target.ControllingClient); | ||
148 | hostPart.ParentGroup.RootPart.ScheduleFullUpdate(); | ||
149 | } | ||
150 | |||
123 | attachmentsModule.AttachObject(target, hostPart.ParentGroup, (uint)attachmentPoint, false, true, true); | 151 | attachmentsModule.AttachObject(target, hostPart.ParentGroup, (uint)attachmentPoint, false, true, true); |
124 | } | 152 | } |
125 | } | 153 | } |