diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 61 |
1 files changed, 46 insertions, 15 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 26fc85e..e3b2fd1 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -5805,9 +5805,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5805 | 5805 | ||
5806 | public ulong GetGroupPowers(UUID groupID) | 5806 | public ulong GetGroupPowers(UUID groupID) |
5807 | { | 5807 | { |
5808 | if (groupID == ActiveGroupId) | ||
5809 | return ActiveGroupPowers; | ||
5810 | |||
5811 | lock(m_groupPowers) | 5808 | lock(m_groupPowers) |
5812 | { | 5809 | { |
5813 | if (m_groupPowers.ContainsKey(groupID)) | 5810 | if (m_groupPowers.ContainsKey(groupID)) |
@@ -6729,11 +6726,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6729 | RezObject handlerRezObject = OnRezObject; | 6726 | RezObject handlerRezObject = OnRezObject; |
6730 | if (handlerRezObject != null) | 6727 | if (handlerRezObject != null) |
6731 | { | 6728 | { |
6732 | handlerRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd, | 6729 | UUID rezGroupID = rezPacket.AgentData.GroupID; |
6733 | rezPacket.RezData.RayStart, rezPacket.RezData.RayTargetID, | 6730 | if(!IsGroupMember(rezGroupID)) |
6734 | rezPacket.RezData.BypassRaycast, rezPacket.RezData.RayEndIsIntersection, | 6731 | rezGroupID = UUID.Zero; |
6735 | rezPacket.RezData.RezSelected, rezPacket.RezData.RemoveItem, | 6732 | handlerRezObject(this, rezPacket.InventoryData.ItemID, rezGroupID, rezPacket.RezData.RayEnd, |
6736 | rezPacket.RezData.FromTaskID); | 6733 | rezPacket.RezData.RayStart, rezPacket.RezData.RayTargetID, |
6734 | rezPacket.RezData.BypassRaycast, rezPacket.RezData.RayEndIsIntersection, | ||
6735 | rezPacket.RezData.RezSelected, rezPacket.RezData.RemoveItem, | ||
6736 | rezPacket.RezData.FromTaskID); | ||
6737 | } | 6737 | } |
6738 | return true; | 6738 | return true; |
6739 | } | 6739 | } |
@@ -7544,7 +7544,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7544 | 7544 | ||
7545 | AddNewPrim handlerAddPrim = OnAddPrim; | 7545 | AddNewPrim handlerAddPrim = OnAddPrim; |
7546 | if (handlerAddPrim != null) | 7546 | if (handlerAddPrim != null) |
7547 | handlerAddPrim(AgentId, ActiveGroupId, addPacket.ObjectData.RayEnd, addPacket.ObjectData.Rotation, shape, addPacket.ObjectData.BypassRaycast, addPacket.ObjectData.RayStart, addPacket.ObjectData.RayTargetID, addPacket.ObjectData.RayEndIsIntersection); | 7547 | handlerAddPrim(AgentId, addPacket.AgentData.GroupID, addPacket.ObjectData.RayEnd, addPacket.ObjectData.Rotation, shape, addPacket.ObjectData.BypassRaycast, addPacket.ObjectData.RayStart, addPacket.ObjectData.RayTargetID, addPacket.ObjectData.RayEndIsIntersection); |
7548 | } | 7548 | } |
7549 | return true; | 7549 | return true; |
7550 | } | 7550 | } |
@@ -7644,9 +7644,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7644 | handlerObjectDuplicate = OnObjectDuplicate; | 7644 | handlerObjectDuplicate = OnObjectDuplicate; |
7645 | if (handlerObjectDuplicate != null) | 7645 | if (handlerObjectDuplicate != null) |
7646 | { | 7646 | { |
7647 | UUID rezGroupID = dupe.AgentData.GroupID; | ||
7648 | if(!IsGroupMember(rezGroupID)) | ||
7649 | rezGroupID = UUID.Zero; | ||
7647 | handlerObjectDuplicate(dupe.ObjectData[i].ObjectLocalID, dupe.SharedData.Offset, | 7650 | handlerObjectDuplicate(dupe.ObjectData[i].ObjectLocalID, dupe.SharedData.Offset, |
7648 | dupe.SharedData.DuplicateFlags, AgentId, | 7651 | dupe.SharedData.DuplicateFlags, AgentId, |
7649 | ActiveGroupId); | 7652 | rezGroupID); |
7650 | } | 7653 | } |
7651 | } | 7654 | } |
7652 | 7655 | ||
@@ -8266,10 +8269,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8266 | handlerObjectDuplicateOnRay = OnObjectDuplicateOnRay; | 8269 | handlerObjectDuplicateOnRay = OnObjectDuplicateOnRay; |
8267 | if (handlerObjectDuplicateOnRay != null) | 8270 | if (handlerObjectDuplicateOnRay != null) |
8268 | { | 8271 | { |
8269 | handlerObjectDuplicateOnRay(dupeOnRay.ObjectData[i].ObjectLocalID, dupeOnRay.AgentData.DuplicateFlags, | 8272 | |
8270 | AgentId, ActiveGroupId, dupeOnRay.AgentData.RayTargetID, dupeOnRay.AgentData.RayEnd, | 8273 | UUID rezGroupID = dupeOnRay.AgentData.GroupID; |
8271 | dupeOnRay.AgentData.RayStart, dupeOnRay.AgentData.BypassRaycast, dupeOnRay.AgentData.RayEndIsIntersection, | 8274 | if(!IsGroupMember(rezGroupID)) |
8272 | dupeOnRay.AgentData.CopyCenters, dupeOnRay.AgentData.CopyRotates); | 8275 | rezGroupID = UUID.Zero; |
8276 | |||
8277 | handlerObjectDuplicateOnRay(dupeOnRay.ObjectData[i].ObjectLocalID, | ||
8278 | dupeOnRay.AgentData.DuplicateFlags, AgentId, rezGroupID, | ||
8279 | dupeOnRay.AgentData.RayTargetID, dupeOnRay.AgentData.RayEnd, | ||
8280 | dupeOnRay.AgentData.RayStart, dupeOnRay.AgentData.BypassRaycast, | ||
8281 | dupeOnRay.AgentData.RayEndIsIntersection, | ||
8282 | dupeOnRay.AgentData.CopyCenters, dupeOnRay.AgentData.CopyRotates); | ||
8273 | } | 8283 | } |
8274 | } | 8284 | } |
8275 | 8285 | ||
@@ -13148,11 +13158,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
13148 | { | 13158 | { |
13149 | lock(m_groupPowers) | 13159 | lock(m_groupPowers) |
13150 | { | 13160 | { |
13161 | GroupMembershipData activeMembership = null; | ||
13151 | if (m_GroupsModule != null) | 13162 | if (m_GroupsModule != null) |
13152 | { | 13163 | { |
13153 | GroupMembershipData[] GroupMembership = | 13164 | GroupMembershipData[] GroupMembership = |
13154 | m_GroupsModule.GetMembershipData(AgentId); | 13165 | m_GroupsModule.GetMembershipData(AgentId); |
13155 | 13166 | ||
13156 | m_groupPowers.Clear(); | 13167 | m_groupPowers.Clear(); |
13157 | 13168 | ||
13158 | if (GroupMembership != null) | 13169 | if (GroupMembership != null) |
@@ -13162,6 +13173,26 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
13162 | m_groupPowers[GroupMembership[i].GroupID] = GroupMembership[i].GroupPowers; | 13173 | m_groupPowers[GroupMembership[i].GroupID] = GroupMembership[i].GroupPowers; |
13163 | } | 13174 | } |
13164 | } | 13175 | } |
13176 | |||
13177 | activeMembership = m_GroupsModule.GetActiveMembershipData(AgentId); | ||
13178 | if(activeMembership != null) | ||
13179 | { | ||
13180 | if(!m_groupPowers.ContainsKey(activeMembership.GroupID)) | ||
13181 | activeMembership = null; | ||
13182 | else | ||
13183 | { | ||
13184 | m_activeGroupID = activeMembership.GroupID; | ||
13185 | m_activeGroupName = activeMembership.GroupName; | ||
13186 | m_activeGroupPowers = ActiveGroupPowers; | ||
13187 | } | ||
13188 | } | ||
13189 | } | ||
13190 | |||
13191 | if(activeMembership == null) | ||
13192 | { | ||
13193 | m_activeGroupID = UUID.Zero; | ||
13194 | m_activeGroupName = ""; | ||
13195 | m_activeGroupPowers = 0; | ||
13165 | } | 13196 | } |
13166 | } | 13197 | } |
13167 | } | 13198 | } |