aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clarke Casey2008-06-27 16:36:19 +0000
committerJustin Clarke Casey2008-06-27 16:36:19 +0000
commit9bf67201c31d531e0480e67d8a96472d0a5b0c76 (patch)
treecb3123ab6062efd7f32762b5a8a88bf1f58a35a5
parentdr scofield's warning safari: hunting down those little buggers (diff)
downloadopensim-SC-9bf67201c31d531e0480e67d8a96472d0a5b0c76.zip
opensim-SC-9bf67201c31d531e0480e67d8a96472d0a5b0c76.tar.gz
opensim-SC-9bf67201c31d531e0480e67d8a96472d0a5b0c76.tar.bz2
opensim-SC-9bf67201c31d531e0480e67d8a96472d0a5b0c76.tar.xz
* Remove responsibilty for signalling scene object change from SceneObjectPart.SendFullUpdate()
* This means that we will no longer pointlessly repersist all the prims in the scene when OpenSim first starts up * This also means that force-update on the console will not trigger repersistence. * Also, in other places persistence is no longer done where it wasn't actually necessary * I think I changed the code for all instances correctly, but it's not possible that I missed some and some things which did persist properly have stopped * Please patch or mantis if this is the case
-rw-r--r--OpenSim/Region/Environment/Scenes/InnerScene.cs1
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs23
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs3
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectPart.cs25
-rw-r--r--OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs30
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs28
6 files changed, 97 insertions, 13 deletions
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs
index d74d763..ab0ed6b 100644
--- a/OpenSim/Region/Environment/Scenes/InnerScene.cs
+++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs
@@ -1522,6 +1522,7 @@ namespace OpenSim.Region.Environment.Scenes
1522 } 1522 }
1523 1523
1524 copy.StartScripts(); 1524 copy.StartScripts();
1525 copy.HasGroupChanged = true;
1525 copy.ScheduleGroupForFullUpdate(); 1526 copy.ScheduleGroupForFullUpdate();
1526 return copy; 1527 return copy;
1527 } 1528 }
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();
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
index 5ef9c79..fbf2794 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.Inventory.cs
@@ -454,11 +454,12 @@ namespace OpenSim.Region.Environment.Scenes
454 } 454 }
455 455
456 } 456 }
457
457 if (scriptcount <= 0) 458 if (scriptcount <= 0)
458 { 459 {
459 RemFlag(LLObject.ObjectFlags.Scripted); 460 RemFlag(LLObject.ObjectFlags.Scripted);
460 ScheduleFullUpdate();
461 } 461 }
462
462 ScheduleFullUpdate(); 463 ScheduleFullUpdate();
463 464
464 return type; 465 return type;
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
index 94d661c..af535cc 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
@@ -1660,7 +1660,6 @@ namespace OpenSim.Region.Environment.Scenes
1660 { 1660 {
1661 if (m_parentGroup != null) 1661 if (m_parentGroup != null)
1662 { 1662 {
1663 m_parentGroup.HasGroupChanged = true;
1664 m_parentGroup.QueueForUpdateCheck(); 1663 m_parentGroup.QueueForUpdateCheck();
1665 } 1664 }
1666 1665
@@ -1766,7 +1765,7 @@ namespace OpenSim.Region.Environment.Scenes
1766 #region Shape 1765 #region Shape
1767 1766
1768 /// <summary> 1767 /// <summary>
1769 /// 1768 /// Update the shape of this part.
1770 /// </summary> 1769 /// </summary>
1771 /// <param name="shapeBlock"></param> 1770 /// <param name="shapeBlock"></param>
1772 public void UpdateShape(ObjectShapePacket.ObjectDataBlock shapeBlock) 1771 public void UpdateShape(ObjectShapePacket.ObjectDataBlock shapeBlock)
@@ -1793,6 +1792,8 @@ namespace OpenSim.Region.Environment.Scenes
1793 { 1792 {
1794 PhysActor.Shape = m_shape; 1793 PhysActor.Shape = m_shape;
1795 } 1794 }
1795
1796 ParentGroup.HasGroupChanged = true;
1796 ScheduleFullUpdate(); 1797 ScheduleFullUpdate();
1797 } 1798 }
1798 1799
@@ -2012,6 +2013,7 @@ namespace OpenSim.Region.Environment.Scenes
2012 } 2013 }
2013 } 2014 }
2014 2015
2016 ParentGroup.HasGroupChanged = true;
2015 ScheduleFullUpdate(); 2017 ScheduleFullUpdate();
2016 } 2018 }
2017 2019
@@ -2066,13 +2068,15 @@ namespace OpenSim.Region.Environment.Scenes
2066 #region Texture 2068 #region Texture
2067 2069
2068 /// <summary> 2070 /// <summary>
2069 /// 2071 /// Update the texture entry for this part.
2070 /// </summary> 2072 /// </summary>
2071 /// <param name="textureEntry"></param> 2073 /// <param name="textureEntry"></param>
2072 public void UpdateTextureEntry(byte[] textureEntry) 2074 public void UpdateTextureEntry(byte[] textureEntry)
2073 { 2075 {
2074 m_shape.TextureEntry = textureEntry; 2076 m_shape.TextureEntry = textureEntry;
2075 TriggerScriptChangedEvent(Changed.TEXTURE); 2077 TriggerScriptChangedEvent(Changed.TEXTURE);
2078
2079 ParentGroup.HasGroupChanged = true;
2076 ScheduleFullUpdate(); 2080 ScheduleFullUpdate();
2077 } 2081 }
2078 2082
@@ -2301,7 +2305,7 @@ namespace OpenSim.Region.Environment.Scenes
2301 #region Resizing/Scale 2305 #region Resizing/Scale
2302 2306
2303 /// <summary> 2307 /// <summary>
2304 /// 2308 /// Resize this part.
2305 /// </summary> 2309 /// </summary>
2306 /// <param name="scale"></param> 2310 /// <param name="scale"></param>
2307 public void Resize(LLVector3 scale) 2311 public void Resize(LLVector3 scale)
@@ -2309,6 +2313,7 @@ namespace OpenSim.Region.Environment.Scenes
2309 StoreUndoState(); 2313 StoreUndoState();
2310 m_shape.Scale = scale; 2314 m_shape.Scale = scale;
2311 2315
2316 ParentGroup.HasGroupChanged = true;
2312 ScheduleFullUpdate(); 2317 ScheduleFullUpdate();
2313 } 2318 }
2314 2319
@@ -2576,12 +2581,24 @@ namespace OpenSim.Region.Environment.Scenes
2576 { 2581 {
2577 } 2582 }
2578 2583
2584 /// <summary>
2585 /// Set the text displayed for this part.
2586 /// </summary>
2587 /// <param name="text"></param>
2579 public void SetText(string text) 2588 public void SetText(string text)
2580 { 2589 {
2581 Text = text; 2590 Text = text;
2591
2592 ParentGroup.HasGroupChanged = true;
2582 ScheduleFullUpdate(); 2593 ScheduleFullUpdate();
2583 } 2594 }
2584 2595
2596 /// <summary>
2597 /// Set the text displayed for this part.
2598 /// </summary>
2599 /// <param name="text"></param>
2600 /// <param name="color"></param>
2601 /// <param name="alpha"></param>
2585 public void SetText(string text, Vector3 color, double alpha) 2602 public void SetText(string text, Vector3 color, double alpha)
2586 { 2603 {
2587 Color = Color.FromArgb(0xff - (int) (alpha*0xff), 2604 Color = Color.FromArgb(0xff - (int) (alpha*0xff),
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
index 0514573..7df1173 100644
--- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
+++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
@@ -1058,6 +1058,19 @@ namespace OpenSim.Region.ScriptEngine.Common
1058 } 1058 }
1059 } 1059 }
1060 1060
1061 /// <summary>
1062 /// Set flexi parameters of a part.
1063 ///
1064 /// FIXME: Much of this code should probably be within the part itself.
1065 /// </summary>
1066 /// <param name="part"></param>
1067 /// <param name="flexi"></param>
1068 /// <param name="softness"></param>
1069 /// <param name="gravity"></param>
1070 /// <param name="friction"></param>
1071 /// <param name="wind"></param>
1072 /// <param name="tension"></param>
1073 /// <param name="Force"></param>
1061 private void SetFlexi(SceneObjectPart part, bool flexi, int softness, float gravity, float friction, 1074 private void SetFlexi(SceneObjectPart part, bool flexi, int softness, float gravity, float friction,
1062 float wind, float tension, LSL_Types.Vector3 Force) 1075 float wind, float tension, LSL_Types.Vector3 Force)
1063 { 1076 {
@@ -1097,14 +1110,26 @@ namespace OpenSim.Region.ScriptEngine.Common
1097 if (needs_fakedelete) 1110 if (needs_fakedelete)
1098 { 1111 {
1099 if (part.ParentGroup != null) 1112 if (part.ParentGroup != null)
1100 { 1113 {
1101 part.ParentGroup.FakeDeleteGroup(); 1114 part.ParentGroup.FakeDeleteGroup();
1102 } 1115 }
1103 } 1116 }
1104 1117
1118 part.ParentGroup.HasGroupChanged = true;
1105 part.ScheduleFullUpdate(); 1119 part.ScheduleFullUpdate();
1106 } 1120 }
1107 1121
1122 /// <summary>
1123 /// Set a light point on a part
1124 ///
1125 /// FIXME: Much of this code should probably be in SceneObjectGroup
1126 /// </summary>
1127 /// <param name="part"></param>
1128 /// <param name="light"></param>
1129 /// <param name="color"></param>
1130 /// <param name="intensity"></param>
1131 /// <param name="radius"></param>
1132 /// <param name="falloff"></param>
1108 private void SetPointLight(SceneObjectPart part, bool light, LSL_Types.Vector3 color, float intensity, float radius, float falloff) 1133 private void SetPointLight(SceneObjectPart part, bool light, LSL_Types.Vector3 color, float intensity, float radius, float falloff)
1109 { 1134 {
1110 if (part == null) 1135 if (part == null)
@@ -1125,6 +1150,7 @@ namespace OpenSim.Region.ScriptEngine.Common
1125 part.Shape.LightEntry = false; 1150 part.Shape.LightEntry = false;
1126 } 1151 }
1127 1152
1153 part.ParentGroup.HasGroupChanged = true;
1128 part.ScheduleFullUpdate(); 1154 part.ScheduleFullUpdate();
1129 } 1155 }
1130 1156
@@ -1583,7 +1609,7 @@ namespace OpenSim.Region.ScriptEngine.Common
1583 m_host.SoundGain = volume; 1609 m_host.SoundGain = volume;
1584 m_host.SoundFlags = 1; // looping 1610 m_host.SoundFlags = 1; // looping
1585 m_host.SoundRadius = 20; // Magic number, 20 seems reasonable. Make configurable? 1611 m_host.SoundRadius = 20; // Magic number, 20 seems reasonable. Make configurable?
1586 1612
1587 m_host.ScheduleFullUpdate(); 1613 m_host.ScheduleFullUpdate();
1588 m_host.SendFullUpdateToAllClients(); 1614 m_host.SendFullUpdateToAllClients();
1589 } 1615 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 477c6a8..fea3fc2 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -911,6 +911,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
911 } 911 }
912 } 912 }
913 913
914 /// <summary>
915 /// Set flexi parameters of a part.
916 ///
917 /// FIXME: Much of this code should probably be within the part itself.
918 /// </summary>
919 /// <param name="part"></param>
920 /// <param name="flexi"></param>
921 /// <param name="softness"></param>
922 /// <param name="gravity"></param>
923 /// <param name="friction"></param>
924 /// <param name="wind"></param>
925 /// <param name="tension"></param>
926 /// <param name="Force"></param>
914 private void SetFlexi(SceneObjectPart part, bool flexi, int softness, float gravity, float friction, 927 private void SetFlexi(SceneObjectPart part, bool flexi, int softness, float gravity, float friction,
915 float wind, float tension, LSL_Types.Vector3 Force) 928 float wind, float tension, LSL_Types.Vector3 Force)
916 { 929 {
@@ -955,9 +968,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
955 } 968 }
956 } 969 }
957 970
971 part.ParentGroup.HasGroupChanged = true;
958 part.ScheduleFullUpdate(); 972 part.ScheduleFullUpdate();
959 } 973 }
960 974
975 /// <summary>
976 /// Set a light point on a part
977 ///
978 /// FIXME: Much of this code should probably be in SceneObjectGroup
979 /// </summary>
980 /// <param name="part"></param>
981 /// <param name="light"></param>
982 /// <param name="color"></param>
983 /// <param name="intensity"></param>
984 /// <param name="radius"></param>
985 /// <param name="falloff"></param>
961 private void SetPointLight(SceneObjectPart part, bool light, LSL_Types.Vector3 color, float intensity, float radius, float falloff) 986 private void SetPointLight(SceneObjectPart part, bool light, LSL_Types.Vector3 color, float intensity, float radius, float falloff)
962 { 987 {
963 if (part == null) 988 if (part == null)
@@ -978,11 +1003,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
978 part.Shape.LightEntry = false; 1003 part.Shape.LightEntry = false;
979 } 1004 }
980 1005
1006 part.ParentGroup.HasGroupChanged = true;
981 part.ScheduleFullUpdate(); 1007 part.ScheduleFullUpdate();
982 } 1008 }
983 1009
984
985
986 public LSL_Types.Vector3 llGetColor(int face) 1010 public LSL_Types.Vector3 llGetColor(int face)
987 { 1011 {
988 m_host.AddScriptLPS(1); 1012 m_host.AddScriptLPS(1);