From e742cffe15d3e50841908d7babc2e4c4a7630635 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 30 Sep 2011 01:19:22 +0100
Subject: 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 +-
.../Framework/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 239b884..2620a20 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 af9b62f..fefa242 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 b965d75..8757251 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 03238d9..54b422b 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 a456f4d..245f087 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
--
cgit v1.1