diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 33 |
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 | ||