diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs | 50 |
2 files changed, 52 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs index a77646c..9c53fc4 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs | |||
@@ -496,13 +496,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
496 | string agentFriendService = string.Empty; | 496 | string agentFriendService = string.Empty; |
497 | string friendFriendService = string.Empty; | 497 | string friendFriendService = string.Empty; |
498 | 498 | ||
499 | if (agentIsLocal) | 499 | if (agentClient != null) |
500 | { | 500 | { |
501 | agentClientCircuit = ((Scene)(agentClient.Scene)).AuthenticateHandler.GetAgentCircuitData(agentClient.CircuitCode); | 501 | agentClientCircuit = ((Scene)(agentClient.Scene)).AuthenticateHandler.GetAgentCircuitData(agentClient.CircuitCode); |
502 | agentUUI = Util.ProduceUserUniversalIdentifier(agentClientCircuit); | 502 | agentUUI = Util.ProduceUserUniversalIdentifier(agentClientCircuit); |
503 | agentFriendService = agentClientCircuit.ServiceURLs["FriendsServerURI"].ToString(); | 503 | agentFriendService = agentClientCircuit.ServiceURLs["FriendsServerURI"].ToString(); |
504 | } | 504 | } |
505 | if (friendIsLocal) | 505 | if (friendClient != null) |
506 | { | 506 | { |
507 | friendClientCircuit = ((Scene)(friendClient.Scene)).AuthenticateHandler.GetAgentCircuitData(friendClient.CircuitCode); | 507 | friendClientCircuit = ((Scene)(friendClient.Scene)).AuthenticateHandler.GetAgentCircuitData(friendClient.CircuitCode); |
508 | friendUUI = Util.ProduceUserUniversalIdentifier(friendClientCircuit); | 508 | friendUUI = Util.ProduceUserUniversalIdentifier(friendClientCircuit); |
diff --git a/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs b/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs index 39cd4c9..2369d94 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Linq; | ||
30 | using System.Reflection; | 31 | using System.Reflection; |
31 | using System.Text; | 32 | using System.Text; |
32 | using log4net; | 33 | using log4net; |
@@ -124,6 +125,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance | |||
124 | + "\nIf the viewer has not yet sent the server any texture ids then nothing will happen" | 125 | + "\nIf the viewer has not yet sent the server any texture ids then nothing will happen" |
125 | + "\nsince requests can only be made for ids that the client has already sent us", | 126 | + "\nsince requests can only be made for ids that the client has already sent us", |
126 | HandleRebakeAppearanceCommand); | 127 | HandleRebakeAppearanceCommand); |
128 | |||
129 | scene.AddCommand( | ||
130 | this, "appearance find", | ||
131 | "appearance find <uuid-or-start-of-uuid>", | ||
132 | "Find out which avatar uses the given asset as a baked texture, if any.", | ||
133 | "You can specify just the beginning of the uuid, e.g. 2008a8d. A longer UUID must be in dashed format.", | ||
134 | HandleFindAppearanceCommand); | ||
127 | } | 135 | } |
128 | 136 | ||
129 | private void HandleSendAppearanceCommand(string module, string[] cmd) | 137 | private void HandleSendAppearanceCommand(string module, string[] cmd) |
@@ -254,5 +262,47 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance | |||
254 | } | 262 | } |
255 | } | 263 | } |
256 | } | 264 | } |
265 | |||
266 | protected void HandleFindAppearanceCommand(string module, string[] cmd) | ||
267 | { | ||
268 | if (cmd.Length != 3) | ||
269 | { | ||
270 | MainConsole.Instance.OutputFormat("Usage: appearance find <uuid-or-start-of-uuid>"); | ||
271 | return; | ||
272 | } | ||
273 | |||
274 | string rawUuid = cmd[2]; | ||
275 | |||
276 | HashSet<ScenePresence> matchedAvatars = new HashSet<ScenePresence>(); | ||
277 | |||
278 | lock (m_scenes) | ||
279 | { | ||
280 | foreach (Scene scene in m_scenes.Values) | ||
281 | { | ||
282 | scene.ForEachRootScenePresence( | ||
283 | sp => | ||
284 | { | ||
285 | Dictionary<BakeType, Primitive.TextureEntryFace> bakedFaces = scene.AvatarFactory.GetBakedTextureFaces(sp.UUID); | ||
286 | foreach (Primitive.TextureEntryFace face in bakedFaces.Values) | ||
287 | { | ||
288 | if (face != null && face.TextureID.ToString().StartsWith(rawUuid)) | ||
289 | matchedAvatars.Add(sp); | ||
290 | } | ||
291 | }); | ||
292 | } | ||
293 | } | ||
294 | |||
295 | if (matchedAvatars.Count == 0) | ||
296 | { | ||
297 | MainConsole.Instance.OutputFormat("{0} did not match any baked avatar textures in use", rawUuid); | ||
298 | } | ||
299 | else | ||
300 | { | ||
301 | MainConsole.Instance.OutputFormat( | ||
302 | "{0} matched {1}", | ||
303 | rawUuid, | ||
304 | string.Join(", ", matchedAvatars.ToList().ConvertAll<string>(sp => sp.Name).ToArray())); | ||
305 | } | ||
306 | } | ||
257 | } | 307 | } |
258 | } \ No newline at end of file | 308 | } \ No newline at end of file |