diff options
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 9 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneGraph.cs | 1 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 18 | ||||
-rw-r--r-- | bin/OpenSim.ini.example | 3 |
4 files changed, 22 insertions, 9 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 73daab8..638187b 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -168,6 +168,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
168 | private volatile bool shuttingdown = false; | 168 | private volatile bool shuttingdown = false; |
169 | 169 | ||
170 | private int m_lastUpdate = Environment.TickCount; | 170 | private int m_lastUpdate = Environment.TickCount; |
171 | private int m_maxPrimsPerFrame = 200; | ||
171 | 172 | ||
172 | private object m_deleting_scene_object = new object(); | 173 | private object m_deleting_scene_object = new object(); |
173 | 174 | ||
@@ -229,6 +230,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
229 | get { return m_timedilation; } | 230 | get { return m_timedilation; } |
230 | } | 231 | } |
231 | 232 | ||
233 | public int MaxPrimsPerFrame | ||
234 | { | ||
235 | get { return m_maxPrimsPerFrame; } | ||
236 | set { m_maxPrimsPerFrame = value; } | ||
237 | } | ||
238 | |||
232 | /// <summary> | 239 | /// <summary> |
233 | /// This is for llGetRegionFPS | 240 | /// This is for llGetRegionFPS |
234 | /// </summary> | 241 | /// </summary> |
@@ -372,6 +379,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
372 | m_persistAfter *= 10000000; | 379 | m_persistAfter *= 10000000; |
373 | 380 | ||
374 | m_defaultScriptEngine = startupConfig.GetString("DefaultScriptEngine", "DotNetEngine"); | 381 | m_defaultScriptEngine = startupConfig.GetString("DefaultScriptEngine", "DotNetEngine"); |
382 | |||
383 | m_maxPrimsPerFrame = startupConfig.GetInt("MaxPrimsPerFrame", 200); | ||
375 | } | 384 | } |
376 | catch | 385 | catch |
377 | { | 386 | { |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 4b4461f..7f23b7a 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -617,6 +617,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
617 | 617 | ||
618 | newAvatar = new ScenePresence(client, m_parentScene, m_regInfo, appearance); | 618 | newAvatar = new ScenePresence(client, m_parentScene, m_regInfo, appearance); |
619 | newAvatar.IsChildAgent = true; | 619 | newAvatar.IsChildAgent = true; |
620 | newAvatar.MaxPrimsPerFrame = m_parentScene.MaxPrimsPerFrame; | ||
620 | 621 | ||
621 | AddScenePresence(newAvatar); | 622 | AddScenePresence(newAvatar); |
622 | 623 | ||
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 50cebfb..7e1063d 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -141,6 +141,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
141 | 141 | ||
142 | private Vector3 m_lastVelocity = Vector3.Zero; | 142 | private Vector3 m_lastVelocity = Vector3.Zero; |
143 | 143 | ||
144 | private int m_maxPrimsPerFrame = 200; | ||
145 | |||
144 | // Default AV Height | 146 | // Default AV Height |
145 | private float m_avHeight = 127.0f; | 147 | private float m_avHeight = 127.0f; |
146 | 148 | ||
@@ -392,6 +394,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
392 | set { m_parentPosition = value; } | 394 | set { m_parentPosition = value; } |
393 | } | 395 | } |
394 | 396 | ||
397 | public int MaxPrimsPerFrame | ||
398 | { | ||
399 | get { return m_maxPrimsPerFrame; } | ||
400 | set { m_maxPrimsPerFrame = value; } | ||
401 | } | ||
402 | |||
395 | /// <summary> | 403 | /// <summary> |
396 | /// Absolute position of this avatar in 'region cordinates' | 404 | /// Absolute position of this avatar in 'region cordinates' |
397 | /// </summary> | 405 | /// </summary> |
@@ -747,7 +755,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
747 | } | 755 | } |
748 | } | 756 | } |
749 | 757 | ||
750 | while (m_pendingObjects != null && m_pendingObjects.Count > 0 && m_partsUpdateQueue.Count < 60) | 758 | while (m_pendingObjects != null && m_pendingObjects.Count > 0 && m_partsUpdateQueue.Count < m_maxPrimsPerFrame) |
751 | { | 759 | { |
752 | SceneObjectGroup g = m_pendingObjects.Dequeue(); | 760 | SceneObjectGroup g = m_pendingObjects.Dequeue(); |
753 | 761 | ||
@@ -763,8 +771,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
763 | g.ScheduleFullUpdateToAvatar(this); | 771 | g.ScheduleFullUpdateToAvatar(this); |
764 | } | 772 | } |
765 | 773 | ||
766 | int updateCount = 0; | ||
767 | |||
768 | while (m_partsUpdateQueue.Count > 0) | 774 | while (m_partsUpdateQueue.Count > 0) |
769 | { | 775 | { |
770 | SceneObjectPart part = m_partsUpdateQueue.Dequeue(); | 776 | SceneObjectPart part = m_partsUpdateQueue.Dequeue(); |
@@ -798,7 +804,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
798 | 804 | ||
799 | update.LastFullUpdateTime = part.TimeStampFull; | 805 | update.LastFullUpdateTime = part.TimeStampFull; |
800 | 806 | ||
801 | updateCount++; | ||
802 | } | 807 | } |
803 | else if (update.LastTerseUpdateTime <= part.TimeStampTerse) | 808 | else if (update.LastTerseUpdateTime <= part.TimeStampTerse) |
804 | { | 809 | { |
@@ -809,7 +814,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
809 | part.SendTerseUpdateToClient(ControllingClient); | 814 | part.SendTerseUpdateToClient(ControllingClient); |
810 | 815 | ||
811 | update.LastTerseUpdateTime = part.TimeStampTerse; | 816 | update.LastTerseUpdateTime = part.TimeStampTerse; |
812 | updateCount++; | ||
813 | } | 817 | } |
814 | } | 818 | } |
815 | else | 819 | else |
@@ -833,11 +837,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
833 | 837 | ||
834 | part.SendFullUpdate(ControllingClient, | 838 | part.SendFullUpdate(ControllingClient, |
835 | GenerateClientFlags(part.UUID)); | 839 | GenerateClientFlags(part.UUID)); |
836 | updateCount++; | ||
837 | } | 840 | } |
838 | |||
839 | if (updateCount > 200) | ||
840 | break; | ||
841 | } | 841 | } |
842 | 842 | ||
843 | m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS); | 843 | m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS); |
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 506265d..7f7bcf4 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example | |||
@@ -78,6 +78,9 @@ | |||
78 | ; YOU HAVE BEEN WARNED!!! | 78 | ; YOU HAVE BEEN WARNED!!! |
79 | TrustBinaries = false | 79 | TrustBinaries = false |
80 | 80 | ||
81 | ; How many prims to send to each avatar in the scene on each Update() | ||
82 | ; MaxPrimsPerFrame = 200 | ||
83 | |||
81 | ; ## | 84 | ; ## |
82 | ; ## STORAGE | 85 | ; ## STORAGE |
83 | ; ## | 86 | ; ## |