From e742cffe15d3e50841908d7babc2e4c4a7630635 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 30 Sep 2011 01:19:22 +0100 Subject: [PATCH] Add Enabled switch in new [Attachments] section in OpenSimDefaults.ini to allow attachments to be temporarily turned off. This is for debugging purposes. Defaults to Attachments Enabled --- CONTRIBUTORS.txt | 4 +- .../Servers/HttpServer/BaseHttpServer.cs | 2 +- .../Avatar/Attachments/AttachmentsModule.cs | 56 ++++++++++++++++++- .../InventoryAccess/InventoryAccessModule.cs | 1 - bin/OpenSimDefaults.ini | 8 +++ 5 files changed, 65 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 239b884363..2620a20075 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -5,7 +5,7 @@ for your effort!) These folks represent the current core team for OpenSim, and are the people that make the day to day of OpenSim happen. -* justincc +* justincc (OSVW Consulting, justincc.org) * chi11ken (Genkii) * dahlia * Melanie Thielker @@ -15,6 +15,7 @@ people that make the day to day of OpenSim happen. * Mic Bowman (Intel) * BlueWall (James Hughes) * Snoopy Pfeffer +* Richard Adams (Intel) = Core Developers Following the White Rabbit = Core developers who have temporarily (we hope) gone chasing the white rabbit. @@ -119,6 +120,7 @@ what it is today. * openlifegrid.com * Oren Hurvitz (Kitely) * otakup0pe +* Pixel Tomsen * ralphos * RemedyTomm * Revolution diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index af9b62f138..fefa242a18 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -442,7 +442,7 @@ namespace OpenSim.Framework.Servers.HttpServer string path = request.RawUrl; string handlerKey = GetHandlerKey(request.HttpMethod, path); - //m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path); +// m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path); if (TryGetStreamHandler(handlerKey, out requestHandler)) { diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index b965d75443..8757251379 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs @@ -48,25 +48,42 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments private Scene m_scene; private IDialogModule m_dialogModule; + + /// + /// Are attachments enabled? + /// + public bool Enabled { get; private set; } public string Name { get { return "Attachments Module"; } } public Type ReplaceableInterface { get { return null; } } - public void Initialise(IConfigSource source) {} + public void Initialise(IConfigSource source) + { + IConfig config = source.Configs["Attachments"]; + if (config != null) + Enabled = config.GetBoolean("Enabled", true); + else + Enabled = true; + } public void AddRegion(Scene scene) { m_scene = scene; m_dialogModule = m_scene.RequestModuleInterface(); m_scene.RegisterModuleInterface(this); - m_scene.EventManager.OnNewClient += SubscribeToClientEvents; + + if (Enabled) + m_scene.EventManager.OnNewClient += SubscribeToClientEvents; + // TODO: Should probably be subscribing to CloseClient too, but this doesn't yet give us IClientAPI } public void RemoveRegion(Scene scene) { m_scene.UnregisterModuleInterface(this); - m_scene.EventManager.OnNewClient -= SubscribeToClientEvents; + + if (Enabled) + m_scene.EventManager.OnNewClient -= SubscribeToClientEvents; } public void RegionLoaded(Scene scene) {} @@ -102,6 +119,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments /// public void RezAttachments(IScenePresence sp) { + if (!Enabled) + return; + if (null == sp.Appearance) { m_log.WarnFormat("[ATTACHMENTS MODULE]: Appearance has not been initialized for agent {0}", sp.UUID); @@ -145,6 +165,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments { // m_log.DebugFormat("[ATTACHMENTS MODULE]: Saving changed attachments for {0}", sp.Name); + if (!Enabled) + return; + foreach (SceneObjectGroup grp in sp.GetAttachments()) { // if (grp.HasGroupChanged) // Resizer scripts? @@ -163,6 +186,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments // "[ATTACHMENTS MODULE]: Deleting attachments from scene {0} for {1}, silent = {2}", // m_scene.RegionInfo.RegionName, sp.Name, silent); + if (!Enabled) + return; + foreach (SceneObjectGroup sop in sp.GetAttachments()) { sop.Scene.DeleteSceneObject(sop, silent); @@ -184,6 +210,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments // "[ATTACHMENTS MODULE]: Attaching object local id {0} to {1} point {2} from ground (silent = {3})", // objectLocalID, remoteClient.Name, AttachmentPt, silent); + if (!Enabled) + return; + try { ScenePresence sp = m_scene.GetScenePresence(remoteClient.AgentId); @@ -232,6 +261,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments public bool AttachObject(IClientAPI remoteClient, SceneObjectGroup group, uint AttachmentPt, bool silent) { + if (!Enabled) + return false; + ScenePresence sp = m_scene.GetScenePresence(remoteClient.AgentId); if (sp == null) @@ -331,6 +363,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header, RezMultipleAttachmentsFromInvPacket.ObjectDataBlock[] objects) { + if (!Enabled) + return; + ScenePresence sp = m_scene.GetScenePresence(remoteClient.AgentId); if (sp == null) @@ -354,6 +389,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments public ISceneEntity RezSingleAttachmentFromInventory(IClientAPI remoteClient, UUID itemID, uint AttachmentPt) { + if (!Enabled) + return null; + // m_log.DebugFormat( // "[ATTACHMENTS MODULE]: Rezzing attachment to point {0} from item {1} for {2}", // (AttachmentPoint)AttachmentPt, itemID, remoteClient.Name); @@ -373,6 +411,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments public ISceneEntity RezSingleAttachmentFromInventory(ScenePresence sp, UUID itemID, uint AttachmentPt) { + if (!Enabled) + return null; + // m_log.DebugFormat( // "[ATTACHMENTS MODULE]: RezSingleAttachmentFromInventory to point {0} from item {1} for {2}", // (AttachmentPoint)AttachmentPt, itemID, sp.Name); @@ -535,6 +576,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments public void DetachSingleAttachmentToInv(UUID itemID, IClientAPI remoteClient) { + if (!Enabled) + return; + ScenePresence presence; if (m_scene.TryGetScenePresence(remoteClient.AgentId, out presence)) { @@ -554,6 +598,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments public void DetachSingleAttachmentToGround(uint soLocalId, IClientAPI remoteClient) { + if (!Enabled) + return; + // m_log.DebugFormat( // "[ATTACHMENTS MODULE]: DetachSingleAttachmentToGround() for {0}, object {1}", // remoteClient.Name, soLocalId); @@ -669,6 +716,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments public void UpdateAttachmentPosition(SceneObjectGroup sog, Vector3 pos) { + if (!Enabled) + return; + // First we save the // attachment point information, then we update the relative // positioning. Then we have to mark the object as NOT an diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 03238d94c2..54b422b37a 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs @@ -150,7 +150,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess { if (!m_Enabled) return; - } #endregion diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index a456f4d30e..245f087812 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -515,6 +515,7 @@ ; so it is disabled by default. Cap_WebFetchInventoryDescendents = "" + [Chat] ; Controls whether the chat module is enabled. Default is true. enabled = true; @@ -528,6 +529,7 @@ ; Distance in meters that shouts should travel. Default is 100m shout_distance = 100 + [EntityTransfer] ; The maximum distance in regions that an agent is allowed to teleport along the x or y axis ; This is set to 4095 because current viewers can't handle teleports that are greater than this distance @@ -554,6 +556,12 @@ CoalesceMultipleObjectsToInventory = true +[Attachments] + ; Controls whether avatar attachments are enabled. + ; Defaults to true - only set to false for debugging purposes + Enabled = true + + [Mesh] ; enable / disable Collada mesh support ; default is true