aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs56
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs1
2 files changed, 53 insertions, 4 deletions
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
48 48
49 private Scene m_scene; 49 private Scene m_scene;
50 private IDialogModule m_dialogModule; 50 private IDialogModule m_dialogModule;
51
52 /// <summary>
53 /// Are attachments enabled?
54 /// </summary>
55 public bool Enabled { get; private set; }
51 56
52 public string Name { get { return "Attachments Module"; } } 57 public string Name { get { return "Attachments Module"; } }
53 public Type ReplaceableInterface { get { return null; } } 58 public Type ReplaceableInterface { get { return null; } }
54 59
55 public void Initialise(IConfigSource source) {} 60 public void Initialise(IConfigSource source)
61 {
62 IConfig config = source.Configs["Attachments"];
63 if (config != null)
64 Enabled = config.GetBoolean("Enabled", true);
65 else
66 Enabled = true;
67 }
56 68
57 public void AddRegion(Scene scene) 69 public void AddRegion(Scene scene)
58 { 70 {
59 m_scene = scene; 71 m_scene = scene;
60 m_dialogModule = m_scene.RequestModuleInterface<IDialogModule>(); 72 m_dialogModule = m_scene.RequestModuleInterface<IDialogModule>();
61 m_scene.RegisterModuleInterface<IAttachmentsModule>(this); 73 m_scene.RegisterModuleInterface<IAttachmentsModule>(this);
62 m_scene.EventManager.OnNewClient += SubscribeToClientEvents; 74
75 if (Enabled)
76 m_scene.EventManager.OnNewClient += SubscribeToClientEvents;
77
63 // TODO: Should probably be subscribing to CloseClient too, but this doesn't yet give us IClientAPI 78 // TODO: Should probably be subscribing to CloseClient too, but this doesn't yet give us IClientAPI
64 } 79 }
65 80
66 public void RemoveRegion(Scene scene) 81 public void RemoveRegion(Scene scene)
67 { 82 {
68 m_scene.UnregisterModuleInterface<IAttachmentsModule>(this); 83 m_scene.UnregisterModuleInterface<IAttachmentsModule>(this);
69 m_scene.EventManager.OnNewClient -= SubscribeToClientEvents; 84
85 if (Enabled)
86 m_scene.EventManager.OnNewClient -= SubscribeToClientEvents;
70 } 87 }
71 88
72 public void RegionLoaded(Scene scene) {} 89 public void RegionLoaded(Scene scene) {}
@@ -102,6 +119,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
102 /// </summary> 119 /// </summary>
103 public void RezAttachments(IScenePresence sp) 120 public void RezAttachments(IScenePresence sp)
104 { 121 {
122 if (!Enabled)
123 return;
124
105 if (null == sp.Appearance) 125 if (null == sp.Appearance)
106 { 126 {
107 m_log.WarnFormat("[ATTACHMENTS MODULE]: Appearance has not been initialized for agent {0}", sp.UUID); 127 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
145 { 165 {
146// m_log.DebugFormat("[ATTACHMENTS MODULE]: Saving changed attachments for {0}", sp.Name); 166// m_log.DebugFormat("[ATTACHMENTS MODULE]: Saving changed attachments for {0}", sp.Name);
147 167
168 if (!Enabled)
169 return;
170
148 foreach (SceneObjectGroup grp in sp.GetAttachments()) 171 foreach (SceneObjectGroup grp in sp.GetAttachments())
149 { 172 {
150// if (grp.HasGroupChanged) // Resizer scripts? 173// if (grp.HasGroupChanged) // Resizer scripts?
@@ -163,6 +186,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
163// "[ATTACHMENTS MODULE]: Deleting attachments from scene {0} for {1}, silent = {2}", 186// "[ATTACHMENTS MODULE]: Deleting attachments from scene {0} for {1}, silent = {2}",
164// m_scene.RegionInfo.RegionName, sp.Name, silent); 187// m_scene.RegionInfo.RegionName, sp.Name, silent);
165 188
189 if (!Enabled)
190 return;
191
166 foreach (SceneObjectGroup sop in sp.GetAttachments()) 192 foreach (SceneObjectGroup sop in sp.GetAttachments())
167 { 193 {
168 sop.Scene.DeleteSceneObject(sop, silent); 194 sop.Scene.DeleteSceneObject(sop, silent);
@@ -184,6 +210,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
184// "[ATTACHMENTS MODULE]: Attaching object local id {0} to {1} point {2} from ground (silent = {3})", 210// "[ATTACHMENTS MODULE]: Attaching object local id {0} to {1} point {2} from ground (silent = {3})",
185// objectLocalID, remoteClient.Name, AttachmentPt, silent); 211// objectLocalID, remoteClient.Name, AttachmentPt, silent);
186 212
213 if (!Enabled)
214 return;
215
187 try 216 try
188 { 217 {
189 ScenePresence sp = m_scene.GetScenePresence(remoteClient.AgentId); 218 ScenePresence sp = m_scene.GetScenePresence(remoteClient.AgentId);
@@ -232,6 +261,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
232 261
233 public bool AttachObject(IClientAPI remoteClient, SceneObjectGroup group, uint AttachmentPt, bool silent) 262 public bool AttachObject(IClientAPI remoteClient, SceneObjectGroup group, uint AttachmentPt, bool silent)
234 { 263 {
264 if (!Enabled)
265 return false;
266
235 ScenePresence sp = m_scene.GetScenePresence(remoteClient.AgentId); 267 ScenePresence sp = m_scene.GetScenePresence(remoteClient.AgentId);
236 268
237 if (sp == null) 269 if (sp == null)
@@ -331,6 +363,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
331 RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header, 363 RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header,
332 RezMultipleAttachmentsFromInvPacket.ObjectDataBlock[] objects) 364 RezMultipleAttachmentsFromInvPacket.ObjectDataBlock[] objects)
333 { 365 {
366 if (!Enabled)
367 return;
368
334 ScenePresence sp = m_scene.GetScenePresence(remoteClient.AgentId); 369 ScenePresence sp = m_scene.GetScenePresence(remoteClient.AgentId);
335 370
336 if (sp == null) 371 if (sp == null)
@@ -354,6 +389,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
354 389
355 public ISceneEntity RezSingleAttachmentFromInventory(IClientAPI remoteClient, UUID itemID, uint AttachmentPt) 390 public ISceneEntity RezSingleAttachmentFromInventory(IClientAPI remoteClient, UUID itemID, uint AttachmentPt)
356 { 391 {
392 if (!Enabled)
393 return null;
394
357// m_log.DebugFormat( 395// m_log.DebugFormat(
358// "[ATTACHMENTS MODULE]: Rezzing attachment to point {0} from item {1} for {2}", 396// "[ATTACHMENTS MODULE]: Rezzing attachment to point {0} from item {1} for {2}",
359// (AttachmentPoint)AttachmentPt, itemID, remoteClient.Name); 397// (AttachmentPoint)AttachmentPt, itemID, remoteClient.Name);
@@ -373,6 +411,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
373 411
374 public ISceneEntity RezSingleAttachmentFromInventory(ScenePresence sp, UUID itemID, uint AttachmentPt) 412 public ISceneEntity RezSingleAttachmentFromInventory(ScenePresence sp, UUID itemID, uint AttachmentPt)
375 { 413 {
414 if (!Enabled)
415 return null;
416
376// m_log.DebugFormat( 417// m_log.DebugFormat(
377// "[ATTACHMENTS MODULE]: RezSingleAttachmentFromInventory to point {0} from item {1} for {2}", 418// "[ATTACHMENTS MODULE]: RezSingleAttachmentFromInventory to point {0} from item {1} for {2}",
378// (AttachmentPoint)AttachmentPt, itemID, sp.Name); 419// (AttachmentPoint)AttachmentPt, itemID, sp.Name);
@@ -535,6 +576,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
535 576
536 public void DetachSingleAttachmentToInv(UUID itemID, IClientAPI remoteClient) 577 public void DetachSingleAttachmentToInv(UUID itemID, IClientAPI remoteClient)
537 { 578 {
579 if (!Enabled)
580 return;
581
538 ScenePresence presence; 582 ScenePresence presence;
539 if (m_scene.TryGetScenePresence(remoteClient.AgentId, out presence)) 583 if (m_scene.TryGetScenePresence(remoteClient.AgentId, out presence))
540 { 584 {
@@ -554,6 +598,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
554 598
555 public void DetachSingleAttachmentToGround(uint soLocalId, IClientAPI remoteClient) 599 public void DetachSingleAttachmentToGround(uint soLocalId, IClientAPI remoteClient)
556 { 600 {
601 if (!Enabled)
602 return;
603
557// m_log.DebugFormat( 604// m_log.DebugFormat(
558// "[ATTACHMENTS MODULE]: DetachSingleAttachmentToGround() for {0}, object {1}", 605// "[ATTACHMENTS MODULE]: DetachSingleAttachmentToGround() for {0}, object {1}",
559// remoteClient.Name, soLocalId); 606// remoteClient.Name, soLocalId);
@@ -669,6 +716,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
669 716
670 public void UpdateAttachmentPosition(SceneObjectGroup sog, Vector3 pos) 717 public void UpdateAttachmentPosition(SceneObjectGroup sog, Vector3 pos)
671 { 718 {
719 if (!Enabled)
720 return;
721
672 // First we save the 722 // First we save the
673 // attachment point information, then we update the relative 723 // attachment point information, then we update the relative
674 // positioning. Then we have to mark the object as NOT an 724 // 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
150 { 150 {
151 if (!m_Enabled) 151 if (!m_Enabled)
152 return; 152 return;
153
154 } 153 }
155 154
156 #endregion 155 #endregion