aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs33
1 files changed, 26 insertions, 7 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
index fe135de..d2cf2a3 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
@@ -283,7 +283,7 @@ namespace OpenSim.Region.Environment.Scenes
283 AddPart(part); 283 AddPart(part);
284 part.RegionHandle = m_regionHandle; 284 part.RegionHandle = m_regionHandle;
285 285
286 part.ApplyPermissions(); 286 part.ApplySanePermissions();
287 } 287 }
288 break; 288 break;
289 case XmlNodeType.EndElement: 289 case XmlNodeType.EndElement:
@@ -530,7 +530,7 @@ namespace OpenSim.Region.Environment.Scenes
530 dupe.m_regionHandle = m_regionHandle; 530 dupe.m_regionHandle = m_regionHandle;
531 531
532 dupe.CopyRootPart(m_rootPart, OwnerID, GroupID); 532 dupe.CopyRootPart(m_rootPart, OwnerID, GroupID);
533 533 dupe.m_rootPart.ApplySanePermissions();
534 534
535 /// may need to create a new Physics actor. 535 /// may need to create a new Physics actor.
536 if (dupe.RootPart.PhysActor != null) 536 if (dupe.RootPart.PhysActor != null)
@@ -555,6 +555,8 @@ namespace OpenSim.Region.Environment.Scenes
555 // So, we have to make a copy of this one, set it in it's place then set the owner on this one 555 // So, we have to make a copy of this one, set it in it's place then set the owner on this one
556 556
557 SetRootPartOwner(m_rootPart, cAgentID, cGroupID); 557 SetRootPartOwner(m_rootPart, cAgentID, cGroupID);
558
559
558 m_rootPart.ScheduleFullUpdate(); 560 m_rootPart.ScheduleFullUpdate();
559 561
560 List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.Values); 562 List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.Values);
@@ -592,6 +594,15 @@ namespace OpenSim.Region.Environment.Scenes
592 part.LastOwnerID = part.OwnerID; 594 part.LastOwnerID = part.OwnerID;
593 part.OwnerID = cAgentID; 595 part.OwnerID = cAgentID;
594 part.GroupID = cGroupID; 596 part.GroupID = cGroupID;
597
598
599 if (part.OwnerID != cAgentID)
600 {
601 // Apply Next Owner Permissions if we're not bypassing permissions
602 if (!m_scene.PermissionsMngr.BypassPermissions)
603 m_rootPart.ApplyNextOwnerPermissions();
604 }
605
595 part.ScheduleFullUpdate(); 606 part.ScheduleFullUpdate();
596 } 607 }
597 608
@@ -1224,6 +1235,14 @@ namespace OpenSim.Region.Environment.Scenes
1224 } 1235 }
1225 } 1236 }
1226 1237
1238 public void UpdatePermissions(LLUUID AgentID, byte field, uint localID, uint mask, byte addRemTF)
1239 {
1240 SceneObjectPart updatePart = GetChildPart(localID);
1241 updatePart.UpdatePermissions(AgentID,field,localID,mask,addRemTF);
1242 }
1243
1244
1245
1227 #endregion 1246 #endregion
1228 1247
1229 #region Shape 1248 #region Shape
@@ -1514,13 +1533,13 @@ namespace OpenSim.Region.Environment.Scenes
1514 1533
1515 #region Client Updating 1534 #region Client Updating
1516 1535
1517 public void SendFullUpdateToClient(IClientAPI remoteClient) 1536 public void SendFullUpdateToClient(IClientAPI remoteClient, uint clientFlags)
1518 { 1537 {
1519 lock (m_parts) 1538 lock (m_parts)
1520 { 1539 {
1521 foreach (SceneObjectPart part in m_parts.Values) 1540 foreach (SceneObjectPart part in m_parts.Values)
1522 { 1541 {
1523 SendPartFullUpdate(remoteClient, part); 1542 SendPartFullUpdate(remoteClient, part, clientFlags);
1524 } 1543 }
1525 } 1544 }
1526 } 1545 }
@@ -1530,15 +1549,15 @@ namespace OpenSim.Region.Environment.Scenes
1530 /// </summary> 1549 /// </summary>
1531 /// <param name="remoteClient"></param> 1550 /// <param name="remoteClient"></param>
1532 /// <param name="part"></param> 1551 /// <param name="part"></param>
1533 internal void SendPartFullUpdate(IClientAPI remoteClient, SceneObjectPart part) 1552 internal void SendPartFullUpdate(IClientAPI remoteClient, SceneObjectPart part, uint clientFlags)
1534 { 1553 {
1535 if (m_rootPart.UUID == part.UUID) 1554 if (m_rootPart.UUID == part.UUID)
1536 { 1555 {
1537 part.SendFullUpdateToClient(remoteClient, AbsolutePosition); 1556 part.SendFullUpdateToClient(remoteClient, AbsolutePosition, clientFlags);
1538 } 1557 }
1539 else 1558 else
1540 { 1559 {
1541 part.SendFullUpdateToClient(remoteClient); 1560 part.SendFullUpdateToClient(remoteClient, clientFlags);
1542 } 1561 }
1543 } 1562 }
1544 1563