diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index b903674..74f9d6c 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -477,6 +477,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
477 | newPart.LinkNum = m_parts.Count; | 477 | newPart.LinkNum = m_parts.Count; |
478 | m_parts.Add(newPart.UUID, newPart); | 478 | m_parts.Add(newPart.UUID, newPart); |
479 | SetPartAsRoot(newPart); | 479 | SetPartAsRoot(newPart); |
480 | |||
480 | // one of these is a proxy. | 481 | // one of these is a proxy. |
481 | if (shape.PCode != (byte)PCode.None && shape.PCode != (byte)PCode.ParticleSystem) | 482 | if (shape.PCode != (byte)PCode.None && shape.PCode != (byte)PCode.ParticleSystem) |
482 | AttachToBackup(); | 483 | AttachToBackup(); |
@@ -686,7 +687,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
686 | m_rootPart = part; | 687 | m_rootPart = part; |
687 | } | 688 | } |
688 | 689 | ||
689 | 690 | /// <summary> | |
691 | /// Attach this scene object to the given avatar. | ||
692 | /// </summary> | ||
693 | /// <param name="agentID"></param> | ||
694 | /// <param name="attachmentpoint"></param> | ||
695 | /// <param name="AttachOffset"></param> | ||
690 | public void AttachToAgent(LLUUID agentID, uint attachmentpoint, LLVector3 AttachOffset) | 696 | public void AttachToAgent(LLUUID agentID, uint attachmentpoint, LLVector3 AttachOffset) |
691 | { | 697 | { |
692 | ScenePresence avatar = m_scene.GetScenePresence(agentID); | 698 | ScenePresence avatar = m_scene.GetScenePresence(agentID); |
@@ -752,6 +758,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
752 | m_rootPart.SetAttachmentPoint((byte)0); | 758 | m_rootPart.SetAttachmentPoint((byte)0); |
753 | m_rootPart.m_IsAttachment = false; | 759 | m_rootPart.m_IsAttachment = false; |
754 | m_rootPart.ApplyPhysics(m_rootPart.GetEffectiveObjectFlags(), m_scene.m_physicalPrim); | 760 | m_rootPart.ApplyPhysics(m_rootPart.GetEffectiveObjectFlags(), m_scene.m_physicalPrim); |
761 | HasGroupChanged = true; | ||
755 | AttachToBackup(); | 762 | AttachToBackup(); |
756 | m_rootPart.ScheduleFullUpdate(); | 763 | m_rootPart.ScheduleFullUpdate(); |
757 | m_rootPart.ClearUndoState(); | 764 | m_rootPart.ClearUndoState(); |
@@ -1026,6 +1033,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1026 | lock (m_targets) | 1033 | lock (m_targets) |
1027 | m_targets.Clear(); | 1034 | m_targets.Clear(); |
1028 | } | 1035 | } |
1036 | |||
1029 | ScheduleGroupForFullUpdate(); | 1037 | ScheduleGroupForFullUpdate(); |
1030 | } | 1038 | } |
1031 | 1039 | ||
@@ -1037,6 +1045,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1037 | (int) (color.z * 0xff)); | 1045 | (int) (color.z * 0xff)); |
1038 | Text = text; | 1046 | Text = text; |
1039 | 1047 | ||
1048 | HasGroupChanged = true; | ||
1040 | m_rootPart.ScheduleFullUpdate(); | 1049 | m_rootPart.ScheduleFullUpdate(); |
1041 | } | 1050 | } |
1042 | 1051 | ||
@@ -1229,6 +1238,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1229 | 1238 | ||
1230 | dupe.RootPart.DoPhysicsPropertyUpdate(dupe.RootPart.PhysActor.IsPhysical, true); | 1239 | dupe.RootPart.DoPhysicsPropertyUpdate(dupe.RootPart.PhysActor.IsPhysical, true); |
1231 | } | 1240 | } |
1241 | |||
1232 | // Now we've made a copy that replaces this one, we need to | 1242 | // Now we've made a copy that replaces this one, we need to |
1233 | // switch the owner to the person who did the copying | 1243 | // switch the owner to the person who did the copying |
1234 | // Second Life copies an object and duplicates the first one in it's place | 1244 | // Second Life copies an object and duplicates the first one in it's place |
@@ -1257,8 +1267,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1257 | if (userExposed) | 1267 | if (userExposed) |
1258 | { | 1268 | { |
1259 | dupe.UpdateParentIDs(); | 1269 | dupe.UpdateParentIDs(); |
1260 | 1270 | dupe.HasGroupChanged = true; | |
1261 | dupe.AttachToBackup(); | 1271 | dupe.AttachToBackup(); |
1272 | |||
1262 | ScheduleGroupForFullUpdate(); | 1273 | ScheduleGroupForFullUpdate(); |
1263 | } | 1274 | } |
1264 | 1275 | ||
@@ -1386,7 +1397,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
1386 | part.OwnerID = cAgentID; | 1397 | part.OwnerID = cAgentID; |
1387 | part.GroupID = cGroupID; | 1398 | part.GroupID = cGroupID; |
1388 | 1399 | ||
1389 | |||
1390 | if (part.OwnerID != cAgentID) | 1400 | if (part.OwnerID != cAgentID) |
1391 | { | 1401 | { |
1392 | // Apply Next Owner Permissions if we're not bypassing permissions | 1402 | // Apply Next Owner Permissions if we're not bypassing permissions |
@@ -1535,7 +1545,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
1535 | /// </summary> | 1545 | /// </summary> |
1536 | public void ScheduleGroupForFullUpdate() | 1546 | public void ScheduleGroupForFullUpdate() |
1537 | { | 1547 | { |
1538 | HasGroupChanged = true; | ||
1539 | checkAtTargets(); | 1548 | checkAtTargets(); |
1540 | lock (m_parts) | 1549 | lock (m_parts) |
1541 | { | 1550 | { |
@@ -1774,6 +1783,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1774 | // The traffic caused is always going to be pretty minor, so it's not high priority | 1783 | // The traffic caused is always going to be pretty minor, so it's not high priority |
1775 | //objectGroup.DeleteGroup(); | 1784 | //objectGroup.DeleteGroup(); |
1776 | 1785 | ||
1786 | HasGroupChanged = true; | ||
1777 | ScheduleGroupForFullUpdate(); | 1787 | ScheduleGroupForFullUpdate(); |
1778 | } | 1788 | } |
1779 | 1789 | ||
@@ -1834,6 +1844,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1834 | 1844 | ||
1835 | m_scene.AddNewSceneObject(objectGroup, true); | 1845 | m_scene.AddNewSceneObject(objectGroup, true); |
1836 | 1846 | ||
1847 | HasGroupChanged = true; | ||
1837 | ScheduleGroupForFullUpdate(); | 1848 | ScheduleGroupForFullUpdate(); |
1838 | } | 1849 | } |
1839 | else | 1850 | else |
@@ -2112,6 +2123,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
2112 | m_scene.PhysicsScene.AddPhysicsActorTaint(part.PhysActor); | 2123 | m_scene.PhysicsScene.AddPhysicsActorTaint(part.PhysActor); |
2113 | } | 2124 | } |
2114 | //if (part.UUID != m_rootPart.UUID) | 2125 | //if (part.UUID != m_rootPart.UUID) |
2126 | |||
2127 | HasGroupChanged = true; | ||
2115 | ScheduleGroupForFullUpdate(); | 2128 | ScheduleGroupForFullUpdate(); |
2116 | 2129 | ||
2117 | //if (part.UUID == m_rootPart.UUID) | 2130 | //if (part.UUID == m_rootPart.UUID) |
@@ -2552,6 +2565,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
2552 | { | 2565 | { |
2553 | part.SetGroup(GroupID, client); | 2566 | part.SetGroup(GroupID, client); |
2554 | } | 2567 | } |
2568 | |||
2569 | HasGroupChanged = true; | ||
2555 | } | 2570 | } |
2556 | 2571 | ||
2557 | ScheduleGroupForFullUpdate(); | 2572 | ScheduleGroupForFullUpdate(); |