aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/Scene.cs
diff options
context:
space:
mode:
authorJohn Hurliman2010-05-21 13:55:36 -0700
committerJohn Hurliman2010-05-21 13:55:36 -0700
commit93ef65c69055157e0b7d51e544abe5a1035f40f0 (patch)
tree0afcfd50591e34f0a5d7efa474f300cf09083f69 /OpenSim/Region/Framework/Scenes/Scene.cs
parentminor: remove LongRunning test designator from TestAddSceneObject() since it ... (diff)
downloadopensim-SC_OLD-93ef65c69055157e0b7d51e544abe5a1035f40f0.zip
opensim-SC_OLD-93ef65c69055157e0b7d51e544abe5a1035f40f0.tar.gz
opensim-SC_OLD-93ef65c69055157e0b7d51e544abe5a1035f40f0.tar.bz2
opensim-SC_OLD-93ef65c69055157e0b7d51e544abe5a1035f40f0.tar.xz
* Moving all of the prioritization/reprioritization code into a new file Prioritizer.cs
* Simplified the interest management code to make it easier to add new policies. Prioritization and reprioritization share code paths now * Improved the distance and front back policies to always give your avatar the highest priority
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs96
1 files changed, 46 insertions, 50 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index de8ecc2..f35dffc 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -58,13 +58,6 @@ namespace OpenSim.Region.Framework.Scenes
58 58
59 public partial class Scene : SceneBase 59 public partial class Scene : SceneBase
60 { 60 {
61 public enum UpdatePrioritizationSchemes {
62 Time = 0,
63 Distance = 1,
64 SimpleAngularDistance = 2,
65 FrontBack = 3,
66 }
67
68 public delegate void SynchronizeSceneHandler(Scene scene); 61 public delegate void SynchronizeSceneHandler(Scene scene);
69 public SynchronizeSceneHandler SynchronizeScene = null; 62 public SynchronizeSceneHandler SynchronizeScene = null;
70 63
@@ -388,12 +381,6 @@ namespace OpenSim.Region.Framework.Scenes
388 private int m_lastUpdate; 381 private int m_lastUpdate;
389 private bool m_firstHeartbeat = true; 382 private bool m_firstHeartbeat = true;
390 383
391 private UpdatePrioritizationSchemes m_update_prioritization_scheme = UpdatePrioritizationSchemes.Time;
392 private bool m_reprioritization_enabled = true;
393 private double m_reprioritization_interval = 5000.0;
394 private double m_root_reprioritization_distance = 10.0;
395 private double m_child_reprioritization_distance = 20.0;
396
397 private object m_deleting_scene_object = new object(); 384 private object m_deleting_scene_object = new object();
398 385
399 // the minimum time that must elapse before a changed object will be considered for persisted 386 // the minimum time that must elapse before a changed object will be considered for persisted
@@ -401,15 +388,21 @@ namespace OpenSim.Region.Framework.Scenes
401 // the maximum time that must elapse before a changed object will be considered for persisted 388 // the maximum time that must elapse before a changed object will be considered for persisted
402 public long m_persistAfter = DEFAULT_MAX_TIME_FOR_PERSISTENCE * 10000000L; 389 public long m_persistAfter = DEFAULT_MAX_TIME_FOR_PERSISTENCE * 10000000L;
403 390
391 private UpdatePrioritizationSchemes m_priorityScheme = UpdatePrioritizationSchemes.Time;
392 private bool m_reprioritizationEnabled = true;
393 private double m_reprioritizationInterval = 5000.0;
394 private double m_rootReprioritizationDistance = 10.0;
395 private double m_childReprioritizationDistance = 20.0;
396
404 #endregion 397 #endregion
405 398
406 #region Properties 399 #region Properties
407 400
408 public UpdatePrioritizationSchemes UpdatePrioritizationScheme { get { return this.m_update_prioritization_scheme; } } 401 public UpdatePrioritizationSchemes UpdatePrioritizationScheme { get { return m_priorityScheme; } }
409 public bool IsReprioritizationEnabled { get { return m_reprioritization_enabled; } } 402 public bool IsReprioritizationEnabled { get { return m_reprioritizationEnabled; } }
410 public double ReprioritizationInterval { get { return m_reprioritization_interval; } } 403 public double ReprioritizationInterval { get { return m_reprioritizationInterval; } }
411 public double RootReprioritizationDistance { get { return m_root_reprioritization_distance; } } 404 public double RootReprioritizationDistance { get { return m_rootReprioritizationDistance; } }
412 public double ChildReprioritizationDistance { get { return m_child_reprioritization_distance; } } 405 public double ChildReprioritizationDistance { get { return m_childReprioritizationDistance; } }
413 406
414 public AgentCircuitManager AuthenticateHandler 407 public AgentCircuitManager AuthenticateHandler
415 { 408 {
@@ -611,6 +604,8 @@ namespace OpenSim.Region.Framework.Scenes
611 m_asyncSceneObjectDeleter = new AsyncSceneObjectGroupDeleter(this); 604 m_asyncSceneObjectDeleter = new AsyncSceneObjectGroupDeleter(this);
612 m_asyncSceneObjectDeleter.Enabled = true; 605 m_asyncSceneObjectDeleter.Enabled = true;
613 606
607 #region Region Settings
608
614 // Load region settings 609 // Load region settings
615 m_regInfo.RegionSettings = m_storageManager.DataStore.LoadRegionSettings(m_regInfo.RegionID); 610 m_regInfo.RegionSettings = m_storageManager.DataStore.LoadRegionSettings(m_regInfo.RegionID);
616 if (m_storageManager.EstateDataStore != null) 611 if (m_storageManager.EstateDataStore != null)
@@ -657,6 +652,8 @@ namespace OpenSim.Region.Framework.Scenes
657 } 652 }
658 } 653 }
659 654
655 #endregion Region Settings
656
660 MainConsole.Instance.Commands.AddCommand("region", false, "reload estate", 657 MainConsole.Instance.Commands.AddCommand("region", false, "reload estate",
661 "reload estate", 658 "reload estate",
662 "Reload the estate data", HandleReloadEstate); 659 "Reload the estate data", HandleReloadEstate);
@@ -701,6 +698,8 @@ namespace OpenSim.Region.Framework.Scenes
701 698
702 m_simulatorVersion = simulatorVersion + " (" + Util.GetRuntimeInformation() + ")"; 699 m_simulatorVersion = simulatorVersion + " (" + Util.GetRuntimeInformation() + ")";
703 700
701 #region Region Config
702
704 try 703 try
705 { 704 {
706 // Region config overrides global config 705 // Region config overrides global config
@@ -754,38 +753,6 @@ namespace OpenSim.Region.Framework.Scenes
754 753
755 m_strictAccessControl = startupConfig.GetBoolean("StrictAccessControl", m_strictAccessControl); 754 m_strictAccessControl = startupConfig.GetBoolean("StrictAccessControl", m_strictAccessControl);
756 755
757 IConfig interest_management_config = m_config.Configs["InterestManagement"];
758 if (interest_management_config != null)
759 {
760 string update_prioritization_scheme = interest_management_config.GetString("UpdatePrioritizationScheme", "Time").Trim().ToLower();
761 switch (update_prioritization_scheme)
762 {
763 case "time":
764 m_update_prioritization_scheme = UpdatePrioritizationSchemes.Time;
765 break;
766 case "distance":
767 m_update_prioritization_scheme = UpdatePrioritizationSchemes.Distance;
768 break;
769 case "simpleangulardistance":
770 m_update_prioritization_scheme = UpdatePrioritizationSchemes.SimpleAngularDistance;
771 break;
772 case "frontback":
773 m_update_prioritization_scheme = UpdatePrioritizationSchemes.FrontBack;
774 break;
775 default:
776 m_log.Warn("[SCENE]: UpdatePrioritizationScheme was not recognized, setting to default settomg of Time");
777 m_update_prioritization_scheme = UpdatePrioritizationSchemes.Time;
778 break;
779 }
780
781 m_reprioritization_enabled = interest_management_config.GetBoolean("ReprioritizationEnabled", true);
782 m_reprioritization_interval = interest_management_config.GetDouble("ReprioritizationInterval", 5000.0);
783 m_root_reprioritization_distance = interest_management_config.GetDouble("RootReprioritizationDistance", 10.0);
784 m_child_reprioritization_distance = interest_management_config.GetDouble("ChildReprioritizationDistance", 20.0);
785 }
786
787 m_log.Info("[SCENE]: Using the " + m_update_prioritization_scheme + " prioritization scheme");
788
789 #region BinaryStats 756 #region BinaryStats
790 757
791 try 758 try
@@ -822,6 +789,35 @@ namespace OpenSim.Region.Framework.Scenes
822 { 789 {
823 m_log.Warn("[SCENE]: Failed to load StartupConfig"); 790 m_log.Warn("[SCENE]: Failed to load StartupConfig");
824 } 791 }
792
793 #endregion Region Config
794
795 #region Interest Management
796
797 IConfig interestConfig = m_config.Configs["InterestManagement"];
798 if (interestConfig != null)
799 {
800 string update_prioritization_scheme = interestConfig.GetString("UpdatePrioritizationScheme", "Time").Trim().ToLower();
801
802 try
803 {
804 m_priorityScheme = (UpdatePrioritizationSchemes)Enum.Parse(typeof(UpdatePrioritizationSchemes), update_prioritization_scheme, true);
805 }
806 catch (Exception)
807 {
808 m_log.Warn("[PRIORITIZER]: UpdatePrioritizationScheme was not recognized, setting to default prioritizer Time");
809 m_priorityScheme = UpdatePrioritizationSchemes.Time;
810 }
811
812 m_reprioritizationEnabled = interestConfig.GetBoolean("ReprioritizationEnabled", true);
813 m_reprioritizationInterval = interestConfig.GetDouble("ReprioritizationInterval", 5000.0);
814 m_rootReprioritizationDistance = interestConfig.GetDouble("RootReprioritizationDistance", 10.0);
815 m_childReprioritizationDistance = interestConfig.GetDouble("ChildReprioritizationDistance", 20.0);
816 }
817
818 m_log.Info("[SCENE]: Using the " + m_priorityScheme + " prioritization scheme");
819
820 #endregion Interest Management
825 } 821 }
826 822
827 /// <summary> 823 /// <summary>