diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index 9fe284f4ca..beb75a8904 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.IO; using System.Reflection; using System.Text; +using System.Text.RegularExpressions; using System.Timers; using log4net; using Nini.Config; @@ -56,7 +57,16 @@ namespace OpenSim protected bool m_gui = false; protected string m_consoleType = "local"; protected uint m_consolePort = 0; - protected string m_custom_prompt; + + /// + /// Prompt to use for simulator command line. + /// + private string m_consolePrompt; + + /// + /// Regex for parsing out special characters in the prompt. + /// + private Regex m_consolePromptRegex = new Regex(@"([^\\])\\(\w)", RegexOptions.Compiled); private string m_timedScript = "disabled"; private Timer m_scriptTimer; @@ -111,7 +121,7 @@ namespace OpenSim Util.FireAndForgetMethod = asyncCallMethod; stpMaxThreads = startupConfig.GetInt("MaxPoolThreads", 15); - m_custom_prompt = startupConfig.GetString("custom_prompt", "Region"); + m_consolePrompt = startupConfig.GetString("console_prompt", @"Region (\R) "); } if (Util.FireAndForgetMethod == FireAndForgetMethod.SmartThreadPool) @@ -835,7 +845,22 @@ namespace OpenSim string regionName = (m_sceneManager.CurrentScene == null ? "root" : m_sceneManager.CurrentScene.RegionInfo.RegionName); MainConsole.Instance.Output(String.Format("Currently selected region is {0}", regionName)); - m_console.DefaultPrompt = String.Format("{0} ({1}) ", m_custom_prompt, regionName); + +// m_log.DebugFormat("Original prompt is {0}", m_consolePrompt); + string prompt = m_consolePrompt; + + // Replace "\R" with the region name + // Replace "\\" with "\" + prompt = m_consolePromptRegex.Replace(prompt, m => + { +// m_log.DebugFormat("Matched {0}", m.Groups[2].Value); + if (m.Groups[2].Value == "R") + return m.Groups[1].Value + regionName; + else + return m.Groups[0].Value; + }); + + m_console.DefaultPrompt = prompt; m_console.ConsoleScene = m_sceneManager.CurrentScene; } diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index fc5141f8eb..e662492936 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -1509,7 +1509,8 @@ namespace OpenSim.Region.Framework.Scenes if ((MovementFlag & (byte)(uint)DCF) == 0) { - if (DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE) + if (DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE || + DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT_NUDGE) { MovementFlag |= (byte)nudgehack; } @@ -1522,7 +1523,8 @@ namespace OpenSim.Region.Framework.Scenes else { if ((MovementFlag & (byte)(uint)DCF) != 0 || - ((DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE) + ((DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE || + DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT_NUDGE) && ((MovementFlag & (byte)nudgehack) == nudgehack)) ) // This or is for Nudge forward { diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index c5205dbeae..253b24dbbf 100755 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -36,6 +36,14 @@ [Startup] + ;# {ConsolePrompt} {} {ConsolePrompt} {} "Region (\R) " + ;; Console prompt + ;; Certain special characters can be used to customize the prompt + ;; Currently, these are + ;; \R - substitute region name + ;; \\ - substitute \ + ; ConsolePrompt = "Region (\R) " + ;# {save_crashes} {} {Save crashes to disk?} {true false} false ;; Set this to true if you want to log crashes to disk ;; this can be useful when submitting bug reports. @@ -230,12 +238,6 @@ ;; by scripts have changed. ; DeleteScriptsOnStartup = true - ;; Custom prompt - ;; This value replaces the word "Region" in console prompt - ;; (usualy "Region (regionName) # " - ;; Useful only if you have to monitor serveral servers - ; custom_prompt = "MyServer1" - [SMTP] ;; The SMTP server enabled the email module to send email to external ;; destinations. diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 7ea710e477..2c5fbf5c90 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -3,6 +3,13 @@ [Startup] + ; Console prompt + ; Certain special characters can be used to customize the prompt + ; Currently, these are + ; \R - substitute region name + ; \\ - substtitue \ + ConsolePrompt = "Region (\R) " + ; Set this to true if you want to log crashes to disk ; this can be useful when submitting bug reports. ; However, this will only log crashes within OpenSimulator that cause the entire program to exit