aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/OptionalModules/Avatar/Attachments/AttachmentsCommandModule.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/OptionalModules/Avatar/Attachments/AttachmentsCommandModule.cs')
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/Attachments/AttachmentsCommandModule.cs188
1 files changed, 0 insertions, 188 deletions
diff --git a/OpenSim/Region/OptionalModules/Avatar/Attachments/AttachmentsCommandModule.cs b/OpenSim/Region/OptionalModules/Avatar/Attachments/AttachmentsCommandModule.cs
deleted file mode 100644
index 3685041..0000000
--- a/OpenSim/Region/OptionalModules/Avatar/Attachments/AttachmentsCommandModule.cs
+++ /dev/null
@@ -1,188 +0,0 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using System.Linq;
31using System.Reflection;
32using System.Text;
33using log4net;
34using Mono.Addins;
35using Nini.Config;
36using OpenMetaverse;
37using OpenSim.Framework;
38using OpenSim.Framework.Console;
39using OpenSim.Framework.Monitoring;
40using OpenSim.Region.ClientStack.LindenUDP;
41using OpenSim.Region.Framework.Interfaces;
42using OpenSim.Region.Framework.Scenes;
43
44namespace OpenSim.Region.OptionalModules.Avatar.Attachments
45{
46 /// <summary>
47 /// A module that just holds commands for inspecting avatar appearance.
48 /// </summary>
49 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "AttachmentsCommandModule")]
50 public class AttachmentsCommandModule : ISharedRegionModule
51 {
52// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
53
54 private List<Scene> m_scenes = new List<Scene>();
55// private IAvatarFactoryModule m_avatarFactory;
56
57 public string Name { get { return "Attachments Command Module"; } }
58
59 public Type ReplaceableInterface { get { return null; } }
60
61 public void Initialise(IConfigSource source)
62 {
63// m_log.DebugFormat("[ATTACHMENTS COMMAND MODULE]: INITIALIZED MODULE");
64 }
65
66 public void PostInitialise()
67 {
68// m_log.DebugFormat("[ATTACHMENTS COMMAND MODULE]: POST INITIALIZED MODULE");
69 }
70
71 public void Close()
72 {
73// m_log.DebugFormat("[ATTACHMENTS COMMAND MODULE]: CLOSED MODULE");
74 }
75
76 public void AddRegion(Scene scene)
77 {
78// m_log.DebugFormat("[ATTACHMENTS COMMAND MODULE]: REGION {0} ADDED", scene.RegionInfo.RegionName);
79 }
80
81 public void RemoveRegion(Scene scene)
82 {
83// m_log.DebugFormat("[ATTACHMENTS COMMAND MODULE]: REGION {0} REMOVED", scene.RegionInfo.RegionName);
84
85 lock (m_scenes)
86 m_scenes.Remove(scene);
87 }
88
89 public void RegionLoaded(Scene scene)
90 {
91// m_log.DebugFormat("[ATTACHMENTS COMMAND MODULE]: REGION {0} LOADED", scene.RegionInfo.RegionName);
92
93 lock (m_scenes)
94 m_scenes.Add(scene);
95
96 scene.AddCommand(
97 "Users", this, "attachments show",
98 "attachments show [<first-name> <last-name>]",
99 "Show attachment information for avatars in this simulator.",
100 "If no name is supplied then information for all avatars is shown.",
101 HandleShowAttachmentsCommand);
102 }
103
104 protected void HandleShowAttachmentsCommand(string module, string[] cmd)
105 {
106 if (cmd.Length != 2 && cmd.Length < 4)
107 {
108 MainConsole.Instance.OutputFormat("Usage: attachments show [<first-name> <last-name>]");
109 return;
110 }
111
112 bool targetNameSupplied = false;
113 string optionalTargetFirstName = null;
114 string optionalTargetLastName = null;
115
116 if (cmd.Length >= 4)
117 {
118 targetNameSupplied = true;
119 optionalTargetFirstName = cmd[2];
120 optionalTargetLastName = cmd[3];
121 }
122
123 StringBuilder sb = new StringBuilder();
124
125 lock (m_scenes)
126 {
127 foreach (Scene scene in m_scenes)
128 {
129 if (targetNameSupplied)
130 {
131 ScenePresence sp = scene.GetScenePresence(optionalTargetFirstName, optionalTargetLastName);
132 if (sp != null && !sp.IsChildAgent)
133 GetAttachmentsReport(sp, sb);
134 }
135 else
136 {
137 scene.ForEachRootScenePresence(sp => GetAttachmentsReport(sp, sb));
138 }
139 }
140 }
141
142 MainConsole.Instance.Output(sb.ToString());
143 }
144
145 private void GetAttachmentsReport(ScenePresence sp, StringBuilder sb)
146 {
147 sb.AppendFormat("Attachments for {0}\n\n", sp.Name);
148
149 ConsoleDisplayList ct = new ConsoleDisplayList();
150
151// sb.AppendFormat(
152// " {0,-36} {1,-10} {2,-36} {3,-14} {4,-15}\n",
153// "Attachment Name", "Local ID", "Item ID", "Attach Point", "Position");
154
155 List<SceneObjectGroup> attachmentObjects = sp.GetAttachments();
156 foreach (SceneObjectGroup attachmentObject in attachmentObjects)
157 {
158// InventoryItemBase attachmentItem
159// = m_scenes[0].InventoryService.GetItem(new InventoryItemBase(attachmentObject.FromItemID));
160
161// if (attachmentItem == null)
162// {
163// sb.AppendFormat(
164// "WARNING: Couldn't find attachment for item {0} at point {1}\n",
165// attachmentData.ItemID, (AttachmentPoint)attachmentData.AttachPoint);
166// continue;
167// }
168// else
169// {
170// sb.AppendFormat(
171// " {0,-36} {1,-10} {2,-36} {3,-14} {4,-15}\n",
172// attachmentObject.Name, attachmentObject.LocalId, attachmentObject.FromItemID,
173// (AttachmentPoint)attachmentObject.AttachmentPoint, attachmentObject.RootPart.AttachedPos);
174
175 ct.Indent = 2;
176 ct.AddRow("Attachment Name", attachmentObject.Name);
177 ct.AddRow("Local ID", attachmentObject.LocalId);
178 ct.AddRow("Item ID", attachmentObject.UUID);
179 ct.AddRow("From Item ID", attachmentObject.FromItemID);
180 ct.AddRow("Attach Point", ((AttachmentPoint)attachmentObject.AttachmentPoint));
181 ct.AddRow("Position", attachmentObject.RootPart.AttachedPos + "\n\n");
182// }
183 }
184
185 ct.AddToStringBuilder(sb);
186 }
187 }
188} \ No newline at end of file