diff options
-rw-r--r-- | OpenSim/Region/Application/OpenSim.cs | 17 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/Friends/HGFriendsModule.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 5 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 46 | ||||
-rw-r--r-- | OpenSim/Region/OptionalModules/Avatar/Appearance/AppearanceInfoModule.cs | 50 | ||||
-rwxr-xr-x | bin/OpenSim.ini.example | 6 |
6 files changed, 107 insertions, 21 deletions
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index a1bdfb9..adf653a 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs | |||
@@ -250,6 +250,8 @@ namespace OpenSim | |||
250 | + "If level <= 0 then no extra http logging is done.\n", | 250 | + "If level <= 0 then no extra http logging is done.\n", |
251 | Debug); | 251 | Debug); |
252 | 252 | ||
253 | m_console.Commands.AddCommand("region", false, "debug teleport", "debug teleport", "Toggle teleport route debugging", Debug); | ||
254 | |||
253 | m_console.Commands.AddCommand("region", false, "debug scene", | 255 | m_console.Commands.AddCommand("region", false, "debug scene", |
254 | "debug scene <cripting> <collisions> <physics>", | 256 | "debug scene <cripting> <collisions> <physics>", |
255 | "Turn on scene debugging", Debug); | 257 | "Turn on scene debugging", Debug); |
@@ -948,6 +950,21 @@ namespace OpenSim | |||
948 | 950 | ||
949 | break; | 951 | break; |
950 | 952 | ||
953 | case "teleport": | ||
954 | foreach(Scene s in m_sceneManager.Scenes) | ||
955 | { | ||
956 | if (s.DEBUG) | ||
957 | { | ||
958 | s.DEBUG = false; | ||
959 | MainConsole.Instance.Output("Teleport debugging is disabled!"); | ||
960 | } | ||
961 | else{ | ||
962 | s.DEBUG = true; | ||
963 | MainConsole.Instance.Output("Teleport debugging is enabled!"); | ||
964 | } | ||
965 | } | ||
966 | break; | ||
967 | |||
951 | default: | 968 | default: |
952 | MainConsole.Instance.Output("Unknown debug command"); | 969 | MainConsole.Instance.Output("Unknown debug command"); |
953 | break; | 970 | break; |
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/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 4de494f..fc1e85a 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -65,6 +65,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
65 | #region Fields | 65 | #region Fields |
66 | 66 | ||
67 | public bool EmergencyMonitoring = false; | 67 | public bool EmergencyMonitoring = false; |
68 | public bool DEBUG = false; | ||
68 | 69 | ||
69 | public SynchronizeSceneHandler SynchronizeScene; | 70 | public SynchronizeSceneHandler SynchronizeScene; |
70 | public SimStatsReporter StatsReporter; | 71 | public SimStatsReporter StatsReporter; |
@@ -2652,7 +2653,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2652 | sp = m_sceneGraph.CreateAndAddChildScenePresence(client, aCircuit.Appearance, type); | 2653 | sp = m_sceneGraph.CreateAndAddChildScenePresence(client, aCircuit.Appearance, type); |
2653 | m_eventManager.TriggerOnNewPresence(sp); | 2654 | m_eventManager.TriggerOnNewPresence(sp); |
2654 | 2655 | ||
2655 | sp.TeleportFlags = (TeleportFlags)aCircuit.teleportFlags; | 2656 | sp.TeleportFlags = (TPFlags)aCircuit.teleportFlags; |
2656 | 2657 | ||
2657 | // The first agent upon login is a root agent by design. | 2658 | // The first agent upon login is a root agent by design. |
2658 | // For this agent we will have to rez the attachments. | 2659 | // For this agent we will have to rez the attachments. |
@@ -3478,7 +3479,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3478 | { | 3479 | { |
3479 | // Let the SP know how we got here. This has a lot of interesting | 3480 | // Let the SP know how we got here. This has a lot of interesting |
3480 | // uses down the line. | 3481 | // uses down the line. |
3481 | sp.TeleportFlags = (TeleportFlags)teleportFlags; | 3482 | sp.TeleportFlags = (TPFlags)teleportFlags; |
3482 | 3483 | ||
3483 | if (sp.IsChildAgent) | 3484 | if (sp.IsChildAgent) |
3484 | { | 3485 | { |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 635bca7..9f9536a 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -40,6 +40,7 @@ using OpenSim.Region.Framework.Scenes.Types; | |||
40 | using OpenSim.Region.Physics.Manager; | 40 | using OpenSim.Region.Physics.Manager; |
41 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | 41 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; |
42 | using OpenSim.Services.Interfaces; | 42 | using OpenSim.Services.Interfaces; |
43 | using TeleportFlags = OpenSim.Framework.Constants.TeleportFlags; | ||
43 | 44 | ||
44 | namespace OpenSim.Region.Framework.Scenes | 45 | namespace OpenSim.Region.Framework.Scenes |
45 | { | 46 | { |
@@ -3845,27 +3846,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
3845 | 3846 | ||
3846 | private void CheckAndAdjustLandingPoint(ref Vector3 pos) | 3847 | private void CheckAndAdjustLandingPoint(ref Vector3 pos) |
3847 | { | 3848 | { |
3848 | // // Some temporary debugging help to show all the TeleportFlags we have... | ||
3849 | // bool HG = false; | ||
3850 | // if((m_teleportFlags & (TeleportFlags)Constants.TeleportFlags.ViaHGLogin) == (TeleportFlags)Constants.TeleportFlags.ViaHGLogin) | ||
3851 | // HG = true; | ||
3852 | // | ||
3853 | // m_log.InfoFormat("[SCENE PRESENCE]: TELEPORT ******************"); | ||
3854 | // | ||
3855 | // for (uint i = 0; i <= 30 ; i++) | ||
3856 | // { | ||
3857 | // if((m_teleportFlags & (TeleportFlags)i) == (TeleportFlags)i) | ||
3858 | // if (HG == false) | ||
3859 | // m_log.InfoFormat("[SCENE PRESENCE]: Teleport Flags include {0}", ((TeleportFlags) i).ToString()); | ||
3860 | // else | ||
3861 | // m_log.InfoFormat("[SCENE PRESENCE]: HG Teleport Flags include {0}", ((TeleportFlags)i).ToString()); | ||
3862 | // } | ||
3863 | // | ||
3864 | // m_log.InfoFormat("[SCENE PRESENCE]: TELEPORT ******************"); | ||
3865 | 3849 | ||
3866 | ILandObject land = m_scene.LandChannel.GetLandObject(pos.X, pos.Y); | 3850 | ILandObject land = m_scene.LandChannel.GetLandObject(pos.X, pos.Y); |
3867 | if (land != null) | 3851 | if (land != null) |
3868 | { | 3852 | { |
3853 | if (Scene.DEBUG) | ||
3854 | TeleportFlagsDebug(); | ||
3855 | |||
3869 | // If we come in via login, landmark or map, we want to | 3856 | // If we come in via login, landmark or map, we want to |
3870 | // honor landing points. If we come in via Lure, we want | 3857 | // honor landing points. If we come in via Lure, we want |
3871 | // to ignore them. | 3858 | // to ignore them. |
@@ -4054,5 +4041,30 @@ namespace OpenSim.Region.Framework.Scenes | |||
4054 | } | 4041 | } |
4055 | }); | 4042 | }); |
4056 | } | 4043 | } |
4044 | |||
4045 | private void TeleportFlagsDebug() { | ||
4046 | |||
4047 | // Some temporary debugging help to show all the TeleportFlags we have... | ||
4048 | bool HG = false; | ||
4049 | if((m_teleportFlags & TeleportFlags.ViaHGLogin) == TeleportFlags.ViaHGLogin) | ||
4050 | HG = true; | ||
4051 | |||
4052 | m_log.InfoFormat("[SCENE PRESENCE]: TELEPORT ******************"); | ||
4053 | |||
4054 | uint i = 0u; | ||
4055 | for (int x = 0; x <= 30 ; x++, i = 1u << x) | ||
4056 | { | ||
4057 | i = 1u << x; | ||
4058 | |||
4059 | if((m_teleportFlags & (TeleportFlags)i) == (TeleportFlags)i) | ||
4060 | if (HG == false) | ||
4061 | m_log.InfoFormat("[SCENE PRESENCE]: Teleport Flags include {0}", ((TeleportFlags) i).ToString()); | ||
4062 | else | ||
4063 | m_log.InfoFormat("[SCENE PRESENCE]: HG Teleport Flags include {0}", ((TeleportFlags)i).ToString()); | ||
4064 | } | ||
4065 | |||
4066 | m_log.InfoFormat("[SCENE PRESENCE]: TELEPORT ******************"); | ||
4067 | |||
4068 | } | ||
4057 | } | 4069 | } |
4058 | } | 4070 | } |
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 |
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index d4e61a5..01c64c5 100755 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example | |||
@@ -36,6 +36,12 @@ | |||
36 | 36 | ||
37 | 37 | ||
38 | [Startup] | 38 | [Startup] |
39 | |||
40 | ;# {DEBUG} {} {Turn on debugging methods. Temporary for debugging teleport routing. We can remove it when that is done, or leave it if it would prove to be useful for other things.} {true false} false | ||
41 | ;; Turn on debugging methods where available. | ||
42 | ;; from the selected region_info_source. | ||
43 | ; DEBUG = false | ||
44 | |||
39 | ;# {ConsolePrompt} {} {ConsolePrompt} {} "Region (\R) " | 45 | ;# {ConsolePrompt} {} {ConsolePrompt} {} "Region (\R) " |
40 | ;; Console prompt | 46 | ;; Console prompt |
41 | ;; Certain special characters can be used to customize the prompt | 47 | ;; Certain special characters can be used to customize the prompt |