diff --git a/OpenSim/ApplicationPlugins/CreateCommsManager/CreateCommsManagerPlugin.cs b/OpenSim/ApplicationPlugins/CreateCommsManager/CreateCommsManagerPlugin.cs
index 3b98038302..2bf51330d6 100644
--- a/OpenSim/ApplicationPlugins/CreateCommsManager/CreateCommsManagerPlugin.cs
+++ b/OpenSim/ApplicationPlugins/CreateCommsManager/CreateCommsManagerPlugin.cs
@@ -130,20 +130,6 @@ namespace OpenSim.ApplicationPlugins.CreateCommsManager
protected void InitialiseHGServices(OpenSimBase openSim, LibraryRootFolder libraryRootFolder)
{
- HGOpenSimNode hgNode = null;
- try
- {
- hgNode = (HGOpenSimNode) openSim;
- }
- catch (Exception e)
- {
- m_log.Error("[CreateComms] " + e.Message);
- m_log.Error("[CreateComms] The OpenSim application class was : " + openSim.ToString());
- m_log.Error("[CreateComms] To use hypergrid mode, please make sure you are starting opensim with the command line: opensim.exe -hypergrid=true");
- m_log.Error("[CreateComms] Also hypergrid mode can not be ran while using the -background=true command line argument.");
- Environment.Exit(1);
- }
-
// Standalone mode is determined by !startupConfig.GetBoolean("gridmode", false)
if (m_openSim.ConfigurationSettings.Standalone)
{
@@ -154,7 +140,7 @@ namespace OpenSim.ApplicationPlugins.CreateCommsManager
// We are in grid mode
InitialiseHGGridServices(libraryRootFolder);
}
- hgNode.HGServices = HGServices;
+ HGCommands.HGServices = HGServices;
}
protected void InitialiseStandardServices(LibraryRootFolder libraryRootFolder)
diff --git a/OpenSim/Region/Application/Application.cs b/OpenSim/Region/Application/Application.cs
index 7244dc91f9..46e3fc9016 100644
--- a/OpenSim/Region/Application/Application.cs
+++ b/OpenSim/Region/Application/Application.cs
@@ -94,14 +94,12 @@ namespace OpenSim
configSource.AddSwitch("Startup", "inidirectory");
configSource.AddSwitch("Startup", "gridmode");
configSource.AddSwitch("Startup", "physics");
- configSource.AddSwitch("Startup", "hypergrid");
configSource.AddSwitch("Startup", "gui");
configSource.AddConfig("StandAlone");
configSource.AddConfig("Network");
bool background = configSource.Configs["Startup"].GetBoolean("background", false);
- bool hgrid = configSource.Configs["Startup"].GetBoolean("hypergrid", false);
m_saveCrashDumps = configSource.Configs["Startup"].GetBoolean("save_crashes", false);
m_crashDir = configSource.Configs["Startup"].GetString("crash_dir", m_crashDir);
@@ -112,11 +110,7 @@ namespace OpenSim
}
else
{
- m_sim = null;
- if (hgrid)
- m_sim = new HGOpenSimNode(configSource);
- else
- m_sim = new OpenSim(configSource);
+ m_sim = new OpenSim(configSource);
m_sim.Startup();
diff --git a/OpenSim/Region/Application/HGOpenSimNode.cs b/OpenSim/Region/Application/HGCommands.cs
similarity index 73%
rename from OpenSim/Region/Application/HGOpenSimNode.cs
rename to OpenSim/Region/Application/HGCommands.cs
index f4f30620aa..07d3dcbc5c 100644
--- a/OpenSim/Region/Application/HGOpenSimNode.cs
+++ b/OpenSim/Region/Application/HGCommands.cs
@@ -40,42 +40,17 @@ using OpenSim.Region.Framework.Scenes.Hypergrid;
namespace OpenSim
{
- public class HGOpenSimNode : OpenSim
+ public class HGCommands
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- public IHyperlink HGServices = null;
+ public static IHyperlink HGServices = null;
- private uint m_autoMappingX = 0;
- private uint m_autoMappingY = 0;
- private bool m_enableAutoMapping = false;
+ private static uint m_autoMappingX = 0;
+ private static uint m_autoMappingY = 0;
+ private static bool m_enableAutoMapping = false;
- public HGOpenSimNode(IConfigSource configSource) : base(configSource)
- {
- }
-
- ///
- /// Performs initialisation of the scene, such as loading configuration from disk.
- ///
- protected override void StartupSpecific()
- {
- m_log.Info("====================================================================");
- m_log.Info("=================== STARTING HYPERGRID NODE ========================");
- m_log.Info("====================================================================");
-
- base.StartupSpecific();
-
- MainConsole.Instance.Commands.AddCommand("hypergrid", false, "link-mapping", "link-mapping [ ] ",
- "Set local coordinate to map HG regions to", RunCommand);
- MainConsole.Instance.Commands.AddCommand("hypergrid", false, "link-region",
- "link-region :[:] ",
- "Link a hypergrid region", RunCommand);
- MainConsole.Instance.Commands.AddCommand("hypergrid", false, "unlink-region",
- "unlink-region or : ",
- "Unlink a hypergrid region", RunCommand);
- }
-
- protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager,
- AgentCircuitManager circuitManager)
+ public static Scene CreateScene(RegionInfo regionInfo, AgentCircuitManager circuitManager, CommunicationsManager m_commsManager,
+ StorageManager storageManager, ModuleLoader m_moduleLoader, ConfigSettings m_configSettings, OpenSimConfigSource m_config, string m_version)
{
HGSceneCommunicationService sceneGridService = new HGSceneCommunicationService(m_commsManager, HGServices);
@@ -86,18 +61,11 @@ namespace OpenSim
m_configSettings.See_into_region_from_neighbor, m_config.Source, m_version);
}
- private new void RunCommand(string module, string[] cp)
+ public static void RunHGCommand(string command, string[] cmdparams, Scene scene)
{
- List cmdparams = new List(cp);
- if (cmdparams.Count < 1)
- return;
-
- string command = cmdparams[0];
- cmdparams.RemoveAt(0);
-
if (command.Equals("link-mapping"))
{
- if (cmdparams.Count == 2)
+ if (cmdparams.Length == 2)
{
try
{
@@ -115,11 +83,11 @@ namespace OpenSim
}
else if (command.Equals("link-region"))
{
- if (cmdparams.Count < 3)
+ if (cmdparams.Length < 3)
{
- if ((cmdparams.Count == 1) || (cmdparams.Count == 2))
+ if ((cmdparams.Length == 1) || (cmdparams.Length == 2))
{
- LoadXmlLinkFile(cmdparams);
+ LoadXmlLinkFile(cmdparams, scene);
}
else
{
@@ -138,8 +106,8 @@ namespace OpenSim
xloc = Convert.ToUInt32(cmdparams[0]);
yloc = Convert.ToUInt32(cmdparams[1]);
mapName = cmdparams[2];
- if (cmdparams.Count > 3)
- for (int i = 3; i < cmdparams.Count; i++)
+ if (cmdparams.Length > 3)
+ for (int i = 3; i < cmdparams.Length; i++)
mapName += " " + cmdparams[i];
m_log.Info(">> MapName: " + mapName);
@@ -153,7 +121,7 @@ namespace OpenSim
return;
}
- HGHyperlink.TryLinkRegionToCoords(m_sceneManager.CurrentOrFirstScene, null, mapName, xloc, yloc);
+ HGHyperlink.TryLinkRegionToCoords(scene, null, mapName, xloc, yloc);
}
else
{
@@ -179,12 +147,12 @@ namespace OpenSim
}
//if (TryCreateLink(xloc, yloc, externalPort, externalHostName, out regInfo))
- if (HGHyperlink.TryCreateLink(m_sceneManager.CurrentOrFirstScene, null, xloc, yloc, "", externalPort, externalHostName, out regInfo))
+ if (HGHyperlink.TryCreateLink(scene, null, xloc, yloc, "", externalPort, externalHostName, out regInfo))
{
- if (cmdparams.Count >= 5)
+ if (cmdparams.Length >= 5)
{
regInfo.RegionName = "";
- for (int i = 4; i < cmdparams.Count; i++)
+ for (int i = 4; i < cmdparams.Length; i++)
regInfo.RegionName += cmdparams[i] + " ";
}
}
@@ -193,19 +161,19 @@ namespace OpenSim
}
else if (command.Equals("unlink-region"))
{
- if (cmdparams.Count < 1)
+ if (cmdparams.Length < 1)
{
UnlinkRegionCmdUsage();
return;
}
- if (HGHyperlink.TryUnlinkRegion(m_sceneManager.CurrentOrFirstScene, cmdparams[0]))
+ if (HGHyperlink.TryUnlinkRegion(scene, cmdparams[0]))
m_log.InfoFormat("[HGrid]: Successfully unlinked {0}", cmdparams[0]);
else
m_log.InfoFormat("[HGrid]: Unable to unlink {0}, region not found", cmdparams[0]);
}
}
- private void LoadXmlLinkFile(List cmdparams)
+ private static void LoadXmlLinkFile(string[] cmdparams, Scene scene)
{
//use http://www.hgurl.com/hypergrid.xml for test
try
@@ -214,7 +182,7 @@ namespace OpenSim
XmlConfigSource cs = new XmlConfigSource(r);
string[] excludeSections = null;
- if (cmdparams.Count == 2)
+ if (cmdparams.Length == 2)
{
if (cmdparams[1].ToLower().StartsWith("excludelist:"))
{
@@ -242,7 +210,7 @@ namespace OpenSim
}
if (!skip)
{
- ReadLinkFromConfig(cs.Configs[i]);
+ ReadLinkFromConfig(cs.Configs[i], scene);
}
}
}
@@ -253,7 +221,7 @@ namespace OpenSim
}
- private void ReadLinkFromConfig(IConfig config)
+ private static void ReadLinkFromConfig(IConfig config, Scene scene)
{
RegionInfo regInfo;
uint xloc, yloc;
@@ -279,7 +247,7 @@ namespace OpenSim
((realYLoc - yloc < 3896) || (yloc - realYLoc < 3896))))
{
if (
- HGHyperlink.TryCreateLink(m_sceneManager.CurrentOrFirstScene, null, xloc, yloc, "", externalPort,
+ HGHyperlink.TryCreateLink(scene, null, xloc, yloc, "", externalPort,
externalHostName, out regInfo))
{
regInfo.RegionName = config.GetString("localName", "");
@@ -288,14 +256,14 @@ namespace OpenSim
}
- private void LinkRegionCmdUsage()
+ private static void LinkRegionCmdUsage()
{
m_log.Info("Usage: link-region :[:]");
m_log.Info("Usage: link-region []");
m_log.Info("Usage: link-region []");
}
- private void UnlinkRegionCmdUsage()
+ private static void UnlinkRegionCmdUsage()
{
m_log.Info("Usage: unlink-region :");
m_log.Info("Usage: unlink-region ");
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index a0b9568e66..d3941d6302 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -291,6 +291,16 @@ namespace OpenSim
"reset user password [ [ []]]",
"Reset a user password", HandleResetUserPassword);
}
+
+ m_console.Commands.AddCommand("hypergrid", false, "link-mapping", "link-mapping [ ] ",
+ "Set local coordinate to map HG regions to", RunCommand);
+ m_console.Commands.AddCommand("hypergrid", false, "link-region",
+ "link-region :[:] ",
+ "Link a hypergrid region", RunCommand);
+ m_console.Commands.AddCommand("hypergrid", false, "unlink-region",
+ "unlink-region or : ",
+ "Unlink a hypergrid region", RunCommand);
+
}
public override void ShutdownSpecific()
@@ -625,6 +635,12 @@ namespace OpenSim
m_sceneManager.CacheJ2kDecode(1);
}
break;
+
+ case "link-region":
+ case "unlink-region":
+ case "link-mapping":
+ HGCommands.RunHGCommand(command, cmdparams, m_sceneManager.CurrentOrFirstScene);
+ break;
}
}
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs
index 286c5a1ace..6838ab5609 100644
--- a/OpenSim/Region/Application/OpenSimBase.cs
+++ b/OpenSim/Region/Application/OpenSimBase.cs
@@ -736,6 +736,11 @@ namespace OpenSim
protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager,
AgentCircuitManager circuitManager)
{
+ bool hgrid = ConfigSource.Source.Configs["Startup"].GetBoolean("hypergrid", false);
+ if (hgrid)
+ return HGCommands.CreateScene(regionInfo, circuitManager, m_commsManager,
+ storageManager, m_moduleLoader, m_configSettings, m_config, m_version);
+
SceneCommunicationService sceneGridService = new SceneCommunicationService(m_commsManager);
return new Scene(
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index 01a15729cb..550162ac3a 100644
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -22,6 +22,9 @@
; Set this to true if you are connecting your OpenSimulator regions to a grid
; Set this to false if you are running OpenSimulator in standalone mode
gridmode = false
+
+ ; Set this to true if you want this OpenSimulator to run the Hypergrid functionality
+ hypergrid = false
startup_console_commands_file = "startup_commands.txt"
shutdown_console_commands_file = "shutdown_commands.txt"