diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 7a25d3f129..961ab9fb04 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -83,6 +83,7 @@ what it is today.
* Gerhard
* Godfrey
* Grumly57
+* GuduleLapointe
* Ewe Loon
* Fly-Man
* Flyte Xevious
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index 60c130f3a5..9fe284f4ca 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -56,6 +56,7 @@ namespace OpenSim
protected bool m_gui = false;
protected string m_consoleType = "local";
protected uint m_consolePort = 0;
+ protected string m_custom_prompt;
private string m_timedScript = "disabled";
private Timer m_scriptTimer;
@@ -85,7 +86,9 @@ namespace OpenSim
if (networkConfig != null)
m_consolePort = (uint)networkConfig.GetInt("console_port", 0);
+
m_timedScript = startupConfig.GetString("timer_Script", "disabled");
+
if (m_logFileAppender != null)
{
if (m_logFileAppender is log4net.Appender.FileAppender)
@@ -108,6 +111,7 @@ namespace OpenSim
Util.FireAndForgetMethod = asyncCallMethod;
stpMaxThreads = startupConfig.GetInt("MaxPoolThreads", 15);
+ m_custom_prompt = startupConfig.GetString("custom_prompt", "Region");
}
if (Util.FireAndForgetMethod == FireAndForgetMethod.SmartThreadPool)
@@ -831,7 +835,7 @@ 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("Region ({0}) ", regionName);
+ m_console.DefaultPrompt = String.Format("{0} ({1}) ", m_custom_prompt, regionName);
m_console.ConsoleScene = m_sceneManager.CurrentScene;
}
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index f6bfc9ba79..3fa6bb086d 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2899,7 +2899,7 @@ namespace OpenSim.Region.Framework.Scenes
}
///
- /// Update the entire rotation of the group.
+ /// Update the rotation of just the root prim of a linkset.
///
///
public void UpdateRootRotation(Quaternion rot)
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 99be46d638..fc5141f8eb 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2013,8 +2013,6 @@ namespace OpenSim.Region.Framework.Scenes
sitOrientation = avSitOrientation;
autopilot = false;
}
- part.ParentGroup.TriggerScriptChangedEvent(Changed.LINK);
-
pos = part.AbsolutePosition + offset;
//if (Math.Abs(part.AbsolutePosition.Z - AbsolutePosition.Z) > 1)
//{
@@ -2060,6 +2058,12 @@ namespace OpenSim.Region.Framework.Scenes
m_sitAtAutoTarget = autopilot;
if (!autopilot)
HandleAgentSit(remoteClient, UUID);
+
+ // Moved here to avoid a race with default sit anim
+ // The script event needs to be raised after the default sit anim is set.
+ if (part != null)
+ part.ParentGroup.TriggerScriptChangedEvent(Changed.LINK);
+
}
// public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset, string sitAnimation)
diff --git a/OpenSim/Tools/pCampBot/Bot.cs b/OpenSim/Tools/pCampBot/Bot.cs
index 1b30766ef0..7f941a497f 100644
--- a/OpenSim/Tools/pCampBot/Bot.cs
+++ b/OpenSim/Tools/pCampBot/Bot.cs
@@ -222,7 +222,7 @@ namespace pCampBot
}
else
{
- MainConsole.Instance.OutputFormat(
+ m_log.ErrorFormat(
"{0} {1} cannot login: {2}", FirstName, LastName, Client.Network.LoginMessage);
if (OnDisconnected != null)
@@ -266,12 +266,12 @@ namespace pCampBot
}
else
{
- MainConsole.Instance.Output(String.Format("Failed to decode {0} asset {1}", asset.AssetType, asset.AssetID));
+ m_log.WarnFormat("Failed to decode {0} asset {1}", asset.AssetType, asset.AssetID);
}
}
catch (Exception e)
{
- MainConsole.Instance.Output(String.Format("Exception: {0}",e.ToString()));
+ m_log.ErrorFormat("Exception: {0}{1}", e.Message, e.StackTrace);
}
}
}
@@ -305,7 +305,7 @@ namespace pCampBot
if (wear == "yes")
{
//TODO: Implement random outfit picking
- MainConsole.Instance.Output("Picks a random outfit. Not yet implemented.");
+ m_log.DebugFormat("Picks a random outfit. Not yet implemented.");
}
else if (wear != "save")
saveDir = "MyAppearance/" + wear;
@@ -334,7 +334,9 @@ namespace pCampBot
listwearables.Add(item);
}
else
- MainConsole.Instance.Output(String.Format("Failed to create item {0}",item.Name));
+ {
+ m_log.WarnFormat("Failed to create item {0}", item.Name);
+ }
}
);
}
@@ -356,7 +358,9 @@ namespace pCampBot
listwearables.Add(item);
}
else
- MainConsole.Instance.Output(String.Format("Failed to create item {0}",item.Name));
+ {
+ m_log.WarnFormat("Failed to create item {0}", item.Name);
+ }
}
);
}
@@ -364,10 +368,12 @@ namespace pCampBot
Thread.Sleep(1000);
if (listwearables == null || listwearables.Count == 0)
- MainConsole.Instance.Output("Nothing to send on this folder!");
+ {
+ m_log.DebugFormat("Nothing to send on this folder!");
+ }
else
{
- MainConsole.Instance.Output(String.Format("Sending {0} wearables...",listwearables.Count));
+ m_log.DebugFormat("Sending {0} wearables...", listwearables.Count);
Client.Appearance.WearOutfit(listwearables, false);
}
}
@@ -447,17 +453,20 @@ namespace pCampBot
for (int i = 0; i < prim.Textures.FaceTextures.Length; i++)
{
- UUID textureID = prim.Textures.FaceTextures[i].TextureID;
+ Primitive.TextureEntryFace face = prim.Textures.FaceTextures[i];
- if (textureID != UUID.Zero)
- GetTexture(textureID);
+ if (face != null)
+ {
+ UUID textureID = prim.Textures.FaceTextures[i].TextureID;
+
+ if (textureID != UUID.Zero)
+ GetTexture(textureID);
+ }
}
}
- if (prim.Sculpt.SculptTexture != UUID.Zero)
- {
+ if (prim.Sculpt != null && prim.Sculpt.SculptTexture != UUID.Zero)
GetTexture(prim.Sculpt.SculptTexture);
- }
}
}
diff --git a/OpenSim/Tools/pCampBot/BotManager.cs b/OpenSim/Tools/pCampBot/BotManager.cs
index 704770a960..f5dd5e0847 100644
--- a/OpenSim/Tools/pCampBot/BotManager.cs
+++ b/OpenSim/Tools/pCampBot/BotManager.cs
@@ -51,7 +51,6 @@ namespace pCampBot
protected CommandConsole m_console;
protected List m_lBot;
protected Random somthing = new Random(Environment.TickCount);
- protected int numbots = 0;
public IConfig Config { get; private set; }
///
@@ -137,7 +136,7 @@ namespace pCampBot
if (behaviourSwitches.Contains("g"))
behaviours.Add(new GrabbingBehaviour());
- startupBot(i, this, behaviours, firstName, lastName, password, loginUri);
+ StartBot(this, behaviours, firstName, lastName, password, loginUri);
}
}
@@ -157,22 +156,21 @@ namespace pCampBot
// int newlen = len + botcount;
// for (int i = len; i < newlen; i++)
// {
-// startupBot(i, Config);
+// startupBot(Config);
// }
// }
///
/// This starts up the bot and stores the thread for the bot in the thread array
///
- /// The position in the thread array to stick the bot's thread
///
/// Behaviours for this bot to perform.
/// First name
/// Last name
/// Password
/// Login URI
- public void startupBot(
- int pos, BotManager bm, List behaviours,
+ public void StartBot(
+ BotManager bm, List behaviours,
string firstName, string lastName, string password, string loginUri)
{
Bot pb = new Bot(bm, behaviours, firstName, lastName, password, loginUri);
@@ -200,16 +198,17 @@ namespace pCampBot
{
case EventType.CONNECTED:
m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Connected");
- numbots++;
-// m_log.InfoFormat("NUMBOTS {0}", numbots);
break;
case EventType.DISCONNECTED:
m_log.Info("[" + callbot.FirstName + " " + callbot.LastName + "]: Disconnected");
- numbots--;
-// m_log.InfoFormat("NUMBOTS {0}", numbots);
- if (numbots <= 0)
- Environment.Exit(0);
- break;
+
+ lock (m_lBot)
+ {
+ if (m_lBot.TrueForAll(b => !b.IsConnected))
+ Environment.Exit(0);
+
+ break;
+ }
}
}
@@ -234,8 +233,11 @@ namespace pCampBot
private void HandleShutdown(string module, string[] cmd)
{
- m_log.Warn("[BOTMANAGER]: Shutting down bots");
- doBotShutdown();
+ Util.FireAndForget(o =>
+ {
+ m_log.Warn("[BOTMANAGER]: Shutting down bots");
+ doBotShutdown();
+ });
}
private void HandleShowStatus(string module, string[] cmd)
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index e71fb05e13..c5205dbeae 100755
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -230,6 +230,11 @@
;; 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