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