diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
31 files changed, 948 insertions, 390 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs index f5623bd..14ae287 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
@@ -278,6 +278,10 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
278 | return "FALLDOWN"; | 278 | return "FALLDOWN"; |
279 | } | 279 | } |
280 | 280 | ||
281 | // Check if the user has stopped walking just now | ||
282 | if (CurrentMovementAnimation == "WALK" && (move == Vector3.Zero)) | ||
283 | return "STAND"; | ||
284 | |||
281 | return CurrentMovementAnimation; | 285 | return CurrentMovementAnimation; |
282 | } | 286 | } |
283 | 287 | ||
@@ -402,13 +406,16 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
402 | /// </summary> | 406 | /// </summary> |
403 | public void UpdateMovementAnimations() | 407 | public void UpdateMovementAnimations() |
404 | { | 408 | { |
405 | CurrentMovementAnimation = DetermineMovementAnimation(); | 409 | lock (m_animations) |
410 | { | ||
411 | CurrentMovementAnimation = DetermineMovementAnimation(); | ||
406 | 412 | ||
407 | // m_log.DebugFormat( | 413 | // m_log.DebugFormat( |
408 | // "[SCENE PRESENCE ANIMATOR]: Determined animation {0} for {1} in UpdateMovementAnimations()", | 414 | // "[SCENE PRESENCE ANIMATOR]: Determined animation {0} for {1} in UpdateMovementAnimations()", |
409 | // CurrentMovementAnimation, m_scenePresence.Name); | 415 | // CurrentMovementAnimation, m_scenePresence.Name); |
410 | 416 | ||
411 | TrySetMovementAnimation(CurrentMovementAnimation); | 417 | TrySetMovementAnimation(CurrentMovementAnimation); |
418 | } | ||
412 | } | 419 | } |
413 | 420 | ||
414 | public UUID[] GetAnimationArray() | 421 | public UUID[] GetAnimationArray() |
diff --git a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs index f678d07..834464b 100644 --- a/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs +++ b/OpenSim/Region/Framework/Scenes/AsyncSceneObjectGroupDeleter.cs | |||
@@ -117,7 +117,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
117 | 117 | ||
118 | private void InventoryRunDeleteTimer(object sender, ElapsedEventArgs e) | 118 | private void InventoryRunDeleteTimer(object sender, ElapsedEventArgs e) |
119 | { | 119 | { |
120 | m_log.Debug("[ASYNC DELETER]: Starting send to inventory loop"); | 120 | // m_log.Debug("[ASYNC DELETER]: Starting send to inventory loop"); |
121 | 121 | ||
122 | // We must set appearance parameters in the en_US culture in order to avoid issues where values are saved | 122 | // We must set appearance parameters in the en_US culture in order to avoid issues where values are saved |
123 | // in a culture where decimal points are commas and then reloaded in a culture which just treats them as | 123 | // in a culture where decimal points are commas and then reloaded in a culture which just treats them as |
@@ -147,9 +147,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
147 | { | 147 | { |
148 | x = m_inventoryDeletes.Dequeue(); | 148 | x = m_inventoryDeletes.Dequeue(); |
149 | 149 | ||
150 | m_log.DebugFormat( | 150 | // m_log.DebugFormat( |
151 | "[ASYNC DELETER]: Sending object to user's inventory, action {1}, count {2}, {0} item(s) remaining.", | 151 | // "[ASYNC DELETER]: Sending object to user's inventory, action {1}, count {2}, {0} item(s) remaining.", |
152 | left, x.action, x.objectGroups.Count); | 152 | // left, x.action, x.objectGroups.Count); |
153 | 153 | ||
154 | try | 154 | try |
155 | { | 155 | { |
@@ -185,7 +185,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
185 | e.StackTrace); | 185 | e.StackTrace); |
186 | } | 186 | } |
187 | 187 | ||
188 | m_log.Debug("[ASYNC DELETER]: No objects left in inventory send queue."); | 188 | // m_log.Debug("[ASYNC DELETER]: No objects left in inventory send queue."); |
189 | 189 | ||
190 | return false; | 190 | return false; |
191 | } | 191 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs index 3ef1e29..cf68ff4 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs | |||
@@ -38,8 +38,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
38 | { | 38 | { |
39 | public partial class Scene | 39 | public partial class Scene |
40 | { | 40 | { |
41 | |||
41 | protected void SimChat(byte[] message, ChatTypeEnum type, int channel, Vector3 fromPos, string fromName, | 42 | protected void SimChat(byte[] message, ChatTypeEnum type, int channel, Vector3 fromPos, string fromName, |
42 | UUID fromID, bool fromAgent, bool broadcast) | 43 | UUID fromID, UUID targetID, bool fromAgent, bool broadcast) |
43 | { | 44 | { |
44 | OSChatMessage args = new OSChatMessage(); | 45 | OSChatMessage args = new OSChatMessage(); |
45 | 46 | ||
@@ -63,14 +64,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
63 | } | 64 | } |
64 | 65 | ||
65 | args.From = fromName; | 66 | args.From = fromName; |
66 | //args. | 67 | args.TargetUUID = targetID; |
67 | 68 | ||
68 | if (broadcast) | 69 | if (broadcast) |
69 | EventManager.TriggerOnChatBroadcast(this, args); | 70 | EventManager.TriggerOnChatBroadcast(this, args); |
70 | else | 71 | else |
71 | EventManager.TriggerOnChatFromWorld(this, args); | 72 | EventManager.TriggerOnChatFromWorld(this, args); |
72 | } | 73 | } |
73 | 74 | ||
75 | protected void SimChat(byte[] message, ChatTypeEnum type, int channel, Vector3 fromPos, string fromName, | ||
76 | UUID fromID, bool fromAgent, bool broadcast) | ||
77 | { | ||
78 | SimChat(message, type, channel, fromPos, fromName, fromID, UUID.Zero, fromAgent, broadcast); | ||
79 | } | ||
80 | |||
74 | /// <summary> | 81 | /// <summary> |
75 | /// | 82 | /// |
76 | /// </summary> | 83 | /// </summary> |
@@ -108,6 +115,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
108 | { | 115 | { |
109 | SimChat(message, type, channel, fromPos, fromName, fromID, fromAgent, true); | 116 | SimChat(message, type, channel, fromPos, fromName, fromID, fromAgent, true); |
110 | } | 117 | } |
118 | /// <summary> | ||
119 | /// | ||
120 | /// </summary> | ||
121 | /// <param name="message"></param> | ||
122 | /// <param name="type"></param> | ||
123 | /// <param name="fromPos"></param> | ||
124 | /// <param name="fromName"></param> | ||
125 | /// <param name="fromAgentID"></param> | ||
126 | /// <param name="targetID"></param> | ||
127 | public void SimChatToAgent(UUID targetID, byte[] message, Vector3 fromPos, string fromName, UUID fromID, bool fromAgent) | ||
128 | { | ||
129 | SimChat(message, ChatTypeEnum.Say, 0, fromPos, fromName, fromID, targetID, fromAgent, false); | ||
130 | } | ||
111 | 131 | ||
112 | /// <summary> | 132 | /// <summary> |
113 | /// Invoked when the client requests a prim. | 133 | /// Invoked when the client requests a prim. |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs index e1fedf4..535d87a 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Permissions.cs | |||
@@ -67,6 +67,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
67 | public delegate bool RunConsoleCommandHandler(UUID user, Scene requestFromScene); | 67 | public delegate bool RunConsoleCommandHandler(UUID user, Scene requestFromScene); |
68 | public delegate bool IssueEstateCommandHandler(UUID user, Scene requestFromScene, bool ownerCommand); | 68 | public delegate bool IssueEstateCommandHandler(UUID user, Scene requestFromScene, bool ownerCommand); |
69 | public delegate bool IsGodHandler(UUID user, Scene requestFromScene); | 69 | public delegate bool IsGodHandler(UUID user, Scene requestFromScene); |
70 | public delegate bool IsGridGodHandler(UUID user, Scene requestFromScene); | ||
70 | public delegate bool IsAdministratorHandler(UUID user); | 71 | public delegate bool IsAdministratorHandler(UUID user); |
71 | public delegate bool EditParcelHandler(UUID user, ILandObject parcel, Scene scene); | 72 | public delegate bool EditParcelHandler(UUID user, ILandObject parcel, Scene scene); |
72 | public delegate bool EditParcelPropertiesHandler(UUID user, ILandObject parcel, GroupPowers p, Scene scene); | 73 | public delegate bool EditParcelPropertiesHandler(UUID user, ILandObject parcel, GroupPowers p, Scene scene); |
@@ -134,6 +135,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
134 | public event RunConsoleCommandHandler OnRunConsoleCommand; | 135 | public event RunConsoleCommandHandler OnRunConsoleCommand; |
135 | public event IssueEstateCommandHandler OnIssueEstateCommand; | 136 | public event IssueEstateCommandHandler OnIssueEstateCommand; |
136 | public event IsGodHandler OnIsGod; | 137 | public event IsGodHandler OnIsGod; |
138 | public event IsGridGodHandler OnIsGridGod; | ||
137 | public event IsAdministratorHandler OnIsAdministrator; | 139 | public event IsAdministratorHandler OnIsAdministrator; |
138 | // public event EditParcelHandler OnEditParcel; | 140 | // public event EditParcelHandler OnEditParcel; |
139 | public event EditParcelPropertiesHandler OnEditParcelProperties; | 141 | public event EditParcelPropertiesHandler OnEditParcelProperties; |
@@ -728,6 +730,21 @@ namespace OpenSim.Region.Framework.Scenes | |||
728 | return true; | 730 | return true; |
729 | } | 731 | } |
730 | 732 | ||
733 | public bool IsGridGod(UUID user) | ||
734 | { | ||
735 | IsGridGodHandler handler = OnIsGridGod; | ||
736 | if (handler != null) | ||
737 | { | ||
738 | Delegate[] list = handler.GetInvocationList(); | ||
739 | foreach (IsGridGodHandler h in list) | ||
740 | { | ||
741 | if (h(user, m_scene) == false) | ||
742 | return false; | ||
743 | } | ||
744 | } | ||
745 | return true; | ||
746 | } | ||
747 | |||
731 | public bool IsAdministrator(UUID user) | 748 | public bool IsAdministrator(UUID user) |
732 | { | 749 | { |
733 | IsAdministratorHandler handler = OnIsAdministrator; | 750 | IsAdministratorHandler handler = OnIsAdministrator; |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index a9a4cda..ff2c46f 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -103,6 +103,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
103 | public bool m_trustBinaries; | 103 | public bool m_trustBinaries; |
104 | public bool m_allowScriptCrossings; | 104 | public bool m_allowScriptCrossings; |
105 | public bool m_useFlySlow; | 105 | public bool m_useFlySlow; |
106 | public bool m_useTrashOnDelete = true; | ||
106 | 107 | ||
107 | /// <summary> | 108 | /// <summary> |
108 | /// Temporarily setting to trigger appearance resends at 60 second intervals. | 109 | /// Temporarily setting to trigger appearance resends at 60 second intervals. |
@@ -458,6 +459,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
458 | { | 459 | { |
459 | if (m_simulationService == null) | 460 | if (m_simulationService == null) |
460 | m_simulationService = RequestModuleInterface<ISimulationService>(); | 461 | m_simulationService = RequestModuleInterface<ISimulationService>(); |
462 | |||
461 | return m_simulationService; | 463 | return m_simulationService; |
462 | } | 464 | } |
463 | } | 465 | } |
@@ -735,6 +737,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
735 | m_clampPrimSize = true; | 737 | m_clampPrimSize = true; |
736 | } | 738 | } |
737 | 739 | ||
740 | m_useTrashOnDelete = startupConfig.GetBoolean("UseTrashOnDelete",m_useTrashOnDelete); | ||
738 | m_trustBinaries = startupConfig.GetBoolean("TrustBinaries", m_trustBinaries); | 741 | m_trustBinaries = startupConfig.GetBoolean("TrustBinaries", m_trustBinaries); |
739 | m_allowScriptCrossings = startupConfig.GetBoolean("AllowScriptCrossing", m_allowScriptCrossings); | 742 | m_allowScriptCrossings = startupConfig.GetBoolean("AllowScriptCrossing", m_allowScriptCrossings); |
740 | m_dontPersistBefore = | 743 | m_dontPersistBefore = |
@@ -833,13 +836,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
833 | StatsReporter.OnStatsIncorrect += m_sceneGraph.RecalculateStats; | 836 | StatsReporter.OnStatsIncorrect += m_sceneGraph.RecalculateStats; |
834 | } | 837 | } |
835 | 838 | ||
836 | /// <summary> | ||
837 | /// Mock constructor for scene group persistency unit tests. | ||
838 | /// SceneObjectGroup RegionId property is delegated to Scene. | ||
839 | /// </summary> | ||
840 | /// <param name="regInfo"></param> | ||
841 | public Scene(RegionInfo regInfo) | 839 | public Scene(RegionInfo regInfo) |
842 | { | 840 | { |
841 | PhysicalPrims = true; | ||
842 | CollidablePrims = true; | ||
843 | |||
843 | BordersLocked = true; | 844 | BordersLocked = true; |
844 | Border northBorder = new Border(); | 845 | Border northBorder = new Border(); |
845 | northBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, (int)Constants.RegionSize); //<--- | 846 | northBorder.BorderLine = new Vector3(float.MinValue, float.MaxValue, (int)Constants.RegionSize); //<--- |
@@ -866,8 +867,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
866 | m_eventManager = new EventManager(); | 867 | m_eventManager = new EventManager(); |
867 | 868 | ||
868 | m_permissions = new ScenePermissions(this); | 869 | m_permissions = new ScenePermissions(this); |
869 | |||
870 | // m_lastUpdate = Util.EnvironmentTickCount(); | ||
871 | } | 870 | } |
872 | 871 | ||
873 | #endregion | 872 | #endregion |
@@ -3382,8 +3381,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3382 | try | 3381 | try |
3383 | { | 3382 | { |
3384 | m_log.DebugFormat( | 3383 | m_log.DebugFormat( |
3385 | "[SCENE]: Removing {0} agent {1} from region {2}", | 3384 | "[SCENE]: Removing {0} agent {1} {2} from region {3}", |
3386 | (isChildAgent ? "child" : "root"), agentID, RegionInfo.RegionName); | 3385 | (isChildAgent ? "child" : "root"), avatar.Name, agentID, RegionInfo.RegionName); |
3387 | 3386 | ||
3388 | m_sceneGraph.removeUserCount(!isChildAgent); | 3387 | m_sceneGraph.removeUserCount(!isChildAgent); |
3389 | 3388 | ||
@@ -3981,41 +3980,41 @@ namespace OpenSim.Region.Framework.Scenes | |||
3981 | return m_authenticateHandler.TryChangeCiruitCode(oldcc, newcc); | 3980 | return m_authenticateHandler.TryChangeCiruitCode(oldcc, newcc); |
3982 | } | 3981 | } |
3983 | 3982 | ||
3984 | /// <summary> | 3983 | // /// <summary> |
3985 | /// The Grid has requested that we log-off a user. Log them off. | 3984 | // /// The Grid has requested that we log-off a user. Log them off. |
3986 | /// </summary> | 3985 | // /// </summary> |
3987 | /// <param name="AvatarID">Unique ID of the avatar to log-off</param> | 3986 | // /// <param name="AvatarID">Unique ID of the avatar to log-off</param> |
3988 | /// <param name="RegionSecret">SecureSessionID of the user, or the RegionSecret text when logging on to the grid</param> | 3987 | // /// <param name="RegionSecret">SecureSessionID of the user, or the RegionSecret text when logging on to the grid</param> |
3989 | /// <param name="message">message to display to the user. Reason for being logged off</param> | 3988 | // /// <param name="message">message to display to the user. Reason for being logged off</param> |
3990 | public void HandleLogOffUserFromGrid(UUID AvatarID, UUID RegionSecret, string message) | 3989 | // public void HandleLogOffUserFromGrid(UUID AvatarID, UUID RegionSecret, string message) |
3991 | { | 3990 | // { |
3992 | ScenePresence loggingOffUser = GetScenePresence(AvatarID); | 3991 | // ScenePresence loggingOffUser = GetScenePresence(AvatarID); |
3993 | if (loggingOffUser != null) | 3992 | // if (loggingOffUser != null) |
3994 | { | 3993 | // { |
3995 | UUID localRegionSecret = UUID.Zero; | 3994 | // UUID localRegionSecret = UUID.Zero; |
3996 | bool parsedsecret = UUID.TryParse(m_regInfo.regionSecret, out localRegionSecret); | 3995 | // bool parsedsecret = UUID.TryParse(m_regInfo.regionSecret, out localRegionSecret); |
3997 | 3996 | // | |
3998 | // Region Secret is used here in case a new sessionid overwrites an old one on the user server. | 3997 | // // Region Secret is used here in case a new sessionid overwrites an old one on the user server. |
3999 | // Will update the user server in a few revisions to use it. | 3998 | // // Will update the user server in a few revisions to use it. |
4000 | 3999 | // | |
4001 | if (RegionSecret == loggingOffUser.ControllingClient.SecureSessionId || (parsedsecret && RegionSecret == localRegionSecret)) | 4000 | // if (RegionSecret == loggingOffUser.ControllingClient.SecureSessionId || (parsedsecret && RegionSecret == localRegionSecret)) |
4002 | { | 4001 | // { |
4003 | m_sceneGridService.SendCloseChildAgentConnections(loggingOffUser.UUID, loggingOffUser.KnownRegionHandles); | 4002 | // m_sceneGridService.SendCloseChildAgentConnections(loggingOffUser.UUID, loggingOffUser.KnownRegionHandles); |
4004 | loggingOffUser.ControllingClient.Kick(message); | 4003 | // loggingOffUser.ControllingClient.Kick(message); |
4005 | // Give them a second to receive the message! | 4004 | // // Give them a second to receive the message! |
4006 | Thread.Sleep(1000); | 4005 | // Thread.Sleep(1000); |
4007 | loggingOffUser.ControllingClient.Close(); | 4006 | // loggingOffUser.ControllingClient.Close(); |
4008 | } | 4007 | // } |
4009 | else | 4008 | // else |
4010 | { | 4009 | // { |
4011 | m_log.Info("[USERLOGOFF]: System sending the LogOff user message failed to sucessfully authenticate"); | 4010 | // m_log.Info("[USERLOGOFF]: System sending the LogOff user message failed to sucessfully authenticate"); |
4012 | } | 4011 | // } |
4013 | } | 4012 | // } |
4014 | else | 4013 | // else |
4015 | { | 4014 | // { |
4016 | m_log.InfoFormat("[USERLOGOFF]: Got a logoff request for {0} but the user isn't here. The user might already have been logged out", AvatarID.ToString()); | 4015 | // m_log.InfoFormat("[USERLOGOFF]: Got a logoff request for {0} but the user isn't here. The user might already have been logged out", AvatarID.ToString()); |
4017 | } | 4016 | // } |
4018 | } | 4017 | // } |
4019 | 4018 | ||
4020 | /// <summary> | 4019 | /// <summary> |
4021 | /// Triggered when an agent crosses into this sim. Also happens on initial login. | 4020 | /// Triggered when an agent crosses into this sim. Also happens on initial login. |
@@ -4071,7 +4070,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
4071 | ILandObject nearestParcel = GetNearestAllowedParcel(cAgentData.AgentID, Constants.RegionSize / 2, Constants.RegionSize / 2); | 4070 | ILandObject nearestParcel = GetNearestAllowedParcel(cAgentData.AgentID, Constants.RegionSize / 2, Constants.RegionSize / 2); |
4072 | if (nearestParcel == null) | 4071 | if (nearestParcel == null) |
4073 | { | 4072 | { |
4074 | m_log.DebugFormat("[SCENE]: Denying root agent entry to {0}: no allowed parcel", cAgentData.AgentID); | 4073 | m_log.DebugFormat( |
4074 | "[SCENE]: Denying root agent entry to {0} in {1}: no allowed parcel", | ||
4075 | cAgentData.AgentID, RegionInfo.RegionName); | ||
4076 | |||
4075 | return false; | 4077 | return false; |
4076 | } | 4078 | } |
4077 | 4079 | ||
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index b806d91..77e808e 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs | |||
@@ -156,7 +156,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
156 | // that the region position is cached or performance will degrade | 156 | // that the region position is cached or performance will degrade |
157 | Utils.LongToUInts(regionHandle, out x, out y); | 157 | Utils.LongToUInts(regionHandle, out x, out y); |
158 | GridRegion dest = m_scene.GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y); | 158 | GridRegion dest = m_scene.GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y); |
159 | // bool v = true; | 159 | if (dest == null) |
160 | continue; | ||
161 | |||
160 | if (!simulatorList.Contains(dest.ServerURI)) | 162 | if (!simulatorList.Contains(dest.ServerURI)) |
161 | { | 163 | { |
162 | // we havent seen this simulator before, add it to the list | 164 | // we havent seen this simulator before, add it to the list |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index d4965ea..982913a 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -101,6 +101,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
101 | /// </summary> | 101 | /// </summary> |
102 | protected internal Dictionary<uint, SceneObjectGroup> SceneObjectGroupsByLocalPartID = new Dictionary<uint, SceneObjectGroup>(); | 102 | protected internal Dictionary<uint, SceneObjectGroup> SceneObjectGroupsByLocalPartID = new Dictionary<uint, SceneObjectGroup>(); |
103 | 103 | ||
104 | /// <summary> | ||
105 | /// Lock to prevent object group update, linking and delinking operations from running concurrently. | ||
106 | /// </summary> | ||
104 | private Object m_updateLock = new Object(); | 107 | private Object m_updateLock = new Object(); |
105 | 108 | ||
106 | #endregion | 109 | #endregion |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 8e1f447..42b6bc5 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -2637,6 +2637,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
2637 | /// <summary> | 2637 | /// <summary> |
2638 | /// Link the prims in a given group to this group | 2638 | /// Link the prims in a given group to this group |
2639 | /// </summary> | 2639 | /// </summary> |
2640 | /// <remarks> | ||
2641 | /// Do not call this method directly - use Scene.LinkObjects() instead to avoid races between threads. | ||
2642 | /// FIXME: There are places where scripts call these methods directly without locking. This is a potential race condition. | ||
2643 | /// </remarks> | ||
2640 | /// <param name="objectGroup">The group of prims which should be linked to this group</param> | 2644 | /// <param name="objectGroup">The group of prims which should be linked to this group</param> |
2641 | public void LinkToGroup(SceneObjectGroup objectGroup) | 2645 | public void LinkToGroup(SceneObjectGroup objectGroup) |
2642 | { | 2646 | { |
@@ -2718,6 +2722,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2718 | } | 2722 | } |
2719 | 2723 | ||
2720 | linkPart.LinkNum = linkNum++; | 2724 | linkPart.LinkNum = linkNum++; |
2725 | linkPart.UpdatePrimFlags(UsesPhysics, IsTemporary, IsPhantom, IsVolumeDetect, false); | ||
2721 | 2726 | ||
2722 | SceneObjectPart[] ogParts = objectGroup.Parts; | 2727 | SceneObjectPart[] ogParts = objectGroup.Parts; |
2723 | Array.Sort(ogParts, delegate(SceneObjectPart a, SceneObjectPart b) | 2728 | Array.Sort(ogParts, delegate(SceneObjectPart a, SceneObjectPart b) |
@@ -2769,6 +2774,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
2769 | /// Delink the given prim from this group. The delinked prim is established as | 2774 | /// Delink the given prim from this group. The delinked prim is established as |
2770 | /// an independent SceneObjectGroup. | 2775 | /// an independent SceneObjectGroup. |
2771 | /// </summary> | 2776 | /// </summary> |
2777 | /// <remarks> | ||
2778 | /// FIXME: This method should not be called directly since it bypasses update locking, allowing a potential race | ||
2779 | /// condition. But currently there is no | ||
2780 | /// alternative method that does take a lonk to delink a single prim. | ||
2781 | /// </remarks> | ||
2772 | /// <param name="partID"></param> | 2782 | /// <param name="partID"></param> |
2773 | /// <returns>The object group of the newly delinked prim. Null if part could not be found</returns> | 2783 | /// <returns>The object group of the newly delinked prim. Null if part could not be found</returns> |
2774 | public SceneObjectGroup DelinkFromGroup(uint partID) | 2784 | public SceneObjectGroup DelinkFromGroup(uint partID) |
@@ -2780,6 +2790,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
2780 | /// Delink the given prim from this group. The delinked prim is established as | 2790 | /// Delink the given prim from this group. The delinked prim is established as |
2781 | /// an independent SceneObjectGroup. | 2791 | /// an independent SceneObjectGroup. |
2782 | /// </summary> | 2792 | /// </summary> |
2793 | /// <remarks> | ||
2794 | /// FIXME: This method should not be called directly since it bypasses update locking, allowing a potential race | ||
2795 | /// condition. But currently there is no | ||
2796 | /// alternative method that does take a lonk to delink a single prim. | ||
2797 | /// </remarks> | ||
2783 | /// <param name="partID"></param> | 2798 | /// <param name="partID"></param> |
2784 | /// <param name="sendEvents"></param> | 2799 | /// <param name="sendEvents"></param> |
2785 | /// <returns>The object group of the newly delinked prim. Null if part could not be found</returns> | 2800 | /// <returns>The object group of the newly delinked prim. Null if part could not be found</returns> |
@@ -2805,6 +2820,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
2805 | /// Delink the given prim from this group. The delinked prim is established as | 2820 | /// Delink the given prim from this group. The delinked prim is established as |
2806 | /// an independent SceneObjectGroup. | 2821 | /// an independent SceneObjectGroup. |
2807 | /// </summary> | 2822 | /// </summary> |
2823 | /// <remarks> | ||
2824 | /// FIXME: This method should not be called directly since it bypasses update locking, allowing a potential race | ||
2825 | /// condition. But currently there is no | ||
2826 | /// alternative method that does take a lonk to delink a single prim. | ||
2827 | /// </remarks> | ||
2808 | /// <param name="partID"></param> | 2828 | /// <param name="partID"></param> |
2809 | /// <param name="sendEvents"></param> | 2829 | /// <param name="sendEvents"></param> |
2810 | /// <returns>The object group of the newly delinked prim.</returns> | 2830 | /// <returns>The object group of the newly delinked prim.</returns> |
@@ -2938,6 +2958,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2938 | oldRot = part.RotationOffset; | 2958 | oldRot = part.RotationOffset; |
2939 | Quaternion newRot = Quaternion.Conjugate(parentRot) * worldRot; | 2959 | Quaternion newRot = Quaternion.Conjugate(parentRot) * worldRot; |
2940 | part.RotationOffset = newRot; | 2960 | part.RotationOffset = newRot; |
2961 | |||
2962 | part.UpdatePrimFlags(UsesPhysics, IsTemporary, IsPhantom, IsVolumeDetect, false); | ||
2941 | } | 2963 | } |
2942 | 2964 | ||
2943 | /// <summary> | 2965 | /// <summary> |
@@ -4148,7 +4170,72 @@ namespace OpenSim.Region.Framework.Scenes | |||
4148 | for (int i = 0; i < parts.Length; i++) | 4170 | for (int i = 0; i < parts.Length; i++) |
4149 | parts[i].TriggerScriptChangedEvent(val); | 4171 | parts[i].TriggerScriptChangedEvent(val); |
4150 | } | 4172 | } |
4151 | 4173 | ||
4174 | /// <summary> | ||
4175 | /// Returns a count of the number of scripts in this groups parts. | ||
4176 | /// </summary> | ||
4177 | public int ScriptCount() | ||
4178 | { | ||
4179 | int count = 0; | ||
4180 | SceneObjectPart[] parts = m_parts.GetArray(); | ||
4181 | for (int i = 0; i < parts.Length; i++) | ||
4182 | count += parts[i].Inventory.ScriptCount(); | ||
4183 | |||
4184 | return count; | ||
4185 | } | ||
4186 | |||
4187 | /// <summary> | ||
4188 | /// A float the value is a representative execution time in milliseconds of all scripts in the link set. | ||
4189 | /// </summary> | ||
4190 | public float ScriptExecutionTime() | ||
4191 | { | ||
4192 | IScriptModule[] engines = Scene.RequestModuleInterfaces<IScriptModule>(); | ||
4193 | |||
4194 | if (engines.Length == 0) // No engine at all | ||
4195 | return 0.0f; | ||
4196 | |||
4197 | float time = 0.0f; | ||
4198 | |||
4199 | // get all the scripts in all parts | ||
4200 | SceneObjectPart[] parts = m_parts.GetArray(); | ||
4201 | List<TaskInventoryItem> scripts = new List<TaskInventoryItem>(); | ||
4202 | for (int i = 0; i < parts.Length; i++) | ||
4203 | { | ||
4204 | scripts.AddRange(parts[i].Inventory.GetInventoryItems(InventoryType.LSL)); | ||
4205 | } | ||
4206 | // extract the UUIDs | ||
4207 | List<UUID> ids = new List<UUID>(scripts.Count); | ||
4208 | foreach (TaskInventoryItem script in scripts) | ||
4209 | { | ||
4210 | if (!ids.Contains(script.ItemID)) | ||
4211 | { | ||
4212 | ids.Add(script.ItemID); | ||
4213 | } | ||
4214 | } | ||
4215 | // Offer the list of script UUIDs to each engine found and accumulate the time | ||
4216 | foreach (IScriptModule e in engines) | ||
4217 | { | ||
4218 | if (e != null) | ||
4219 | { | ||
4220 | time += e.GetScriptExecutionTime(ids); | ||
4221 | } | ||
4222 | } | ||
4223 | return time; | ||
4224 | } | ||
4225 | |||
4226 | /// <summary> | ||
4227 | /// Returns a count of the number of running scripts in this groups parts. | ||
4228 | /// </summary> | ||
4229 | public int RunningScriptCount() | ||
4230 | { | ||
4231 | int count = 0; | ||
4232 | SceneObjectPart[] parts = m_parts.GetArray(); | ||
4233 | for (int i = 0; i < parts.Length; i++) | ||
4234 | count += parts[i].Inventory.RunningScriptCount(); | ||
4235 | |||
4236 | return count; | ||
4237 | } | ||
4238 | |||
4152 | public override string ToString() | 4239 | public override string ToString() |
4153 | { | 4240 | { |
4154 | return String.Format("{0} {1} ({2})", Name, UUID, AbsolutePosition); | 4241 | return String.Format("{0} {1} ({2})", Name, UUID, AbsolutePosition); |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index b0bc188..843c426 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -2091,6 +2091,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2091 | /// <param name="isNew"></param> | 2091 | /// <param name="isNew"></param> |
2092 | public void DoPhysicsPropertyUpdate(bool UsePhysics, bool isNew) | 2092 | public void DoPhysicsPropertyUpdate(bool UsePhysics, bool isNew) |
2093 | { | 2093 | { |
2094 | if (ParentGroup.Scene == null) | ||
2095 | return; | ||
2096 | |||
2094 | if (!ParentGroup.Scene.PhysicalPrims && UsePhysics) | 2097 | if (!ParentGroup.Scene.PhysicalPrims && UsePhysics) |
2095 | return; | 2098 | return; |
2096 | 2099 | ||
@@ -4582,7 +4585,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4582 | // For now, we use the NINJA naming scheme for identifying joints. | 4585 | // For now, we use the NINJA naming scheme for identifying joints. |
4583 | // In the future, we can support other joint specification schemes such as a | 4586 | // In the future, we can support other joint specification schemes such as a |
4584 | // custom checkbox in the viewer GUI. | 4587 | // custom checkbox in the viewer GUI. |
4585 | if (ParentGroup.Scene.PhysicsScene.SupportsNINJAJoints) | 4588 | if (ParentGroup.Scene != null && ParentGroup.Scene.PhysicsScene.SupportsNINJAJoints) |
4586 | { | 4589 | { |
4587 | string hingeString = "hingejoint"; | 4590 | string hingeString = "hingejoint"; |
4588 | return (Name.Length >= hingeString.Length && Name.Substring(0, hingeString.Length) == hingeString); | 4591 | return (Name.Length >= hingeString.Length && Name.Substring(0, hingeString.Length) == hingeString); |
@@ -4598,7 +4601,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4598 | // For now, we use the NINJA naming scheme for identifying joints. | 4601 | // For now, we use the NINJA naming scheme for identifying joints. |
4599 | // In the future, we can support other joint specification schemes such as a | 4602 | // In the future, we can support other joint specification schemes such as a |
4600 | // custom checkbox in the viewer GUI. | 4603 | // custom checkbox in the viewer GUI. |
4601 | if (ParentGroup.Scene.PhysicsScene.SupportsNINJAJoints) | 4604 | if (ParentGroup.Scene != null && ParentGroup.Scene.PhysicsScene.SupportsNINJAJoints) |
4602 | { | 4605 | { |
4603 | string ballString = "balljoint"; | 4606 | string ballString = "balljoint"; |
4604 | return (Name.Length >= ballString.Length && Name.Substring(0, ballString.Length) == ballString); | 4607 | return (Name.Length >= ballString.Length && Name.Substring(0, ballString.Length) == ballString); |
@@ -4614,7 +4617,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4614 | // For now, we use the NINJA naming scheme for identifying joints. | 4617 | // For now, we use the NINJA naming scheme for identifying joints. |
4615 | // In the future, we can support other joint specification schemes such as a | 4618 | // In the future, we can support other joint specification schemes such as a |
4616 | // custom checkbox in the viewer GUI. | 4619 | // custom checkbox in the viewer GUI. |
4617 | if (ParentGroup.Scene.PhysicsScene.SupportsNINJAJoints) | 4620 | if (ParentGroup.Scene != null && ParentGroup.Scene.PhysicsScene.SupportsNINJAJoints) |
4618 | { | 4621 | { |
4619 | return IsHingeJoint() || IsBallJoint(); | 4622 | return IsHingeJoint() || IsBallJoint(); |
4620 | } | 4623 | } |
@@ -4733,7 +4736,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
4733 | } | 4736 | } |
4734 | } | 4737 | } |
4735 | } | 4738 | } |
4736 | |||
4737 | else // it already has a physical representation | 4739 | else // it already has a physical representation |
4738 | { | 4740 | { |
4739 | DoPhysicsPropertyUpdate(UsePhysics, false); // Update physical status. | 4741 | DoPhysicsPropertyUpdate(UsePhysics, false); // Update physical status. |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 959046a..a190efe 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | |||
@@ -267,14 +267,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
267 | /// </summary> | 267 | /// </summary> |
268 | public void CreateScriptInstances(int startParam, bool postOnRez, string engine, int stateSource) | 268 | public void CreateScriptInstances(int startParam, bool postOnRez, string engine, int stateSource) |
269 | { | 269 | { |
270 | Items.LockItemsForRead(true); | 270 | List<TaskInventoryItem> scripts = GetInventoryItems(InventoryType.LSL); |
271 | IList<TaskInventoryItem> items = new List<TaskInventoryItem>(Items.Values); | 271 | foreach (TaskInventoryItem item in scripts) |
272 | Items.LockItemsForRead(false); | 272 | CreateScriptInstance(item, startParam, postOnRez, engine, stateSource); |
273 | foreach (TaskInventoryItem item in items) | ||
274 | { | ||
275 | if ((int)InventoryType.LSL == item.InvType) | ||
276 | CreateScriptInstance(item, startParam, postOnRez, engine, stateSource); | ||
277 | } | ||
278 | } | 273 | } |
279 | 274 | ||
280 | public ArrayList GetScriptErrors(UUID itemID) | 275 | public ArrayList GetScriptErrors(UUID itemID) |
@@ -305,17 +300,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
305 | /// </param> | 300 | /// </param> |
306 | public void RemoveScriptInstances(bool sceneObjectBeingDeleted) | 301 | public void RemoveScriptInstances(bool sceneObjectBeingDeleted) |
307 | { | 302 | { |
308 | Items.LockItemsForRead(true); | 303 | List<TaskInventoryItem> scripts = GetInventoryItems(InventoryType.LSL); |
309 | IList<TaskInventoryItem> items = new List<TaskInventoryItem>(Items.Values); | 304 | foreach (TaskInventoryItem item in scripts) |
310 | Items.LockItemsForRead(false); | ||
311 | |||
312 | foreach (TaskInventoryItem item in items) | ||
313 | { | 305 | { |
314 | if ((int)InventoryType.LSL == item.InvType) | 306 | RemoveScriptInstance(item.ItemID, sceneObjectBeingDeleted); |
315 | { | 307 | m_part.RemoveScriptEvents(item.ItemID); |
316 | RemoveScriptInstance(item.ItemID, sceneObjectBeingDeleted); | ||
317 | m_part.RemoveScriptEvents(item.ItemID); | ||
318 | } | ||
319 | } | 308 | } |
320 | } | 309 | } |
321 | 310 | ||
@@ -1281,9 +1270,57 @@ namespace OpenSim.Region.Framework.Scenes | |||
1281 | return true; | 1270 | return true; |
1282 | } | 1271 | } |
1283 | } | 1272 | } |
1273 | |||
1284 | return false; | 1274 | return false; |
1285 | } | 1275 | } |
1286 | 1276 | ||
1277 | /// <summary> | ||
1278 | /// Returns the count of scripts in this parts inventory. | ||
1279 | /// </summary> | ||
1280 | /// <returns></returns> | ||
1281 | public int ScriptCount() | ||
1282 | { | ||
1283 | int count = 0; | ||
1284 | Items.LockItemsForRead(true); | ||
1285 | foreach (TaskInventoryItem item in m_items.Values) | ||
1286 | { | ||
1287 | if (item.InvType == (int)InventoryType.LSL) | ||
1288 | { | ||
1289 | count++; | ||
1290 | } | ||
1291 | } | ||
1292 | Items.LockItemsForRead(false); | ||
1293 | return count; | ||
1294 | } | ||
1295 | /// <summary> | ||
1296 | /// Returns the count of running scripts in this parts inventory. | ||
1297 | /// </summary> | ||
1298 | /// <returns></returns> | ||
1299 | public int RunningScriptCount() | ||
1300 | { | ||
1301 | IScriptModule[] engines = m_part.ParentGroup.Scene.RequestModuleInterfaces<IScriptModule>(); | ||
1302 | if (engines.Length == 0) | ||
1303 | return 0; | ||
1304 | |||
1305 | int count = 0; | ||
1306 | List<TaskInventoryItem> scripts = GetInventoryItems(InventoryType.LSL); | ||
1307 | |||
1308 | foreach (TaskInventoryItem item in scripts) | ||
1309 | { | ||
1310 | foreach (IScriptModule engine in engines) | ||
1311 | { | ||
1312 | if (engine != null) | ||
1313 | { | ||
1314 | if (engine.GetScriptState(item.ItemID)) | ||
1315 | { | ||
1316 | count++; | ||
1317 | } | ||
1318 | } | ||
1319 | } | ||
1320 | } | ||
1321 | return count; | ||
1322 | } | ||
1323 | |||
1287 | public List<UUID> GetInventoryList() | 1324 | public List<UUID> GetInventoryList() |
1288 | { | 1325 | { |
1289 | List<UUID> ret = new List<UUID>(); | 1326 | List<UUID> ret = new List<UUID>(); |
@@ -1298,22 +1335,24 @@ namespace OpenSim.Region.Framework.Scenes | |||
1298 | { | 1335 | { |
1299 | List<TaskInventoryItem> ret = new List<TaskInventoryItem>(); | 1336 | List<TaskInventoryItem> ret = new List<TaskInventoryItem>(); |
1300 | 1337 | ||
1301 | lock (m_items) | 1338 | Items.LockItemsForRead(true); |
1302 | ret = new List<TaskInventoryItem>(m_items.Values); | 1339 | ret = new List<TaskInventoryItem>(m_items.Values); |
1340 | Items.LockItemsForRead(false); | ||
1303 | 1341 | ||
1304 | return ret; | 1342 | return ret; |
1305 | } | 1343 | } |
1306 | 1344 | ||
1307 | public List<TaskInventoryItem> GetInventoryScripts() | 1345 | public List<TaskInventoryItem> GetInventoryItems(InventoryType type) |
1308 | { | 1346 | { |
1309 | List<TaskInventoryItem> ret = new List<TaskInventoryItem>(); | 1347 | List<TaskInventoryItem> ret = new List<TaskInventoryItem>(); |
1310 | 1348 | ||
1311 | lock (m_items) | 1349 | Items.LockItemsForRead(true); |
1312 | { | 1350 | |
1313 | foreach (TaskInventoryItem item in m_items.Values) | 1351 | foreach (TaskInventoryItem item in m_items.Values) |
1314 | if (item.InvType == (int)InventoryType.LSL) | 1352 | if (item.InvType == (int)type) |
1315 | ret.Add(item); | 1353 | ret.Add(item); |
1316 | } | 1354 | |
1355 | Items.LockItemsForRead(false); | ||
1317 | 1356 | ||
1318 | return ret; | 1357 | return ret; |
1319 | } | 1358 | } |
@@ -1335,35 +1374,32 @@ namespace OpenSim.Region.Framework.Scenes | |||
1335 | if (engines.Length == 0) // No engine at all | 1374 | if (engines.Length == 0) // No engine at all |
1336 | return ret; | 1375 | return ret; |
1337 | 1376 | ||
1338 | Items.LockItemsForRead(true); | 1377 | List<TaskInventoryItem> scripts = GetInventoryItems(InventoryType.LSL); |
1339 | foreach (TaskInventoryItem item in m_items.Values) | 1378 | |
1379 | foreach (TaskInventoryItem item in scripts) | ||
1340 | { | 1380 | { |
1341 | if (item.InvType == (int)InventoryType.LSL) | 1381 | foreach (IScriptModule e in engines) |
1342 | { | 1382 | { |
1343 | foreach (IScriptModule e in engines) | 1383 | if (e != null) |
1344 | { | 1384 | { |
1345 | if (e != null) | 1385 | string n = e.GetXMLState(item.ItemID); |
1386 | if (n != String.Empty) | ||
1346 | { | 1387 | { |
1347 | string n = e.GetXMLState(item.ItemID); | 1388 | if (oldIDs) |
1348 | if (n != String.Empty) | 1389 | { |
1390 | if (!ret.ContainsKey(item.OldItemID)) | ||
1391 | ret[item.OldItemID] = n; | ||
1392 | } | ||
1393 | else | ||
1349 | { | 1394 | { |
1350 | if (oldIDs) | 1395 | if (!ret.ContainsKey(item.ItemID)) |
1351 | { | 1396 | ret[item.ItemID] = n; |
1352 | if (!ret.ContainsKey(item.OldItemID)) | ||
1353 | ret[item.OldItemID] = n; | ||
1354 | } | ||
1355 | else | ||
1356 | { | ||
1357 | if (!ret.ContainsKey(item.ItemID)) | ||
1358 | ret[item.ItemID] = n; | ||
1359 | } | ||
1360 | break; | ||
1361 | } | 1397 | } |
1398 | break; | ||
1362 | } | 1399 | } |
1363 | } | 1400 | } |
1364 | } | 1401 | } |
1365 | } | 1402 | } |
1366 | Items.LockItemsForRead(false); | ||
1367 | return ret; | 1403 | return ret; |
1368 | } | 1404 | } |
1369 | 1405 | ||
@@ -1373,27 +1409,21 @@ namespace OpenSim.Region.Framework.Scenes | |||
1373 | if (engines.Length == 0) | 1409 | if (engines.Length == 0) |
1374 | return; | 1410 | return; |
1375 | 1411 | ||
1412 | List<TaskInventoryItem> scripts = GetInventoryItems(InventoryType.LSL); | ||
1376 | 1413 | ||
1377 | Items.LockItemsForRead(true); | 1414 | foreach (TaskInventoryItem item in scripts) |
1378 | |||
1379 | foreach (TaskInventoryItem item in m_items.Values) | ||
1380 | { | 1415 | { |
1381 | if (item.InvType == (int)InventoryType.LSL) | 1416 | foreach (IScriptModule engine in engines) |
1382 | { | 1417 | { |
1383 | foreach (IScriptModule engine in engines) | 1418 | if (engine != null) |
1384 | { | 1419 | { |
1385 | if (engine != null) | 1420 | if (item.OwnerChanged) |
1386 | { | 1421 | engine.PostScriptEvent(item.ItemID, "changed", new Object[] { (int)Changed.OWNER }); |
1387 | if (item.OwnerChanged) | 1422 | item.OwnerChanged = false; |
1388 | engine.PostScriptEvent(item.ItemID, "changed", new Object[] { (int)Changed.OWNER }); | 1423 | engine.ResumeScript(item.ItemID); |
1389 | item.OwnerChanged = false; | ||
1390 | engine.ResumeScript(item.ItemID); | ||
1391 | } | ||
1392 | } | 1424 | } |
1393 | } | 1425 | } |
1394 | } | 1426 | } |
1395 | |||
1396 | Items.LockItemsForRead(false); | ||
1397 | } | 1427 | } |
1398 | } | 1428 | } |
1399 | } | 1429 | } |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 80f21ce..35c920b 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
@@ -45,6 +45,7 @@ using TeleportFlags = OpenSim.Framework.Constants.TeleportFlags; | |||
45 | 45 | ||
46 | namespace OpenSim.Region.Framework.Scenes | 46 | namespace OpenSim.Region.Framework.Scenes |
47 | { | 47 | { |
48 | [Flags] | ||
48 | enum ScriptControlled : uint | 49 | enum ScriptControlled : uint |
49 | { | 50 | { |
50 | CONTROL_ZERO = 0, | 51 | CONTROL_ZERO = 0, |
@@ -1065,19 +1066,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1065 | /// <param name="pos"></param> | 1066 | /// <param name="pos"></param> |
1066 | public void Teleport(Vector3 pos) | 1067 | public void Teleport(Vector3 pos) |
1067 | { | 1068 | { |
1068 | bool isFlying = Flying; | 1069 | TeleportWithMomentum(pos, Vector3.Zero); |
1069 | RemoveFromPhysicalScene(); | ||
1070 | Velocity = Vector3.Zero; | ||
1071 | CheckLandingPoint(ref pos); | ||
1072 | AbsolutePosition = pos; | ||
1073 | AddToPhysicalScene(isFlying); | ||
1074 | |||
1075 | SendTerseUpdateToAllClients(); | ||
1076 | } | ||
1077 | |||
1078 | public void TeleportWithMomentum(Vector3 pos) | ||
1079 | { | ||
1080 | TeleportWithMomentum(pos, null); | ||
1081 | } | 1070 | } |
1082 | 1071 | ||
1083 | public void TeleportWithMomentum(Vector3 pos, Vector3? v) | 1072 | public void TeleportWithMomentum(Vector3 pos, Vector3? v) |
@@ -1264,7 +1253,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1264 | 1253 | ||
1265 | if ((m_callbackURI != null) && !m_callbackURI.Equals("")) | 1254 | if ((m_callbackURI != null) && !m_callbackURI.Equals("")) |
1266 | { | 1255 | { |
1267 | m_log.DebugFormat("[SCENE PRESENCE]: Releasing agent in URI {0}", m_callbackURI); | 1256 | m_log.DebugFormat( |
1257 | "[SCENE PRESENCE]: Releasing {0} {1} with callback to {2}", | ||
1258 | client.Name, client.AgentId, m_callbackURI); | ||
1259 | |||
1268 | Scene.SimulationService.ReleaseAgent(m_originRegionID, UUID, m_callbackURI); | 1260 | Scene.SimulationService.ReleaseAgent(m_originRegionID, UUID, m_callbackURI); |
1269 | m_callbackURI = null; | 1261 | m_callbackURI = null; |
1270 | } | 1262 | } |
@@ -1339,7 +1331,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1339 | { | 1331 | { |
1340 | // m_log.DebugFormat( | 1332 | // m_log.DebugFormat( |
1341 | // "[SCENE PRESENCE]: In {0} received agent update from {1}, flags {2}", | 1333 | // "[SCENE PRESENCE]: In {0} received agent update from {1}, flags {2}", |
1342 | // Scene.RegionInfo.RegionName, remoteClient.Name, agentData.ControlFlags); | 1334 | // Scene.RegionInfo.RegionName, remoteClient.Name, (AgentManager.ControlFlags)agentData.ControlFlags); |
1343 | 1335 | ||
1344 | if (IsChildAgent) | 1336 | if (IsChildAgent) |
1345 | { | 1337 | { |
@@ -1449,14 +1441,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1449 | } | 1441 | } |
1450 | } | 1442 | } |
1451 | 1443 | ||
1452 | lock (scriptedcontrols) | 1444 | uint flagsForScripts = (uint)flags; |
1453 | { | 1445 | flags = RemoveIgnoredControls(flags, IgnoredControls); |
1454 | if (scriptedcontrols.Count > 0) | ||
1455 | { | ||
1456 | SendControlToScripts((uint)flags); | ||
1457 | flags = RemoveIgnoredControls(flags, IgnoredControls); | ||
1458 | } | ||
1459 | } | ||
1460 | 1446 | ||
1461 | if ((flags & AgentManager.ControlFlags.AGENT_CONTROL_SIT_ON_GROUND) != 0) | 1447 | if ((flags & AgentManager.ControlFlags.AGENT_CONTROL_SIT_ON_GROUND) != 0) |
1462 | HandleAgentSitOnGround(); | 1448 | HandleAgentSitOnGround(); |
@@ -1470,6 +1456,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1470 | PhysicsActor actor = PhysicsActor; | 1456 | PhysicsActor actor = PhysicsActor; |
1471 | if (actor == null) | 1457 | if (actor == null) |
1472 | { | 1458 | { |
1459 | SendControlsToScripts(flagsForScripts); | ||
1473 | return; | 1460 | return; |
1474 | } | 1461 | } |
1475 | 1462 | ||
@@ -1549,7 +1536,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1549 | MovementFlag |= (byte)nudgehack; | 1536 | MovementFlag |= (byte)nudgehack; |
1550 | } | 1537 | } |
1551 | 1538 | ||
1552 | // m_log.DebugFormat("[SCENE PRESENCE]: Updating MovementFlag for {0} with {1}", Name, DCF); | 1539 | //m_log.DebugFormat("[SCENE PRESENCE]: Updating MovementFlag for {0} with {1}", Name, DCF); |
1553 | MovementFlag += (byte)(uint)DCF; | 1540 | MovementFlag += (byte)(uint)DCF; |
1554 | update_movementflag = true; | 1541 | update_movementflag = true; |
1555 | } | 1542 | } |
@@ -1562,7 +1549,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1562 | && ((MovementFlag & (byte)nudgehack) == nudgehack)) | 1549 | && ((MovementFlag & (byte)nudgehack) == nudgehack)) |
1563 | ) // This or is for Nudge forward | 1550 | ) // This or is for Nudge forward |
1564 | { | 1551 | { |
1565 | // m_log.DebugFormat("[SCENE PRESENCE]: Updating MovementFlag for {0} with lack of {1}", Name, DCF); | 1552 | //m_log.DebugFormat("[SCENE PRESENCE]: Updating MovementFlag for {0} with lack of {1}", Name, DCF); |
1566 | MovementFlag -= ((byte)(uint)DCF); | 1553 | MovementFlag -= ((byte)(uint)DCF); |
1567 | update_movementflag = true; | 1554 | update_movementflag = true; |
1568 | 1555 | ||
@@ -1643,8 +1630,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1643 | // } | 1630 | // } |
1644 | // } | 1631 | // } |
1645 | 1632 | ||
1646 | // if (update_movementflag && ParentID == 0) | 1633 | if (update_movementflag && ParentID == 0) |
1647 | // Animator.UpdateMovementAnimations(); | 1634 | Animator.UpdateMovementAnimations(); |
1635 | |||
1636 | SendControlsToScripts(flagsForScripts); | ||
1648 | } | 1637 | } |
1649 | 1638 | ||
1650 | m_scene.EventManager.TriggerOnClientMovement(this); | 1639 | m_scene.EventManager.TriggerOnClientMovement(this); |
@@ -3060,8 +3049,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3060 | x = x / Constants.RegionSize; | 3049 | x = x / Constants.RegionSize; |
3061 | y = y / Constants.RegionSize; | 3050 | y = y / Constants.RegionSize; |
3062 | 3051 | ||
3063 | //m_log.Debug("---> x: " + x + "; newx:" + newRegionX + "; Abs:" + (int)Math.Abs((int)(x - newRegionX))); | 3052 | // m_log.Debug("---> x: " + x + "; newx:" + newRegionX + "; Abs:" + (int)Math.Abs((int)(x - newRegionX))); |
3064 | //m_log.Debug("---> y: " + y + "; newy:" + newRegionY + "; Abs:" + (int)Math.Abs((int)(y - newRegionY))); | 3053 | // m_log.Debug("---> y: " + y + "; newy:" + newRegionY + "; Abs:" + (int)Math.Abs((int)(y - newRegionY))); |
3065 | if (Util.IsOutsideView(DrawDistance, x, newRegionX, y, newRegionY)) | 3054 | if (Util.IsOutsideView(DrawDistance, x, newRegionX, y, newRegionY)) |
3066 | { | 3055 | { |
3067 | byebyeRegions.Add(handle); | 3056 | byebyeRegions.Add(handle); |
@@ -3580,6 +3569,63 @@ namespace OpenSim.Region.Framework.Scenes | |||
3580 | return m_attachments.Count > 0; | 3569 | return m_attachments.Count > 0; |
3581 | } | 3570 | } |
3582 | 3571 | ||
3572 | /// <summary> | ||
3573 | /// Returns the total count of scripts in all parts inventories. | ||
3574 | /// </summary> | ||
3575 | public int ScriptCount() | ||
3576 | { | ||
3577 | int count = 0; | ||
3578 | lock (m_attachments) | ||
3579 | { | ||
3580 | foreach (SceneObjectGroup gobj in m_attachments) | ||
3581 | { | ||
3582 | if (gobj != null) | ||
3583 | { | ||
3584 | count += gobj.ScriptCount(); | ||
3585 | } | ||
3586 | } | ||
3587 | } | ||
3588 | return count; | ||
3589 | } | ||
3590 | |||
3591 | /// <summary> | ||
3592 | /// A float the value is a representative execution time in milliseconds of all scripts in all attachments. | ||
3593 | /// </summary> | ||
3594 | public float ScriptExecutionTime() | ||
3595 | { | ||
3596 | float time = 0.0f; | ||
3597 | lock (m_attachments) | ||
3598 | { | ||
3599 | foreach (SceneObjectGroup gobj in m_attachments) | ||
3600 | { | ||
3601 | if (gobj != null) | ||
3602 | { | ||
3603 | time += gobj.ScriptExecutionTime(); | ||
3604 | } | ||
3605 | } | ||
3606 | } | ||
3607 | return time; | ||
3608 | } | ||
3609 | |||
3610 | /// <summary> | ||
3611 | /// Returns the total count of running scripts in all parts. | ||
3612 | /// </summary> | ||
3613 | public int RunningScriptCount() | ||
3614 | { | ||
3615 | int count = 0; | ||
3616 | lock (m_attachments) | ||
3617 | { | ||
3618 | foreach (SceneObjectGroup gobj in m_attachments) | ||
3619 | { | ||
3620 | if (gobj != null) | ||
3621 | { | ||
3622 | count += gobj.RunningScriptCount(); | ||
3623 | } | ||
3624 | } | ||
3625 | } | ||
3626 | return count; | ||
3627 | } | ||
3628 | |||
3583 | public bool HasScriptedAttachments() | 3629 | public bool HasScriptedAttachments() |
3584 | { | 3630 | { |
3585 | lock (m_attachments) | 3631 | lock (m_attachments) |
@@ -3777,77 +3823,92 @@ namespace OpenSim.Region.Framework.Scenes | |||
3777 | } | 3823 | } |
3778 | } | 3824 | } |
3779 | 3825 | ||
3780 | internal void SendControlToScripts(uint flags) | 3826 | private void SendControlsToScripts(uint flags) |
3781 | { | 3827 | { |
3782 | ScriptControlled allflags = ScriptControlled.CONTROL_ZERO; | 3828 | // Notify the scripts only after calling UpdateMovementAnimations(), so that if a script |
3783 | 3829 | // (e.g., a walking script) checks which animation is active it will be the correct animation. | |
3784 | if (MouseDown) | 3830 | lock (scriptedcontrols) |
3785 | { | 3831 | { |
3786 | allflags = LastCommands & (ScriptControlled.CONTROL_ML_LBUTTON | ScriptControlled.CONTROL_LBUTTON); | 3832 | if (scriptedcontrols.Count <= 0) |
3787 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_UP) != 0 || (flags & unchecked((uint)AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_UP)) != 0) | 3833 | return; |
3834 | |||
3835 | ScriptControlled allflags = ScriptControlled.CONTROL_ZERO; | ||
3836 | |||
3837 | if (MouseDown) | ||
3838 | { | ||
3839 | allflags = LastCommands & (ScriptControlled.CONTROL_ML_LBUTTON | ScriptControlled.CONTROL_LBUTTON); | ||
3840 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_UP) != 0 || (flags & unchecked((uint)AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_UP)) != 0) | ||
3841 | { | ||
3842 | allflags = ScriptControlled.CONTROL_ZERO; | ||
3843 | MouseDown = true; | ||
3844 | } | ||
3845 | } | ||
3846 | |||
3847 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_DOWN) != 0) | ||
3788 | { | 3848 | { |
3789 | allflags = ScriptControlled.CONTROL_ZERO; | 3849 | allflags |= ScriptControlled.CONTROL_ML_LBUTTON; |
3790 | MouseDown = true; | 3850 | MouseDown = true; |
3791 | } | 3851 | } |
3792 | } | 3852 | |
3853 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0) | ||
3854 | { | ||
3855 | allflags |= ScriptControlled.CONTROL_LBUTTON; | ||
3856 | MouseDown = true; | ||
3857 | } | ||
3858 | |||
3859 | // find all activated controls, whether the scripts are interested in them or not | ||
3860 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS) != 0) | ||
3861 | { | ||
3862 | allflags |= ScriptControlled.CONTROL_FWD; | ||
3863 | } | ||
3864 | |||
3865 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG) != 0) | ||
3866 | { | ||
3867 | allflags |= ScriptControlled.CONTROL_BACK; | ||
3868 | } | ||
3869 | |||
3870 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_POS) != 0) | ||
3871 | { | ||
3872 | allflags |= ScriptControlled.CONTROL_UP; | ||
3873 | } | ||
3874 | |||
3875 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0) | ||
3876 | { | ||
3877 | allflags |= ScriptControlled.CONTROL_DOWN; | ||
3878 | } | ||
3793 | 3879 | ||
3794 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_DOWN) != 0) | 3880 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS) != 0) |
3795 | { | 3881 | { |
3796 | allflags |= ScriptControlled.CONTROL_ML_LBUTTON; | 3882 | allflags |= ScriptControlled.CONTROL_LEFT; |
3797 | MouseDown = true; | 3883 | } |
3798 | } | 3884 | |
3799 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0) | 3885 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG) != 0) |
3800 | { | 3886 | { |
3801 | allflags |= ScriptControlled.CONTROL_LBUTTON; | 3887 | allflags |= ScriptControlled.CONTROL_RIGHT; |
3802 | MouseDown = true; | 3888 | } |
3803 | } | 3889 | |
3890 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_YAW_NEG) != 0) | ||
3891 | { | ||
3892 | allflags |= ScriptControlled.CONTROL_ROT_RIGHT; | ||
3893 | } | ||
3894 | |||
3895 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_YAW_POS) != 0) | ||
3896 | { | ||
3897 | allflags |= ScriptControlled.CONTROL_ROT_LEFT; | ||
3898 | } | ||
3804 | 3899 | ||
3805 | // find all activated controls, whether the scripts are interested in them or not | 3900 | // optimization; we have to check per script, but if nothing is pressed and nothing changed, we can skip that |
3806 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS) != 0) | 3901 | if (allflags != ScriptControlled.CONTROL_ZERO || allflags != LastCommands) |
3807 | { | ||
3808 | allflags |= ScriptControlled.CONTROL_FWD; | ||
3809 | } | ||
3810 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG) != 0) | ||
3811 | { | ||
3812 | allflags |= ScriptControlled.CONTROL_BACK; | ||
3813 | } | ||
3814 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_POS) != 0) | ||
3815 | { | ||
3816 | allflags |= ScriptControlled.CONTROL_UP; | ||
3817 | } | ||
3818 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0) | ||
3819 | { | ||
3820 | allflags |= ScriptControlled.CONTROL_DOWN; | ||
3821 | } | ||
3822 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS) != 0) | ||
3823 | { | ||
3824 | allflags |= ScriptControlled.CONTROL_LEFT; | ||
3825 | } | ||
3826 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG) != 0) | ||
3827 | { | ||
3828 | allflags |= ScriptControlled.CONTROL_RIGHT; | ||
3829 | } | ||
3830 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_YAW_NEG) != 0) | ||
3831 | { | ||
3832 | allflags |= ScriptControlled.CONTROL_ROT_RIGHT; | ||
3833 | } | ||
3834 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_YAW_POS) != 0) | ||
3835 | { | ||
3836 | allflags |= ScriptControlled.CONTROL_ROT_LEFT; | ||
3837 | } | ||
3838 | // optimization; we have to check per script, but if nothing is pressed and nothing changed, we can skip that | ||
3839 | if (allflags != ScriptControlled.CONTROL_ZERO || allflags != LastCommands) | ||
3840 | { | ||
3841 | lock (scriptedcontrols) | ||
3842 | { | 3902 | { |
3843 | foreach (KeyValuePair<UUID, ScriptControllers> kvp in scriptedcontrols) | 3903 | foreach (KeyValuePair<UUID, ScriptControllers> kvp in scriptedcontrols) |
3844 | { | 3904 | { |
3845 | UUID scriptUUID = kvp.Key; | 3905 | UUID scriptUUID = kvp.Key; |
3846 | ScriptControllers scriptControlData = kvp.Value; | 3906 | ScriptControllers scriptControlData = kvp.Value; |
3847 | 3907 | ||
3848 | ScriptControlled localHeld = allflags & scriptControlData.eventControls; // the flags interesting for us | 3908 | ScriptControlled localHeld = allflags & scriptControlData.eventControls; // the flags interesting for us |
3849 | ScriptControlled localLast = LastCommands & scriptControlData.eventControls; // the activated controls in the last cycle | 3909 | ScriptControlled localLast = LastCommands & scriptControlData.eventControls; // the activated controls in the last cycle |
3850 | ScriptControlled localChange = localHeld ^ localLast; // the changed bits | 3910 | ScriptControlled localChange = localHeld ^ localLast; // the changed bits |
3911 | |||
3851 | if (localHeld != ScriptControlled.CONTROL_ZERO || localChange != ScriptControlled.CONTROL_ZERO) | 3912 | if (localHeld != ScriptControlled.CONTROL_ZERO || localChange != ScriptControlled.CONTROL_ZERO) |
3852 | { | 3913 | { |
3853 | // only send if still pressed or just changed | 3914 | // only send if still pressed or just changed |
@@ -3855,9 +3916,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
3855 | } | 3916 | } |
3856 | } | 3917 | } |
3857 | } | 3918 | } |
3919 | |||
3920 | LastCommands = allflags; | ||
3858 | } | 3921 | } |
3859 | |||
3860 | LastCommands = allflags; | ||
3861 | } | 3922 | } |
3862 | 3923 | ||
3863 | internal static AgentManager.ControlFlags RemoveIgnoredControls(AgentManager.ControlFlags flags, ScriptControlled ignored) | 3924 | internal static AgentManager.ControlFlags RemoveIgnoredControls(AgentManager.ControlFlags flags, ScriptControlled ignored) |
@@ -3937,7 +3998,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3937 | land.LandData.UserLocation != Vector3.Zero && | 3998 | land.LandData.UserLocation != Vector3.Zero && |
3938 | land.LandData.OwnerID != m_uuid && | 3999 | land.LandData.OwnerID != m_uuid && |
3939 | (!m_scene.Permissions.IsGod(m_uuid)) && | 4000 | (!m_scene.Permissions.IsGod(m_uuid)) && |
3940 | (!m_scene.RegionInfo.EstateSettings.IsEstateManager(m_uuid))) | 4001 | (!m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid))) |
3941 | { | 4002 | { |
3942 | float curr = Vector3.Distance(AbsolutePosition, pos); | 4003 | float curr = Vector3.Distance(AbsolutePosition, pos); |
3943 | if (Vector3.Distance(land.LandData.UserLocation, pos) < curr) | 4004 | if (Vector3.Distance(land.LandData.UserLocation, pos) < curr) |
@@ -3957,7 +4018,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3957 | { | 4018 | { |
3958 | if (GodLevel < 200 && | 4019 | if (GodLevel < 200 && |
3959 | ((!m_scene.Permissions.IsGod(m_uuid) && | 4020 | ((!m_scene.Permissions.IsGod(m_uuid) && |
3960 | !m_scene.RegionInfo.EstateSettings.IsEstateManager(m_uuid)) || | 4021 | !m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid)) || |
3961 | (m_teleportFlags & TeleportFlags.ViaLocation) != 0 || | 4022 | (m_teleportFlags & TeleportFlags.ViaLocation) != 0 || |
3962 | (m_teleportFlags & Constants.TeleportFlags.ViaHGLogin) != 0)) | 4023 | (m_teleportFlags & Constants.TeleportFlags.ViaHGLogin) != 0)) |
3963 | { | 4024 | { |
@@ -4031,7 +4092,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4031 | GodLevel < 200 && | 4092 | GodLevel < 200 && |
4032 | ((land.LandData.OwnerID != m_uuid && | 4093 | ((land.LandData.OwnerID != m_uuid && |
4033 | !m_scene.Permissions.IsGod(m_uuid) && | 4094 | !m_scene.Permissions.IsGod(m_uuid) && |
4034 | !m_scene.RegionInfo.EstateSettings.IsEstateManager(m_uuid)) || | 4095 | !m_scene.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_uuid)) || |
4035 | (m_teleportFlags & TeleportFlags.ViaLocation) != 0 || | 4096 | (m_teleportFlags & TeleportFlags.ViaLocation) != 0 || |
4036 | (m_teleportFlags & Constants.TeleportFlags.ViaHGLogin) != 0)) | 4097 | (m_teleportFlags & Constants.TeleportFlags.ViaHGLogin) != 0)) |
4037 | { | 4098 | { |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/BorderTests.cs b/OpenSim/Region/Framework/Scenes/Tests/BorderTests.cs index ab6311b..4a21dc9 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/BorderTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/BorderTests.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.IO; | ||
30 | using System.Text; | 31 | using System.Text; |
31 | using NUnit.Framework; | 32 | using NUnit.Framework; |
32 | using OpenMetaverse; | 33 | using OpenMetaverse; |
@@ -68,11 +69,8 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
68 | Vector3 position = new Vector3(200,200,21); | 69 | Vector3 position = new Vector3(200,200,21); |
69 | 70 | ||
70 | foreach (Border b in testborders) | 71 | foreach (Border b in testborders) |
71 | { | ||
72 | Assert.That(!b.TestCross(position)); | 72 | Assert.That(!b.TestCross(position)); |
73 | 73 | ||
74 | } | ||
75 | |||
76 | position = new Vector3(200,280,21); | 74 | position = new Vector3(200,280,21); |
77 | Assert.That(NorthBorder.TestCross(position)); | 75 | Assert.That(NorthBorder.TestCross(position)); |
78 | 76 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs b/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs index a5d2b23..ea9fc93 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/EntityManagerTests.cs | |||
@@ -45,7 +45,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
45 | { | 45 | { |
46 | static public Random random; | 46 | static public Random random; |
47 | SceneObjectGroup found; | 47 | SceneObjectGroup found; |
48 | Scene scene = SceneHelpers.SetupScene(); | 48 | Scene scene = new SceneHelpers().SetupScene(); |
49 | 49 | ||
50 | [Test] | 50 | [Test] |
51 | public void T010_AddObjects() | 51 | public void T010_AddObjects() |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs index 9a60e50..d23c965 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs | |||
@@ -26,7 +26,9 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.IO; | ||
29 | using System.Reflection; | 30 | using System.Reflection; |
31 | using System.Text; | ||
30 | using NUnit.Framework; | 32 | using NUnit.Framework; |
31 | using OpenMetaverse; | 33 | using OpenMetaverse; |
32 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
@@ -44,7 +46,9 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
44 | public void TestDuplicateObject() | 46 | public void TestDuplicateObject() |
45 | { | 47 | { |
46 | TestHelpers.InMethod(); | 48 | TestHelpers.InMethod(); |
47 | Scene scene = SceneHelpers.SetupScene(); | 49 | // TestHelpers.EnableLogging(); |
50 | |||
51 | Scene scene = new SceneHelpers().SetupScene(); | ||
48 | 52 | ||
49 | UUID ownerId = new UUID("00000000-0000-0000-0000-000000000010"); | 53 | UUID ownerId = new UUID("00000000-0000-0000-0000-000000000010"); |
50 | string part1Name = "part1"; | 54 | string part1Name = "part1"; |
@@ -82,6 +86,8 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
82 | Assert.That(dupePart1.PhysActor, Is.Not.Null); | 86 | Assert.That(dupePart1.PhysActor, Is.Not.Null); |
83 | Assert.That(dupePart2.PhysActor, Is.Not.Null); | 87 | Assert.That(dupePart2.PhysActor, Is.Not.Null); |
84 | */ | 88 | */ |
89 | |||
90 | // TestHelpers.DisableLogging(); | ||
85 | } | 91 | } |
86 | } | 92 | } |
87 | } \ No newline at end of file | 93 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs index 7737d8e..453e077 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs | |||
@@ -88,7 +88,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
88 | { | 88 | { |
89 | TestHelpers.InMethod(); | 89 | TestHelpers.InMethod(); |
90 | 90 | ||
91 | Scene scene = SceneHelpers.SetupScene(); | 91 | Scene scene = new SceneHelpers().SetupScene(); |
92 | int partsToTestCount = 3; | 92 | int partsToTestCount = 3; |
93 | 93 | ||
94 | SceneObjectGroup so | 94 | SceneObjectGroup so |
@@ -118,7 +118,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
118 | { | 118 | { |
119 | TestHelpers.InMethod(); | 119 | TestHelpers.InMethod(); |
120 | 120 | ||
121 | Scene scene = SceneHelpers.SetupScene(); | 121 | Scene scene = new SceneHelpers().SetupScene(); |
122 | 122 | ||
123 | string obj1Name = "Alfred"; | 123 | string obj1Name = "Alfred"; |
124 | string obj2Name = "Betty"; | 124 | string obj2Name = "Betty"; |
@@ -152,7 +152,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
152 | { | 152 | { |
153 | TestHelpers.InMethod(); | 153 | TestHelpers.InMethod(); |
154 | 154 | ||
155 | Scene scene = SceneHelpers.SetupScene(); | 155 | Scene scene = new SceneHelpers().SetupScene(); |
156 | int partsToTestCount = 3; | 156 | int partsToTestCount = 3; |
157 | 157 | ||
158 | SceneObjectGroup so | 158 | SceneObjectGroup so |
@@ -185,7 +185,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
185 | { | 185 | { |
186 | TestHelpers.InMethod(); | 186 | TestHelpers.InMethod(); |
187 | 187 | ||
188 | TestScene scene = SceneHelpers.SetupScene(); | 188 | TestScene scene = new SceneHelpers().SetupScene(); |
189 | SceneObjectPart part = SceneHelpers.AddSceneObject(scene); | 189 | SceneObjectPart part = SceneHelpers.AddSceneObject(scene); |
190 | scene.DeleteSceneObject(part.ParentGroup, false); | 190 | scene.DeleteSceneObject(part.ParentGroup, false); |
191 | 191 | ||
@@ -204,7 +204,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
204 | 204 | ||
205 | UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000001"); | 205 | UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000001"); |
206 | 206 | ||
207 | TestScene scene = SceneHelpers.SetupScene(); | 207 | TestScene scene = new SceneHelpers().SetupScene(); |
208 | 208 | ||
209 | // Turn off the timer on the async sog deleter - we'll crank it by hand for this test. | 209 | // Turn off the timer on the async sog deleter - we'll crank it by hand for this test. |
210 | AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter; | 210 | AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter; |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs index 654b1a2..0076f41 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs | |||
@@ -61,7 +61,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
61 | 61 | ||
62 | UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001"); | 62 | UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001"); |
63 | 63 | ||
64 | TestScene scene = SceneHelpers.SetupScene(); | 64 | TestScene scene = new SceneHelpers().SetupScene(); |
65 | IConfigSource configSource = new IniConfigSource(); | 65 | IConfigSource configSource = new IniConfigSource(); |
66 | IConfig config = configSource.AddConfig("Startup"); | 66 | IConfig config = configSource.AddConfig("Startup"); |
67 | config.Set("serverside_object_permissions", true); | 67 | config.Set("serverside_object_permissions", true); |
@@ -100,7 +100,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
100 | UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001"); | 100 | UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001"); |
101 | UUID objectOwnerId = UUID.Parse("20000000-0000-0000-0000-000000000001"); | 101 | UUID objectOwnerId = UUID.Parse("20000000-0000-0000-0000-000000000001"); |
102 | 102 | ||
103 | TestScene scene = SceneHelpers.SetupScene(); | 103 | TestScene scene = new SceneHelpers().SetupScene(); |
104 | IConfigSource configSource = new IniConfigSource(); | 104 | IConfigSource configSource = new IniConfigSource(); |
105 | IConfig config = configSource.AddConfig("Startup"); | 105 | IConfig config = configSource.AddConfig("Startup"); |
106 | config.Set("serverside_object_permissions", true); | 106 | config.Set("serverside_object_permissions", true); |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs index be5b4a8..1add3dd 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectLinkingTests.cs | |||
@@ -55,7 +55,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
55 | UUID ownerId = TestHelpers.ParseTail(0x1); | 55 | UUID ownerId = TestHelpers.ParseTail(0x1); |
56 | int nParts = 3; | 56 | int nParts = 3; |
57 | 57 | ||
58 | TestScene scene = SceneHelpers.SetupScene(); | 58 | TestScene scene = new SceneHelpers().SetupScene(); |
59 | SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(nParts, ownerId, "TestLinkToSelf_", 0x10); | 59 | SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(nParts, ownerId, "TestLinkToSelf_", 0x10); |
60 | scene.AddSceneObject(sog1); | 60 | scene.AddSceneObject(sog1); |
61 | scene.LinkObjects(ownerId, sog1.LocalId, new List<uint>() { sog1.Parts[1].LocalId }); | 61 | scene.LinkObjects(ownerId, sog1.LocalId, new List<uint>() { sog1.Parts[1].LocalId }); |
@@ -71,7 +71,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
71 | 71 | ||
72 | bool debugtest = false; | 72 | bool debugtest = false; |
73 | 73 | ||
74 | Scene scene = SceneHelpers.SetupScene(); | 74 | Scene scene = new SceneHelpers().SetupScene(); |
75 | SceneObjectPart part1 = SceneHelpers.AddSceneObject(scene); | 75 | SceneObjectPart part1 = SceneHelpers.AddSceneObject(scene); |
76 | SceneObjectGroup grp1 = part1.ParentGroup; | 76 | SceneObjectGroup grp1 = part1.ParentGroup; |
77 | SceneObjectPart part2 = SceneHelpers.AddSceneObject(scene); | 77 | SceneObjectPart part2 = SceneHelpers.AddSceneObject(scene); |
@@ -153,7 +153,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
153 | 153 | ||
154 | bool debugtest = false; | 154 | bool debugtest = false; |
155 | 155 | ||
156 | Scene scene = SceneHelpers.SetupScene(); | 156 | Scene scene = new SceneHelpers().SetupScene(); |
157 | SceneObjectPart part1 = SceneHelpers.AddSceneObject(scene); | 157 | SceneObjectPart part1 = SceneHelpers.AddSceneObject(scene); |
158 | SceneObjectGroup grp1 = part1.ParentGroup; | 158 | SceneObjectGroup grp1 = part1.ParentGroup; |
159 | SceneObjectPart part2 = SceneHelpers.AddSceneObject(scene); | 159 | SceneObjectPart part2 = SceneHelpers.AddSceneObject(scene); |
@@ -286,7 +286,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
286 | TestHelpers.InMethod(); | 286 | TestHelpers.InMethod(); |
287 | //log4net.Config.XmlConfigurator.Configure(); | 287 | //log4net.Config.XmlConfigurator.Configure(); |
288 | 288 | ||
289 | TestScene scene = SceneHelpers.SetupScene(); | 289 | TestScene scene = new SceneHelpers().SetupScene(); |
290 | 290 | ||
291 | string rootPartName = "rootpart"; | 291 | string rootPartName = "rootpart"; |
292 | UUID rootPartUuid = new UUID("00000000-0000-0000-0000-000000000001"); | 292 | UUID rootPartUuid = new UUID("00000000-0000-0000-0000-000000000001"); |
@@ -325,7 +325,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
325 | TestHelpers.InMethod(); | 325 | TestHelpers.InMethod(); |
326 | //log4net.Config.XmlConfigurator.Configure(); | 326 | //log4net.Config.XmlConfigurator.Configure(); |
327 | 327 | ||
328 | TestScene scene = SceneHelpers.SetupScene(); | 328 | TestScene scene = new SceneHelpers().SetupScene(); |
329 | 329 | ||
330 | string rootPartName = "rootpart"; | 330 | string rootPartName = "rootpart"; |
331 | UUID rootPartUuid = new UUID("00000000-0000-0000-0000-000000000001"); | 331 | UUID rootPartUuid = new UUID("00000000-0000-0000-0000-000000000001"); |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectResizeTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectResizeTests.cs index b49c6e7..0a94c19 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectResizeTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectResizeTests.cs | |||
@@ -52,7 +52,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
52 | TestHelpers.InMethod(); | 52 | TestHelpers.InMethod(); |
53 | // log4net.Config.XmlConfigurator.Configure(); | 53 | // log4net.Config.XmlConfigurator.Configure(); |
54 | 54 | ||
55 | Scene scene = SceneHelpers.SetupScene(); | 55 | Scene scene = new SceneHelpers().SetupScene(); |
56 | SceneObjectGroup g1 = SceneHelpers.AddSceneObject(scene).ParentGroup; | 56 | SceneObjectGroup g1 = SceneHelpers.AddSceneObject(scene).ParentGroup; |
57 | 57 | ||
58 | g1.GroupResize(new Vector3(2, 3, 4)); | 58 | g1.GroupResize(new Vector3(2, 3, 4)); |
@@ -75,7 +75,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
75 | TestHelpers.InMethod(); | 75 | TestHelpers.InMethod(); |
76 | //log4net.Config.XmlConfigurator.Configure(); | 76 | //log4net.Config.XmlConfigurator.Configure(); |
77 | 77 | ||
78 | Scene scene = SceneHelpers.SetupScene(); | 78 | Scene scene = new SceneHelpers().SetupScene(); |
79 | 79 | ||
80 | SceneObjectGroup g1 = SceneHelpers.CreateSceneObject(2, UUID.Zero); | 80 | SceneObjectGroup g1 = SceneHelpers.CreateSceneObject(2, UUID.Zero); |
81 | g1.RootPart.Scale = new Vector3(2, 3, 4); | 81 | g1.RootPart.Scale = new Vector3(2, 3, 4); |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs index c582cf6..d2361f8 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs | |||
@@ -52,7 +52,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
52 | // UUID itemId = TestHelpers.ParseTail(0x2); | 52 | // UUID itemId = TestHelpers.ParseTail(0x2); |
53 | string itemName = "Test Script Item"; | 53 | string itemName = "Test Script Item"; |
54 | 54 | ||
55 | Scene scene = SceneHelpers.SetupScene(); | 55 | Scene scene = new SceneHelpers().SetupScene(); |
56 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId); | 56 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId); |
57 | scene.AddNewSceneObject(so, true); | 57 | scene.AddNewSceneObject(so, true); |
58 | 58 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectSpatialTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectSpatialTests.cs new file mode 100644 index 0000000..6d255aa --- /dev/null +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectSpatialTests.cs | |||
@@ -0,0 +1,154 @@ | |||
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 | |||
28 | using System; | ||
29 | using System.Reflection; | ||
30 | using System.Threading; | ||
31 | using NUnit.Framework; | ||
32 | using OpenMetaverse; | ||
33 | using OpenSim.Framework; | ||
34 | using OpenSim.Framework.Communications; | ||
35 | using OpenSim.Region.Framework.Scenes; | ||
36 | using OpenSim.Tests.Common; | ||
37 | using OpenSim.Tests.Common.Mock; | ||
38 | |||
39 | namespace OpenSim.Region.Framework.Scenes.Tests | ||
40 | { | ||
41 | /// <summary> | ||
42 | /// Spatial scene object tests (will eventually cover root and child part position, rotation properties, etc.) | ||
43 | /// </summary> | ||
44 | [TestFixture] | ||
45 | public class SceneObjectSpatialTests | ||
46 | { | ||
47 | TestScene m_scene; | ||
48 | UUID m_ownerId = TestHelpers.ParseTail(0x1); | ||
49 | |||
50 | [SetUp] | ||
51 | public void SetUp() | ||
52 | { | ||
53 | m_scene = new SceneHelpers().SetupScene(); | ||
54 | } | ||
55 | |||
56 | [Test] | ||
57 | public void TestGetSceneObjectGroupPosition() | ||
58 | { | ||
59 | TestHelpers.InMethod(); | ||
60 | |||
61 | Vector3 position = new Vector3(10, 20, 30); | ||
62 | |||
63 | SceneObjectGroup so | ||
64 | = SceneHelpers.CreateSceneObject(1, m_ownerId, "obj1", 0x10); | ||
65 | so.AbsolutePosition = position; | ||
66 | m_scene.AddNewSceneObject(so, false); | ||
67 | |||
68 | Assert.That(so.AbsolutePosition, Is.EqualTo(position)); | ||
69 | } | ||
70 | |||
71 | [Test] | ||
72 | public void TestGetRootPartPosition() | ||
73 | { | ||
74 | TestHelpers.InMethod(); | ||
75 | |||
76 | Vector3 partPosition = new Vector3(10, 20, 30); | ||
77 | |||
78 | SceneObjectGroup so | ||
79 | = SceneHelpers.CreateSceneObject(1, m_ownerId, "obj1", 0x10); | ||
80 | so.AbsolutePosition = partPosition; | ||
81 | m_scene.AddNewSceneObject(so, false); | ||
82 | |||
83 | Assert.That(so.RootPart.AbsolutePosition, Is.EqualTo(partPosition)); | ||
84 | Assert.That(so.RootPart.GroupPosition, Is.EqualTo(partPosition)); | ||
85 | Assert.That(so.RootPart.GetWorldPosition(), Is.EqualTo(partPosition)); | ||
86 | Assert.That(so.RootPart.RelativePosition, Is.EqualTo(partPosition)); | ||
87 | Assert.That(so.RootPart.OffsetPosition, Is.EqualTo(Vector3.Zero)); | ||
88 | } | ||
89 | |||
90 | [Test] | ||
91 | public void TestGetChildPartPosition() | ||
92 | { | ||
93 | TestHelpers.InMethod(); | ||
94 | |||
95 | Vector3 rootPartPosition = new Vector3(10, 20, 30); | ||
96 | Vector3 childOffsetPosition = new Vector3(2, 3, 4); | ||
97 | |||
98 | SceneObjectGroup so | ||
99 | = SceneHelpers.CreateSceneObject(2, m_ownerId, "obj1", 0x10); | ||
100 | so.AbsolutePosition = rootPartPosition; | ||
101 | so.Parts[1].OffsetPosition = childOffsetPosition; | ||
102 | |||
103 | m_scene.AddNewSceneObject(so, false); | ||
104 | |||
105 | // Calculate child absolute position. | ||
106 | Vector3 childPosition = new Vector3(rootPartPosition + childOffsetPosition); | ||
107 | |||
108 | SceneObjectPart childPart = so.Parts[1]; | ||
109 | Assert.That(childPart.AbsolutePosition, Is.EqualTo(childPosition)); | ||
110 | Assert.That(childPart.GroupPosition, Is.EqualTo(rootPartPosition)); | ||
111 | Assert.That(childPart.GetWorldPosition(), Is.EqualTo(childPosition)); | ||
112 | Assert.That(childPart.RelativePosition, Is.EqualTo(childOffsetPosition)); | ||
113 | Assert.That(childPart.OffsetPosition, Is.EqualTo(childOffsetPosition)); | ||
114 | } | ||
115 | |||
116 | [Test] | ||
117 | public void TestGetChildPartPositionAfterObjectRotation() | ||
118 | { | ||
119 | TestHelpers.InMethod(); | ||
120 | |||
121 | Vector3 rootPartPosition = new Vector3(10, 20, 30); | ||
122 | Vector3 childOffsetPosition = new Vector3(2, 3, 4); | ||
123 | |||
124 | SceneObjectGroup so | ||
125 | = SceneHelpers.CreateSceneObject(2, m_ownerId, "obj1", 0x10); | ||
126 | so.AbsolutePosition = rootPartPosition; | ||
127 | so.Parts[1].OffsetPosition = childOffsetPosition; | ||
128 | |||
129 | m_scene.AddNewSceneObject(so, false); | ||
130 | |||
131 | so.UpdateGroupRotationR(Quaternion.CreateFromEulers(0, 0, -90 * Utils.DEG_TO_RAD)); | ||
132 | |||
133 | // Calculate child absolute position. | ||
134 | Vector3 rotatedChildOffsetPosition | ||
135 | = new Vector3(childOffsetPosition.Y, -childOffsetPosition.X, childOffsetPosition.Z); | ||
136 | |||
137 | Vector3 childPosition = new Vector3(rootPartPosition + rotatedChildOffsetPosition); | ||
138 | |||
139 | SceneObjectPart childPart = so.Parts[1]; | ||
140 | |||
141 | // FIXME: Should be childPosition after rotation? | ||
142 | Assert.That(childPart.AbsolutePosition, Is.EqualTo(rootPartPosition + childOffsetPosition)); | ||
143 | |||
144 | Assert.That(childPart.GroupPosition, Is.EqualTo(rootPartPosition)); | ||
145 | Assert.That(childPart.GetWorldPosition(), Is.EqualTo(childPosition)); | ||
146 | |||
147 | // Relative to root part as (0, 0, 0) | ||
148 | Assert.That(childPart.RelativePosition, Is.EqualTo(childOffsetPosition)); | ||
149 | |||
150 | // Relative to root part as (0, 0, 0) | ||
151 | Assert.That(childPart.OffsetPosition, Is.EqualTo(childOffsetPosition)); | ||
152 | } | ||
153 | } | ||
154 | } \ No newline at end of file | ||
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectStatusTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectStatusTests.cs index 2a342d5..742c769 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectStatusTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectStatusTests.cs | |||
@@ -26,6 +26,7 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | ||
29 | using System.Reflection; | 30 | using System.Reflection; |
30 | using NUnit.Framework; | 31 | using NUnit.Framework; |
31 | using OpenMetaverse; | 32 | using OpenMetaverse; |
@@ -43,24 +44,141 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
43 | [TestFixture] | 44 | [TestFixture] |
44 | public class SceneObjectStatusTests | 45 | public class SceneObjectStatusTests |
45 | { | 46 | { |
47 | private TestScene m_scene; | ||
48 | private UUID m_ownerId = TestHelpers.ParseTail(0x1); | ||
49 | private SceneObjectGroup m_so1; | ||
50 | private SceneObjectGroup m_so2; | ||
51 | |||
52 | [SetUp] | ||
53 | public void Init() | ||
54 | { | ||
55 | m_scene = new SceneHelpers().SetupScene(); | ||
56 | m_so1 = SceneHelpers.CreateSceneObject(1, m_ownerId, "so1", 0x10); | ||
57 | m_so2 = SceneHelpers.CreateSceneObject(1, m_ownerId, "so2", 0x20); | ||
58 | } | ||
59 | |||
46 | [Test] | 60 | [Test] |
47 | public void TestSetPhantom() | 61 | public void TestSetPhantomSinglePrim() |
48 | { | 62 | { |
49 | TestHelpers.InMethod(); | 63 | TestHelpers.InMethod(); |
50 | 64 | ||
51 | // Scene scene = SceneSetupHelpers.SetupScene(); | 65 | m_scene.AddSceneObject(m_so1); |
52 | SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, UUID.Zero); | 66 | |
53 | SceneObjectPart rootPart = so.RootPart; | 67 | SceneObjectPart rootPart = m_so1.RootPart; |
54 | Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None)); | 68 | Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None)); |
55 | 69 | ||
56 | so.ScriptSetPhantomStatus(true); | 70 | m_so1.ScriptSetPhantomStatus(true); |
57 | 71 | ||
58 | // Console.WriteLine("so.RootPart.Flags [{0}]", so.RootPart.Flags); | 72 | // Console.WriteLine("so.RootPart.Flags [{0}]", so.RootPart.Flags); |
59 | Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.Phantom)); | 73 | Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.Phantom)); |
60 | 74 | ||
61 | so.ScriptSetPhantomStatus(false); | 75 | m_so1.ScriptSetPhantomStatus(false); |
62 | 76 | ||
63 | Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None)); | 77 | Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None)); |
64 | } | 78 | } |
79 | |||
80 | [Test] | ||
81 | public void TestSetPhysicsSinglePrim() | ||
82 | { | ||
83 | TestHelpers.InMethod(); | ||
84 | |||
85 | m_scene.AddSceneObject(m_so1); | ||
86 | |||
87 | SceneObjectPart rootPart = m_so1.RootPart; | ||
88 | Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None)); | ||
89 | |||
90 | m_so1.ScriptSetPhysicsStatus(true); | ||
91 | |||
92 | // Console.WriteLine("so.RootPart.Flags [{0}]", so.RootPart.Flags); | ||
93 | Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.Physics)); | ||
94 | |||
95 | m_so1.ScriptSetPhysicsStatus(false); | ||
96 | |||
97 | Assert.That(rootPart.Flags, Is.EqualTo(PrimFlags.None)); | ||
98 | } | ||
99 | |||
100 | [Test] | ||
101 | public void TestSetPhysicsLinkset() | ||
102 | { | ||
103 | TestHelpers.InMethod(); | ||
104 | |||
105 | m_scene.AddSceneObject(m_so1); | ||
106 | m_scene.AddSceneObject(m_so2); | ||
107 | |||
108 | m_scene.LinkObjects(m_ownerId, m_so1.LocalId, new List<uint>() { m_so2.LocalId }); | ||
109 | |||
110 | m_so1.ScriptSetPhysicsStatus(true); | ||
111 | |||
112 | Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.Physics)); | ||
113 | Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.Physics)); | ||
114 | |||
115 | m_so1.ScriptSetPhysicsStatus(false); | ||
116 | |||
117 | Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.None)); | ||
118 | Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.None)); | ||
119 | |||
120 | m_so1.ScriptSetPhysicsStatus(true); | ||
121 | |||
122 | Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.Physics)); | ||
123 | Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.Physics)); | ||
124 | } | ||
125 | |||
126 | /// <summary> | ||
127 | /// Test that linking results in the correct physical status for all linkees. | ||
128 | /// </summary> | ||
129 | [Test] | ||
130 | public void TestLinkPhysicsBothPhysical() | ||
131 | { | ||
132 | TestHelpers.InMethod(); | ||
133 | |||
134 | m_scene.AddSceneObject(m_so1); | ||
135 | m_scene.AddSceneObject(m_so2); | ||
136 | |||
137 | m_so1.ScriptSetPhysicsStatus(true); | ||
138 | m_so2.ScriptSetPhysicsStatus(true); | ||
139 | |||
140 | m_scene.LinkObjects(m_ownerId, m_so1.LocalId, new List<uint>() { m_so2.LocalId }); | ||
141 | |||
142 | Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.Physics)); | ||
143 | Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.Physics)); | ||
144 | } | ||
145 | |||
146 | /// <summary> | ||
147 | /// Test that linking results in the correct physical status for all linkees. | ||
148 | /// </summary> | ||
149 | [Test] | ||
150 | public void TestLinkPhysicsRootPhysicalOnly() | ||
151 | { | ||
152 | TestHelpers.InMethod(); | ||
153 | |||
154 | m_scene.AddSceneObject(m_so1); | ||
155 | m_scene.AddSceneObject(m_so2); | ||
156 | |||
157 | m_so1.ScriptSetPhysicsStatus(true); | ||
158 | |||
159 | m_scene.LinkObjects(m_ownerId, m_so1.LocalId, new List<uint>() { m_so2.LocalId }); | ||
160 | |||
161 | Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.Physics)); | ||
162 | Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.Physics)); | ||
163 | } | ||
164 | |||
165 | /// <summary> | ||
166 | /// Test that linking results in the correct physical status for all linkees. | ||
167 | /// </summary> | ||
168 | [Test] | ||
169 | public void TestLinkPhysicsChildPhysicalOnly() | ||
170 | { | ||
171 | TestHelpers.InMethod(); | ||
172 | |||
173 | m_scene.AddSceneObject(m_so1); | ||
174 | m_scene.AddSceneObject(m_so2); | ||
175 | |||
176 | m_so2.ScriptSetPhysicsStatus(true); | ||
177 | |||
178 | m_scene.LinkObjects(m_ownerId, m_so1.LocalId, new List<uint>() { m_so2.LocalId }); | ||
179 | |||
180 | Assert.That(m_so1.RootPart.Flags, Is.EqualTo(PrimFlags.None)); | ||
181 | Assert.That(m_so1.Parts[1].Flags, Is.EqualTo(PrimFlags.None)); | ||
182 | } | ||
65 | } | 183 | } |
66 | } \ No newline at end of file | 184 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs index c13d82e..c7eaff9 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs | |||
@@ -58,7 +58,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
58 | 58 | ||
59 | UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001"); | 59 | UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001"); |
60 | 60 | ||
61 | TestScene scene = SceneHelpers.SetupScene(); | 61 | TestScene scene = new SceneHelpers().SetupScene(); |
62 | IConfigSource configSource = new IniConfigSource(); | 62 | IConfigSource configSource = new IniConfigSource(); |
63 | 63 | ||
64 | IConfig startupConfig = configSource.AddConfig("Startup"); | 64 | IConfig startupConfig = configSource.AddConfig("Startup"); |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs index ed9b179..1aa48d7 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs | |||
@@ -67,10 +67,12 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
67 | public void Init() | 67 | public void Init() |
68 | { | 68 | { |
69 | TestHelpers.InMethod(); | 69 | TestHelpers.InMethod(); |
70 | 70 | ||
71 | scene = SceneHelpers.SetupScene("Neighbour x", UUID.Random(), 1000, 1000); | 71 | SceneHelpers sh = new SceneHelpers(); |
72 | scene2 = SceneHelpers.SetupScene("Neighbour x+1", UUID.Random(), 1001, 1000); | 72 | |
73 | scene3 = SceneHelpers.SetupScene("Neighbour x-1", UUID.Random(), 999, 1000); | 73 | scene = sh.SetupScene("Neighbour x", UUID.Random(), 1000, 1000); |
74 | scene2 = sh.SetupScene("Neighbour x+1", UUID.Random(), 1001, 1000); | ||
75 | scene3 = sh.SetupScene("Neighbour x-1", UUID.Random(), 999, 1000); | ||
74 | 76 | ||
75 | ISharedRegionModule interregionComms = new LocalSimulationConnectorModule(); | 77 | ISharedRegionModule interregionComms = new LocalSimulationConnectorModule(); |
76 | interregionComms.Initialise(new IniConfigSource()); | 78 | interregionComms.Initialise(new IniConfigSource()); |
@@ -101,7 +103,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
101 | TestHelpers.InMethod(); | 103 | TestHelpers.InMethod(); |
102 | // log4net.Config.XmlConfigurator.Configure(); | 104 | // log4net.Config.XmlConfigurator.Configure(); |
103 | 105 | ||
104 | TestScene scene = SceneHelpers.SetupScene(); | 106 | TestScene scene = new SceneHelpers().SetupScene(); |
105 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); | 107 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); |
106 | 108 | ||
107 | Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Not.Null); | 109 | Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Not.Null); |
@@ -126,7 +128,8 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
126 | IConfig config = configSource.AddConfig("Modules"); | 128 | IConfig config = configSource.AddConfig("Modules"); |
127 | config.Set("SimulationServices", "LocalSimulationConnectorModule"); | 129 | config.Set("SimulationServices", "LocalSimulationConnectorModule"); |
128 | 130 | ||
129 | TestScene scene = SceneHelpers.SetupScene(); | 131 | SceneHelpers sceneHelpers = new SceneHelpers(); |
132 | TestScene scene = sceneHelpers.SetupScene(); | ||
130 | SceneHelpers.SetupSceneModules(scene, configSource, lsc); | 133 | SceneHelpers.SetupSceneModules(scene, configSource, lsc); |
131 | 134 | ||
132 | UUID agentId = TestHelpers.ParseTail(0x01); | 135 | UUID agentId = TestHelpers.ParseTail(0x01); |
@@ -176,8 +179,8 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
176 | 179 | ||
177 | // UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001"); | 180 | // UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001"); |
178 | 181 | ||
179 | TestScene myScene1 = SceneHelpers.SetupScene("Neighbour y", UUID.Random(), 1000, 1000); | 182 | TestScene myScene1 = new SceneHelpers().SetupScene("Neighbour y", UUID.Random(), 1000, 1000); |
180 | TestScene myScene2 = SceneHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000); | 183 | TestScene myScene2 = new SceneHelpers().SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000); |
181 | 184 | ||
182 | IConfigSource configSource = new IniConfigSource(); | 185 | IConfigSource configSource = new IniConfigSource(); |
183 | IConfig config = configSource.AddConfig("Startup"); | 186 | IConfig config = configSource.AddConfig("Startup"); |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs index 89f8007..646e5fa 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs | |||
@@ -59,7 +59,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
59 | TestHelpers.InMethod(); | 59 | TestHelpers.InMethod(); |
60 | // log4net.Config.XmlConfigurator.Configure(); | 60 | // log4net.Config.XmlConfigurator.Configure(); |
61 | 61 | ||
62 | TestScene scene = SceneHelpers.SetupScene(); | 62 | TestScene scene = new SceneHelpers().SetupScene(); |
63 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); | 63 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); |
64 | sp.Flying = true; | 64 | sp.Flying = true; |
65 | sp.PhysicsCollisionUpdate(new CollisionEventUpdate()); | 65 | sp.PhysicsCollisionUpdate(new CollisionEventUpdate()); |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAutopilotTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAutopilotTests.cs index cfea10d..1d1ff88 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAutopilotTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAutopilotTests.cs | |||
@@ -64,7 +64,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
64 | [SetUp] | 64 | [SetUp] |
65 | public void Init() | 65 | public void Init() |
66 | { | 66 | { |
67 | m_scene = SceneHelpers.SetupScene(); | 67 | m_scene = new SceneHelpers().SetupScene(); |
68 | } | 68 | } |
69 | 69 | ||
70 | [Test] | 70 | [Test] |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceSitTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceSitTests.cs index b7b8db4..313e350 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceSitTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceSitTests.cs | |||
@@ -50,7 +50,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
50 | [SetUp] | 50 | [SetUp] |
51 | public void Init() | 51 | public void Init() |
52 | { | 52 | { |
53 | m_scene = SceneHelpers.SetupScene(); | 53 | m_scene = new SceneHelpers().SetupScene(); |
54 | m_sp = SceneHelpers.AddScenePresence(m_scene, TestHelpers.ParseTail(0x1)); | 54 | m_sp = SceneHelpers.AddScenePresence(m_scene, TestHelpers.ParseTail(0x1)); |
55 | } | 55 | } |
56 | 56 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs index bebc10c..ea4fb66 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs | |||
@@ -34,10 +34,13 @@ using OpenSim.Framework; | |||
34 | using OpenSim.Framework.Communications; | 34 | using OpenSim.Framework.Communications; |
35 | using OpenSim.Framework.Servers; | 35 | using OpenSim.Framework.Servers; |
36 | using OpenSim.Region.Framework.Interfaces; | 36 | using OpenSim.Region.Framework.Interfaces; |
37 | using OpenSim.Region.CoreModules.Framework; | ||
38 | using OpenSim.Region.CoreModules.Framework.EntityTransfer; | ||
37 | using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; | 39 | using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; |
38 | using OpenSim.Tests.Common; | 40 | using OpenSim.Tests.Common; |
39 | using OpenSim.Tests.Common.Mock; | 41 | using OpenSim.Tests.Common.Mock; |
40 | using System.Threading; | 42 | using System.IO; |
43 | using System.Text; | ||
41 | 44 | ||
42 | namespace OpenSim.Region.Framework.Scenes.Tests | 45 | namespace OpenSim.Region.Framework.Scenes.Tests |
43 | { | 46 | { |
@@ -47,145 +50,190 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
47 | [TestFixture] | 50 | [TestFixture] |
48 | public class ScenePresenceTeleportTests | 51 | public class ScenePresenceTeleportTests |
49 | { | 52 | { |
50 | /// <summary> | 53 | [TestFixtureSetUp] |
51 | /// Test a teleport between two regions that are not neighbours and do not share any neighbours in common. | 54 | public void FixtureInit() |
52 | /// </summary> | 55 | { |
53 | /// Does not yet do what is says on the tin. | 56 | // Don't allow tests to be bamboozled by asynchronous events. Execute everything on the same thread. |
54 | /// Commenting for now | 57 | Util.FireAndForgetMethod = FireAndForgetMethod.RegressionTest; |
55 | //[Test, LongRunning] | 58 | } |
56 | public void TestSimpleNotNeighboursTeleport() | 59 | |
60 | [TestFixtureTearDown] | ||
61 | public void TearDown() | ||
62 | { | ||
63 | // We must set this back afterwards, otherwise later tests will fail since they're expecting multiple | ||
64 | // threads. Possibly, later tests should be rewritten so none of them require async stuff (which regression | ||
65 | // tests really shouldn't). | ||
66 | Util.FireAndForgetMethod = Util.DefaultFireAndForgetMethod; | ||
67 | } | ||
68 | |||
69 | [Test] | ||
70 | public void TestSameRegionTeleport() | ||
57 | { | 71 | { |
58 | TestHelpers.InMethod(); | 72 | TestHelpers.InMethod(); |
59 | ThreadRunResults results = new ThreadRunResults(); | 73 | // log4net.Config.XmlConfigurator.Configure(); |
60 | results.Result = false; | ||
61 | results.Message = "Test did not run"; | ||
62 | TestRunning testClass = new TestRunning(results); | ||
63 | 74 | ||
64 | Thread testThread = new Thread(testClass.run); | 75 | EntityTransferModule etm = new EntityTransferModule(); |
65 | 76 | ||
66 | // Seems kind of redundant to start a thread and then join it, however.. We need to protect against | 77 | IConfigSource config = new IniConfigSource(); |
67 | // A thread abort exception in the simulator code. | 78 | config.AddConfig("Modules"); |
68 | testThread.Start(); | 79 | // Not strictly necessary since FriendsModule assumes it is the default (!) |
69 | testThread.Join(); | 80 | config.Configs["Modules"].Set("EntityTransferModule", etm.Name); |
70 | 81 | ||
71 | Assert.That(testClass.results.Result, Is.EqualTo(true), testClass.results.Message); | 82 | TestScene scene = new SceneHelpers().SetupScene("sceneA", TestHelpers.ParseTail(0x100), 1000, 1000); |
72 | // Console.WriteLine("Beginning test {0}", MethodBase.GetCurrentMethod()); | 83 | SceneHelpers.SetupSceneModules(scene, config, etm); |
84 | |||
85 | Vector3 teleportPosition = new Vector3(10, 11, 12); | ||
86 | Vector3 teleportLookAt = new Vector3(20, 21, 22); | ||
87 | |||
88 | ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); | ||
89 | sp.AbsolutePosition = new Vector3(30, 31, 32); | ||
90 | scene.RequestTeleportLocation( | ||
91 | sp.ControllingClient, | ||
92 | scene.RegionInfo.RegionHandle, | ||
93 | teleportPosition, | ||
94 | teleportLookAt, | ||
95 | (uint)TeleportFlags.ViaLocation); | ||
96 | |||
97 | Assert.That(sp.AbsolutePosition, Is.EqualTo(teleportPosition)); | ||
98 | |||
99 | // Lookat is sent to the client only - sp.Lookat does not yield the same thing (calculation from camera | ||
100 | // position instead). | ||
101 | // Assert.That(sp.Lookat, Is.EqualTo(teleportLookAt)); | ||
73 | } | 102 | } |
74 | 103 | ||
75 | [TearDown] | 104 | [Test] |
76 | public void TearDown() | 105 | public void TestSameSimulatorSeparatedRegionsTeleport() |
77 | { | 106 | { |
78 | try | 107 | TestHelpers.InMethod(); |
79 | { | 108 | // log4net.Config.XmlConfigurator.Configure(); |
80 | if (MainServer.Instance != null) MainServer.Instance.Stop(); | ||
81 | } | ||
82 | catch (NullReferenceException) | ||
83 | { } | ||
84 | } | ||
85 | 109 | ||
86 | } | 110 | UUID userId = TestHelpers.ParseTail(0x1); |
87 | 111 | ||
88 | public class ThreadRunResults | 112 | EntityTransferModule etm = new EntityTransferModule(); |
89 | { | 113 | LocalSimulationConnectorModule lscm = new LocalSimulationConnectorModule(); |
90 | public bool Result = false; | ||
91 | public string Message = string.Empty; | ||
92 | } | ||
93 | 114 | ||
94 | public class TestRunning | 115 | IConfigSource config = new IniConfigSource(); |
95 | { | 116 | IConfig modulesConfig = config.AddConfig("Modules"); |
96 | public ThreadRunResults results; | 117 | modulesConfig.Set("EntityTransferModule", etm.Name); |
97 | public TestRunning(ThreadRunResults t) | 118 | modulesConfig.Set("SimulationServices", lscm.Name); |
98 | { | 119 | IConfig entityTransferConfig = config.AddConfig("EntityTransfer"); |
99 | results = t; | 120 | |
121 | // In order to run a single threaded regression test we do not want the entity transfer module waiting | ||
122 | // for a callback from the destination scene before removing its avatar data. | ||
123 | entityTransferConfig.Set("wait_for_callback", false); | ||
124 | |||
125 | SceneHelpers sh = new SceneHelpers(); | ||
126 | TestScene sceneA = sh.SetupScene("sceneA", TestHelpers.ParseTail(0x100), 1000, 1000); | ||
127 | TestScene sceneB = sh.SetupScene("sceneB", TestHelpers.ParseTail(0x200), 1002, 1000); | ||
128 | |||
129 | SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, etm, lscm); | ||
130 | |||
131 | Vector3 teleportPosition = new Vector3(10, 11, 12); | ||
132 | Vector3 teleportLookAt = new Vector3(20, 21, 22); | ||
133 | |||
134 | ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId, sh.SceneManager); | ||
135 | sp.AbsolutePosition = new Vector3(30, 31, 32); | ||
136 | |||
137 | // XXX: A very nasty hack to tell the client about the destination scene without having to crank the whole | ||
138 | // UDP stack (?) | ||
139 | // ((TestClient)sp.ControllingClient).TeleportTargetScene = sceneB; | ||
140 | |||
141 | sceneA.RequestTeleportLocation( | ||
142 | sp.ControllingClient, | ||
143 | sceneB.RegionInfo.RegionHandle, | ||
144 | teleportPosition, | ||
145 | teleportLookAt, | ||
146 | (uint)TeleportFlags.ViaLocation); | ||
147 | |||
148 | ((TestClient)sp.ControllingClient).CompleteTeleportClientSide(); | ||
149 | |||
150 | Assert.That(sceneA.GetScenePresence(userId), Is.Null); | ||
151 | |||
152 | ScenePresence sceneBSp = sceneB.GetScenePresence(userId); | ||
153 | Assert.That(sceneBSp, Is.Not.Null); | ||
154 | Assert.That(sceneBSp.Scene.RegionInfo.RegionName, Is.EqualTo(sceneB.RegionInfo.RegionName)); | ||
155 | Assert.That(sceneBSp.AbsolutePosition, Is.EqualTo(teleportPosition)); | ||
156 | |||
157 | // TODO: Add assertions to check correct circuit details in both scenes. | ||
158 | |||
159 | // Lookat is sent to the client only - sp.Lookat does not yield the same thing (calculation from camera | ||
160 | // position instead). | ||
161 | // Assert.That(sp.Lookat, Is.EqualTo(teleportLookAt)); | ||
100 | } | 162 | } |
101 | public void run(object o) | 163 | |
164 | [Test] | ||
165 | public void TestSameSimulatorNeighbouringRegionsTeleport() | ||
102 | { | 166 | { |
103 | 167 | TestHelpers.InMethod(); | |
104 | //results.Result = true; | 168 | // TestHelpers.EnableLogging(); |
105 | log4net.Config.XmlConfigurator.Configure(); | 169 | |
106 | 170 | UUID userId = TestHelpers.ParseTail(0x1); | |
107 | UUID sceneAId = UUID.Parse("00000000-0000-0000-0000-000000000100"); | 171 | |
108 | UUID sceneBId = UUID.Parse("00000000-0000-0000-0000-000000000200"); | 172 | EntityTransferModule etm = new EntityTransferModule(); |
109 | 173 | LocalSimulationConnectorModule lscm = new LocalSimulationConnectorModule(); | |
110 | // shared module | 174 | |
111 | ISharedRegionModule interregionComms = new LocalSimulationConnectorModule(); | 175 | IConfigSource config = new IniConfigSource(); |
112 | 176 | IConfig modulesConfig = config.AddConfig("Modules"); | |
113 | 177 | modulesConfig.Set("EntityTransferModule", etm.Name); | |
114 | Scene sceneB = SceneHelpers.SetupScene("sceneB", sceneBId, 1010, 1010); | 178 | modulesConfig.Set("SimulationServices", lscm.Name); |
115 | SceneHelpers.SetupSceneModules(sceneB, new IniConfigSource(), interregionComms); | 179 | IConfig entityTransferConfig = config.AddConfig("EntityTransfer"); |
116 | sceneB.RegisterRegionWithGrid(); | 180 | |
117 | 181 | // In order to run a single threaded regression test we do not want the entity transfer module waiting | |
118 | Scene sceneA = SceneHelpers.SetupScene("sceneA", sceneAId, 1000, 1000); | 182 | // for a callback from the destination scene before removing its avatar data. |
119 | SceneHelpers.SetupSceneModules(sceneA, new IniConfigSource(), interregionComms); | 183 | entityTransferConfig.Set("wait_for_callback", false); |
120 | sceneA.RegisterRegionWithGrid(); | 184 | |
121 | 185 | SceneHelpers sh = new SceneHelpers(); | |
122 | UUID agentId = UUID.Parse("00000000-0000-0000-0000-000000000041"); | 186 | TestScene sceneA = sh.SetupScene("sceneA", TestHelpers.ParseTail(0x100), 1000, 1000); |
123 | TestClient client = (TestClient)SceneHelpers.AddScenePresence(sceneA, agentId).ControllingClient; | 187 | TestScene sceneB = sh.SetupScene("sceneB", TestHelpers.ParseTail(0x200), 1001, 1000); |
124 | 188 | ||
125 | ICapabilitiesModule sceneACapsModule = sceneA.RequestModuleInterface<ICapabilitiesModule>(); | 189 | SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, etm, lscm); |
126 | 190 | SceneHelpers.SetupSceneModules(sceneA, new CapabilitiesModule()); | |
127 | results.Result = (sceneACapsModule.GetCapsPath(agentId) == client.CapsSeedUrl); | 191 | SceneHelpers.SetupSceneModules(sceneB, new CapabilitiesModule()); |
128 | 192 | ||
129 | if (!results.Result) | 193 | Vector3 teleportPosition = new Vector3(10, 11, 12); |
130 | { | 194 | Vector3 teleportLookAt = new Vector3(20, 21, 22); |
131 | results.Message = "Incorrect caps object path set up in sceneA"; | 195 | |
132 | return; | 196 | ScenePresence originalSp = SceneHelpers.AddScenePresence(sceneA, userId, sh.SceneManager); |
133 | } | 197 | originalSp.AbsolutePosition = new Vector3(30, 31, 32); |
134 | 198 | ||
135 | /* | 199 | ScenePresence beforeSceneASp = sceneA.GetScenePresence(userId); |
136 | Assert.That( | 200 | Assert.That(beforeSceneASp, Is.Not.Null); |
137 | sceneACapsModule.GetCapsPath(agentId), | 201 | Assert.That(beforeSceneASp.IsChildAgent, Is.False); |
138 | Is.EqualTo(client.CapsSeedUrl), | 202 | |
139 | "Incorrect caps object path set up in sceneA"); | 203 | ScenePresence beforeSceneBSp = sceneB.GetScenePresence(userId); |
140 | */ | 204 | Assert.That(beforeSceneBSp, Is.Not.Null); |
141 | // FIXME: This is a hack to get the test working - really the normal OpenSim mechanisms should be used. | 205 | Assert.That(beforeSceneBSp.IsChildAgent, Is.True); |
142 | 206 | ||
143 | 207 | // XXX: A very nasty hack to tell the client about the destination scene without having to crank the whole | |
144 | client.TeleportTargetScene = sceneB; | 208 | // UDP stack (?) |
145 | client.Teleport(sceneB.RegionInfo.RegionHandle, new Vector3(100, 100, 100), new Vector3(40, 40, 40)); | 209 | // ((TestClient)beforeSceneASp.ControllingClient).TeleportTargetScene = sceneB; |
146 | 210 | ||
147 | results.Result = (sceneB.GetScenePresence(agentId) != null); | 211 | sceneA.RequestTeleportLocation( |
148 | if (!results.Result) | 212 | beforeSceneASp.ControllingClient, |
149 | { | 213 | sceneB.RegionInfo.RegionHandle, |
150 | results.Message = "Client does not have an agent in sceneB"; | 214 | teleportPosition, |
151 | return; | 215 | teleportLookAt, |
152 | } | 216 | (uint)TeleportFlags.ViaLocation); |
153 | 217 | ||
154 | //Assert.That(sceneB.GetScenePresence(agentId), Is.Not.Null, "Client does not have an agent in sceneB"); | 218 | ((TestClient)beforeSceneASp.ControllingClient).CompleteTeleportClientSide(); |
155 | 219 | ||
156 | //Assert.That(sceneA.GetScenePresence(agentId), Is.Null, "Client still had an agent in sceneA"); | 220 | ScenePresence afterSceneASp = sceneA.GetScenePresence(userId); |
157 | 221 | Assert.That(afterSceneASp, Is.Not.Null); | |
158 | results.Result = (sceneA.GetScenePresence(agentId) == null); | 222 | Assert.That(afterSceneASp.IsChildAgent, Is.True); |
159 | if (!results.Result) | 223 | |
160 | { | 224 | ScenePresence afterSceneBSp = sceneB.GetScenePresence(userId); |
161 | results.Message = "Client still had an agent in sceneA"; | 225 | Assert.That(afterSceneBSp, Is.Not.Null); |
162 | return; | 226 | Assert.That(afterSceneBSp.IsChildAgent, Is.False); |
163 | } | 227 | Assert.That(afterSceneBSp.Scene.RegionInfo.RegionName, Is.EqualTo(sceneB.RegionInfo.RegionName)); |
164 | 228 | Assert.That(afterSceneBSp.AbsolutePosition, Is.EqualTo(teleportPosition)); | |
165 | ICapabilitiesModule sceneBCapsModule = sceneB.RequestModuleInterface<ICapabilitiesModule>(); | 229 | |
166 | 230 | // TODO: Add assertions to check correct circuit details in both scenes. | |
167 | 231 | ||
168 | results.Result = ("http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort + | 232 | // Lookat is sent to the client only - sp.Lookat does not yield the same thing (calculation from camera |
169 | "/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/" == client.CapsSeedUrl); | 233 | // position instead). |
170 | if (!results.Result) | 234 | // Assert.That(sp.Lookat, Is.EqualTo(teleportLookAt)); |
171 | { | 235 | |
172 | results.Message = "Incorrect caps object path set up in sceneB"; | 236 | // TestHelpers.DisableLogging(); |
173 | return; | ||
174 | } | ||
175 | |||
176 | // Temporary assertion - caps url construction should at least be doable through a method. | ||
177 | /* | ||
178 | Assert.That( | ||
179 | "http://" + sceneB.RegionInfo.ExternalHostName + ":" + sceneB.RegionInfo.HttpPort + "/CAPS/" + sceneBCapsModule.GetCapsPath(agentId) + "0000/", | ||
180 | Is.EqualTo(client.CapsSeedUrl), | ||
181 | "Incorrect caps object path set up in sceneB"); | ||
182 | */ | ||
183 | // This assertion will currently fail since we don't remove the caps paths when no longer needed | ||
184 | //Assert.That(sceneACapsModule.GetCapsPath(agentId), Is.Null, "sceneA still had a caps object path"); | ||
185 | |||
186 | // TODO: Check that more of everything is as it should be | ||
187 | |||
188 | // TODO: test what happens if we try to teleport to a region that doesn't exist | ||
189 | } | 237 | } |
190 | } | 238 | } |
191 | } | 239 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs index 5c9a77d..d722a09 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneTests.cs | |||
@@ -60,7 +60,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
60 | { | 60 | { |
61 | TestHelpers.InMethod(); | 61 | TestHelpers.InMethod(); |
62 | 62 | ||
63 | Scene scene = SceneHelpers.SetupScene(); | 63 | Scene scene = new SceneHelpers().SetupScene(); |
64 | scene.Update(1); | 64 | scene.Update(1); |
65 | 65 | ||
66 | Assert.That(scene.Frame, Is.EqualTo(1)); | 66 | Assert.That(scene.Frame, Is.EqualTo(1)); |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs index 55c80f5..d15141b 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs | |||
@@ -58,7 +58,7 @@ namespace OpenSim.Region.Framework.Tests | |||
58 | TestHelpers.InMethod(); | 58 | TestHelpers.InMethod(); |
59 | // log4net.Config.XmlConfigurator.Configure(); | 59 | // log4net.Config.XmlConfigurator.Configure(); |
60 | 60 | ||
61 | Scene scene = SceneHelpers.SetupScene(); | 61 | Scene scene = new SceneHelpers().SetupScene(); |
62 | UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene); | 62 | UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene); |
63 | SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID); | 63 | SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID); |
64 | SceneObjectPart sop1 = sog1.RootPart; | 64 | SceneObjectPart sop1 = sog1.RootPart; |
@@ -81,7 +81,7 @@ namespace OpenSim.Region.Framework.Tests | |||
81 | TestHelpers.InMethod(); | 81 | TestHelpers.InMethod(); |
82 | // log4net.Config.XmlConfigurator.Configure(); | 82 | // log4net.Config.XmlConfigurator.Configure(); |
83 | 83 | ||
84 | Scene scene = SceneHelpers.SetupScene(); | 84 | Scene scene = new SceneHelpers().SetupScene(); |
85 | UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene); | 85 | UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene); |
86 | SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID); | 86 | SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID); |
87 | SceneObjectPart sop1 = sog1.RootPart; | 87 | SceneObjectPart sop1 = sog1.RootPart; |
@@ -124,7 +124,7 @@ namespace OpenSim.Region.Framework.Tests | |||
124 | TestHelpers.InMethod(); | 124 | TestHelpers.InMethod(); |
125 | // log4net.Config.XmlConfigurator.Configure(); | 125 | // log4net.Config.XmlConfigurator.Configure(); |
126 | 126 | ||
127 | Scene scene = SceneHelpers.SetupScene(); | 127 | Scene scene = new SceneHelpers().SetupScene(); |
128 | UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene); | 128 | UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene); |
129 | SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID); | 129 | SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID); |
130 | SceneObjectPart sop1 = sog1.RootPart; | 130 | SceneObjectPart sop1 = sog1.RootPart; |
@@ -153,7 +153,7 @@ namespace OpenSim.Region.Framework.Tests | |||
153 | TestHelpers.InMethod(); | 153 | TestHelpers.InMethod(); |
154 | // log4net.Config.XmlConfigurator.Configure(); | 154 | // log4net.Config.XmlConfigurator.Configure(); |
155 | 155 | ||
156 | Scene scene = SceneHelpers.SetupScene(); | 156 | Scene scene = new SceneHelpers().SetupScene(); |
157 | UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene); | 157 | UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene); |
158 | SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID); | 158 | SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID); |
159 | SceneObjectPart sop1 = sog1.RootPart; | 159 | SceneObjectPart sop1 = sog1.RootPart; |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/UserInventoryTests.cs b/OpenSim/Region/Framework/Scenes/Tests/UserInventoryTests.cs index 55fc1e7..44d2d45 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/UserInventoryTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/UserInventoryTests.cs | |||
@@ -58,7 +58,7 @@ namespace OpenSim.Region.Framework.Tests | |||
58 | TestHelpers.InMethod(); | 58 | TestHelpers.InMethod(); |
59 | // log4net.Config.XmlConfigurator.Configure(); | 59 | // log4net.Config.XmlConfigurator.Configure(); |
60 | 60 | ||
61 | Scene scene = SceneHelpers.SetupScene(); | 61 | Scene scene = new SceneHelpers().SetupScene(); |
62 | UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene, TestHelpers.ParseTail(1001)); | 62 | UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene, TestHelpers.ParseTail(1001)); |
63 | UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene, TestHelpers.ParseTail(1002)); | 63 | UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene, TestHelpers.ParseTail(1002)); |
64 | InventoryItemBase item1 = UserInventoryHelpers.CreateInventoryItem(scene, "item1", user1.PrincipalID); | 64 | InventoryItemBase item1 = UserInventoryHelpers.CreateInventoryItem(scene, "item1", user1.PrincipalID); |
@@ -85,7 +85,7 @@ namespace OpenSim.Region.Framework.Tests | |||
85 | TestHelpers.InMethod(); | 85 | TestHelpers.InMethod(); |
86 | // log4net.Config.XmlConfigurator.Configure(); | 86 | // log4net.Config.XmlConfigurator.Configure(); |
87 | 87 | ||
88 | Scene scene = SceneHelpers.SetupScene(); | 88 | Scene scene = new SceneHelpers().SetupScene(); |
89 | UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene, TestHelpers.ParseTail(1001)); | 89 | UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene, TestHelpers.ParseTail(1001)); |
90 | UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene, TestHelpers.ParseTail(1002)); | 90 | UserAccount user2 = UserAccountHelpers.CreateUserWithInventory(scene, TestHelpers.ParseTail(1002)); |
91 | InventoryFolderBase folder1 | 91 | InventoryFolderBase folder1 |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs index d9fe87c..198e487 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs | |||
@@ -47,7 +47,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
47 | public void Init() | 47 | public void Init() |
48 | { | 48 | { |
49 | // FIXME: We don't need a full scene here - it would be enough to set up the asset service. | 49 | // FIXME: We don't need a full scene here - it would be enough to set up the asset service. |
50 | Scene scene = SceneHelpers.SetupScene(); | 50 | Scene scene = new SceneHelpers().SetupScene(); |
51 | m_assetService = scene.AssetService; | 51 | m_assetService = scene.AssetService; |
52 | m_uuidGatherer = new UuidGatherer(m_assetService); | 52 | m_uuidGatherer = new UuidGatherer(m_assetService); |
53 | } | 53 | } |