diff options
Diffstat (limited to 'OpenSim/Region')
19 files changed, 165 insertions, 93 deletions
diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 7361f50..88bd869 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs | |||
@@ -195,7 +195,9 @@ namespace OpenSim | |||
195 | 195 | ||
196 | m_securePermissionsLoading = startupConfig.GetBoolean("SecurePermissionsLoading", true); | 196 | m_securePermissionsLoading = startupConfig.GetBoolean("SecurePermissionsLoading", true); |
197 | 197 | ||
198 | string permissionModules = startupConfig.GetString("permissionmodules", "DefaultPermissionsModule"); | 198 | string permissionModules = Util.GetConfigVarFromSections<string>(Config, "permissionmodules", |
199 | new string[] { "Startup", "Permissions" }, "DefaultPermissionsModule"); | ||
200 | |||
199 | m_permsModules = new List<string>(permissionModules.Split(',')); | 201 | m_permsModules = new List<string>(permissionModules.Split(',')); |
200 | } | 202 | } |
201 | 203 | ||
@@ -392,29 +394,19 @@ namespace OpenSim | |||
392 | } | 394 | } |
393 | else m_log.Error("[REGIONMODULES]: The new RegionModulesController is missing..."); | 395 | else m_log.Error("[REGIONMODULES]: The new RegionModulesController is missing..."); |
394 | 396 | ||
395 | // XPTO: Fix this | 397 | if (m_securePermissionsLoading) |
396 | // if (m_securePermissionsLoading) | 398 | { |
397 | // { | 399 | foreach (string s in m_permsModules) |
398 | // foreach (string s in m_permsModules) | 400 | { |
399 | // { | 401 | if (!scene.RegionModules.ContainsKey(s)) |
400 | // if (!scene.RegionModules.ContainsKey(s)) | 402 | { |
401 | // { | 403 | m_log.Fatal("[MODULES]: Required module " + s + " not found."); |
402 | // bool found = false; | 404 | Environment.Exit(0); |
403 | // foreach (IRegionModule m in modules) | 405 | } |
404 | // { | 406 | } |
405 | // if (m.Name == s) | 407 | |
406 | // { | 408 | m_log.InfoFormat("[SCENE]: Secure permissions loading enabled, modules loaded: {0}", String.Join(" ", m_permsModules.ToArray())); |
407 | // found = true; | 409 | } |
408 | // } | ||
409 | // } | ||
410 | // if (!found) | ||
411 | // { | ||
412 | // m_log.Fatal("[MODULES]: Required module " + s + " not found."); | ||
413 | // Environment.Exit(0); | ||
414 | // } | ||
415 | // } | ||
416 | // } | ||
417 | // } | ||
418 | 410 | ||
419 | scene.SetModuleInterfaces(); | 411 | scene.SetModuleInterfaces(); |
420 | // First Step of bootreport sequence | 412 | // First Step of bootreport sequence |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs index 59b9585..8241e07 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs | |||
@@ -990,13 +990,20 @@ namespace OpenSim.Region.ClientStack.Linden | |||
990 | else | 990 | else |
991 | prim.Name = assetName + "#" + i.ToString(); | 991 | prim.Name = assetName + "#" + i.ToString(); |
992 | 992 | ||
993 | prim.EveryoneMask = 0; | ||
994 | prim.GroupMask = 0; | ||
995 | |||
993 | if (restrictPerms) | 996 | if (restrictPerms) |
994 | { | 997 | { |
995 | prim.BaseMask = (uint)(PermissionMask.Move | PermissionMask.Modify); | 998 | prim.BaseMask = (uint)(PermissionMask.Move | PermissionMask.Modify); |
996 | prim.EveryoneMask = 0; | ||
997 | prim.GroupMask = 0; | ||
998 | prim.NextOwnerMask = 0; | ||
999 | prim.OwnerMask = (uint)(PermissionMask.Move | PermissionMask.Modify); | 999 | prim.OwnerMask = (uint)(PermissionMask.Move | PermissionMask.Modify); |
1000 | prim.NextOwnerMask = 0; | ||
1001 | } | ||
1002 | else | ||
1003 | { | ||
1004 | prim.BaseMask = (uint)PermissionMask.All | (uint)PermissionMask.Export; | ||
1005 | prim.OwnerMask = (uint)PermissionMask.All | (uint)PermissionMask.Export; | ||
1006 | prim.NextOwnerMask = (uint)PermissionMask.Transfer; | ||
1000 | } | 1007 | } |
1001 | 1008 | ||
1002 | if(istest) | 1009 | if(istest) |
@@ -1099,21 +1106,17 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1099 | 1106 | ||
1100 | if (restrictPerms) | 1107 | if (restrictPerms) |
1101 | { | 1108 | { |
1102 | item.CurrentPermissions | ||
1103 | = (uint)(PermissionMask.Move | PermissionMask.Modify); | ||
1104 | |||
1105 | item.BasePermissions = (uint)(PermissionMask.Move | PermissionMask.Modify); | 1109 | item.BasePermissions = (uint)(PermissionMask.Move | PermissionMask.Modify); |
1110 | item.CurrentPermissions = (uint)(PermissionMask.Move | PermissionMask.Modify); | ||
1106 | item.EveryOnePermissions = 0; | 1111 | item.EveryOnePermissions = 0; |
1107 | item.NextPermissions = 0; | 1112 | item.NextPermissions = 0; |
1108 | } | 1113 | } |
1109 | else | 1114 | else |
1110 | { | 1115 | { |
1111 | item.CurrentPermissions | ||
1112 | = (uint)(PermissionMask.Move | PermissionMask.Copy | PermissionMask.Modify | PermissionMask.Transfer | PermissionMask.Export); | ||
1113 | |||
1114 | item.BasePermissions = (uint)PermissionMask.All | (uint)PermissionMask.Export; | 1116 | item.BasePermissions = (uint)PermissionMask.All | (uint)PermissionMask.Export; |
1117 | item.CurrentPermissions = (uint)PermissionMask.All | (uint)PermissionMask.Export; | ||
1115 | item.EveryOnePermissions = 0; | 1118 | item.EveryOnePermissions = 0; |
1116 | item.NextPermissions = (uint)PermissionMask.All; | 1119 | item.NextPermissions = (uint)PermissionMask.Transfer; |
1117 | } | 1120 | } |
1118 | 1121 | ||
1119 | item.CreationDate = Util.UnixTimeSinceEpoch(); | 1122 | item.CreationDate = Util.UnixTimeSinceEpoch(); |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs index a42c96c..0570144 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs | |||
@@ -77,6 +77,8 @@ namespace OpenSim.Region.ClientStack.Linden | |||
77 | private Dictionary<UUID, string> m_capsDict = new Dictionary<UUID, string>(); | 77 | private Dictionary<UUID, string> m_capsDict = new Dictionary<UUID, string>(); |
78 | private static Thread[] m_workerThreads = null; | 78 | private static Thread[] m_workerThreads = null; |
79 | 79 | ||
80 | private string m_Url = "localhost"; | ||
81 | |||
80 | private static OpenMetaverse.BlockingQueue<aPollRequest> m_queue = | 82 | private static OpenMetaverse.BlockingQueue<aPollRequest> m_queue = |
81 | new OpenMetaverse.BlockingQueue<aPollRequest>(); | 83 | new OpenMetaverse.BlockingQueue<aPollRequest>(); |
82 | 84 | ||
@@ -86,6 +88,9 @@ namespace OpenSim.Region.ClientStack.Linden | |||
86 | 88 | ||
87 | public void Initialise(IConfigSource source) | 89 | public void Initialise(IConfigSource source) |
88 | { | 90 | { |
91 | IConfig config = source.Configs["ClientStack.LindenCaps"]; | ||
92 | if (config != null) | ||
93 | m_Url = config.GetString("Cap_GetTexture", "localhost"); | ||
89 | } | 94 | } |
90 | 95 | ||
91 | public void AddRegion(Scene s) | 96 | public void AddRegion(Scene s) |
@@ -343,27 +348,34 @@ namespace OpenSim.Region.ClientStack.Linden | |||
343 | 348 | ||
344 | private void RegisterCaps(UUID agentID, Caps caps) | 349 | private void RegisterCaps(UUID agentID, Caps caps) |
345 | { | 350 | { |
346 | string capUrl = "/CAPS/" + UUID.Random() + "/"; | 351 | if (m_Url == "localhost") |
347 | 352 | { | |
348 | // Register this as a poll service | 353 | string capUrl = "/CAPS/" + UUID.Random() + "/"; |
349 | PollServiceTextureEventArgs args = new PollServiceTextureEventArgs(agentID, m_scene); | 354 | |
350 | 355 | // Register this as a poll service | |
351 | args.Type = PollServiceEventArgs.EventType.Texture; | 356 | PollServiceTextureEventArgs args = new PollServiceTextureEventArgs(agentID, m_scene); |
352 | MainServer.Instance.AddPollServiceHTTPHandler(capUrl, args); | 357 | |
353 | 358 | args.Type = PollServiceEventArgs.EventType.Texture; | |
354 | string hostName = m_scene.RegionInfo.ExternalHostName; | 359 | MainServer.Instance.AddPollServiceHTTPHandler(capUrl, args); |
355 | uint port = (MainServer.Instance == null) ? 0 : MainServer.Instance.Port; | 360 | |
356 | string protocol = "http"; | 361 | string hostName = m_scene.RegionInfo.ExternalHostName; |
357 | 362 | uint port = (MainServer.Instance == null) ? 0 : MainServer.Instance.Port; | |
358 | if (MainServer.Instance.UseSSL) | 363 | string protocol = "http"; |
364 | |||
365 | if (MainServer.Instance.UseSSL) | ||
366 | { | ||
367 | hostName = MainServer.Instance.SSLCommonName; | ||
368 | port = MainServer.Instance.SSLPort; | ||
369 | protocol = "https"; | ||
370 | } | ||
371 | caps.RegisterHandler("GetTexture", String.Format("{0}://{1}:{2}{3}", protocol, hostName, port, capUrl)); | ||
372 | m_pollservices[agentID] = args; | ||
373 | m_capsDict[agentID] = capUrl; | ||
374 | } | ||
375 | else | ||
359 | { | 376 | { |
360 | hostName = MainServer.Instance.SSLCommonName; | 377 | caps.RegisterHandler("GetTexture", m_Url); |
361 | port = MainServer.Instance.SSLPort; | ||
362 | protocol = "https"; | ||
363 | } | 378 | } |
364 | caps.RegisterHandler("GetTexture", String.Format("{0}://{1}:{2}{3}", protocol, hostName, port, capUrl)); | ||
365 | m_pollservices[agentID] = args; | ||
366 | m_capsDict[agentID] = capUrl; | ||
367 | } | 379 | } |
368 | 380 | ||
369 | private void DeregisterCaps(UUID agentID, Caps caps) | 381 | private void DeregisterCaps(UUID agentID, Caps caps) |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index eebb8ae..f4ea975 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -3933,6 +3933,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3933 | part.Shape.ProfileHollow = 27500; | 3933 | part.Shape.ProfileHollow = 27500; |
3934 | } | 3934 | } |
3935 | } | 3935 | } |
3936 | else if (update.Entity is ScenePresence) | ||
3937 | { | ||
3938 | ScenePresence presence = (ScenePresence)update.Entity; | ||
3939 | |||
3940 | // If ParentUUID is not UUID.Zero and ParentID is 0, this | ||
3941 | // avatar is in the process of crossing regions while | ||
3942 | // sat on an object. In this state, we don't want any | ||
3943 | // updates because they will visually orbit the avatar. | ||
3944 | // Update will be forced once crossing is completed anyway. | ||
3945 | if (presence.ParentUUID != UUID.Zero && presence.ParentID == 0) | ||
3946 | continue; | ||
3947 | } | ||
3936 | 3948 | ||
3937 | ++updatesThisCall; | 3949 | ++updatesThisCall; |
3938 | 3950 | ||
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index f2f789b..6495f3f 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs | |||
@@ -302,7 +302,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
302 | // If we're an NPC then skip all the item checks and manipulations since we don't have an | 302 | // If we're an NPC then skip all the item checks and manipulations since we don't have an |
303 | // inventory right now. | 303 | // inventory right now. |
304 | RezSingleAttachmentFromInventoryInternal( | 304 | RezSingleAttachmentFromInventoryInternal( |
305 | sp, sp.PresenceType == PresenceType.Npc ? UUID.Zero : attach.ItemID, attach.AssetID, p, true, null); | 305 | sp, sp.PresenceType == PresenceType.Npc ? UUID.Zero : attach.ItemID, attach.AssetID, p, true, d); |
306 | } | 306 | } |
307 | catch (Exception e) | 307 | catch (Exception e) |
308 | { | 308 | { |
diff --git a/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs b/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs index 343cdb5..c52d586 100644 --- a/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs | |||
@@ -182,6 +182,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Combat.CombatModule | |||
182 | try | 182 | try |
183 | { | 183 | { |
184 | ILandObject obj = avatar.Scene.LandChannel.GetLandObject(avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y); | 184 | ILandObject obj = avatar.Scene.LandChannel.GetLandObject(avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y); |
185 | if (obj == null) | ||
186 | return; | ||
185 | if ((obj.LandData.Flags & (uint)ParcelFlags.AllowDamage) != 0 | 187 | if ((obj.LandData.Flags & (uint)ParcelFlags.AllowDamage) != 0 |
186 | || avatar.Scene.RegionInfo.RegionSettings.AllowDamage) | 188 | || avatar.Scene.RegionInfo.RegionSettings.AllowDamage) |
187 | { | 189 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 4c11135..d09ea3e 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | |||
@@ -265,7 +265,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
265 | return UUID.Zero; | 265 | return UUID.Zero; |
266 | } | 266 | } |
267 | 267 | ||
268 | remoteClient.SendAgentAlertMessage("Notecard saved", false); | 268 | remoteClient.SendAlertMessage("Notecard saved"); |
269 | } | 269 | } |
270 | else if ((InventoryType)item.InvType == InventoryType.LSL) | 270 | else if ((InventoryType)item.InvType == InventoryType.LSL) |
271 | { | 271 | { |
@@ -275,7 +275,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
275 | return UUID.Zero; | 275 | return UUID.Zero; |
276 | } | 276 | } |
277 | 277 | ||
278 | remoteClient.SendAgentAlertMessage("Script saved", false); | 278 | remoteClient.SendAlertMessage("Script saved"); |
279 | } | 279 | } |
280 | 280 | ||
281 | AssetBase asset = | 281 | AssetBase asset = |
@@ -788,6 +788,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
788 | XmlDocument doc = new XmlDocument(); | 788 | XmlDocument doc = new XmlDocument(); |
789 | doc.LoadXml(xmlData); | 789 | doc.LoadXml(xmlData); |
790 | XmlElement e = (XmlElement)doc.SelectSingleNode("/CoalescedObject"); | 790 | XmlElement e = (XmlElement)doc.SelectSingleNode("/CoalescedObject"); |
791 | Vector3 rez_pos; | ||
791 | if (e == null || attachment) // Single | 792 | if (e == null || attachment) // Single |
792 | { | 793 | { |
793 | SceneObjectGroup g = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); | 794 | SceneObjectGroup g = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); |
@@ -809,6 +810,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
809 | RayStart, RayEnd, RayTargetID, Quaternion.Identity, | 810 | RayStart, RayEnd, RayTargetID, Quaternion.Identity, |
810 | BypassRayCast, bRayEndIsIntersection, true, g.GetAxisAlignedBoundingBox(out offsetHeight), false); | 811 | BypassRayCast, bRayEndIsIntersection, true, g.GetAxisAlignedBoundingBox(out offsetHeight), false); |
811 | pos.Z += offsetHeight; | 812 | pos.Z += offsetHeight; |
813 | rez_pos = pos; | ||
812 | } | 814 | } |
813 | else | 815 | else |
814 | { | 816 | { |
@@ -823,6 +825,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
823 | BypassRayCast, bRayEndIsIntersection, true, | 825 | BypassRayCast, bRayEndIsIntersection, true, |
824 | bbox, false); | 826 | bbox, false); |
825 | 827 | ||
828 | rez_pos = pos; | ||
829 | |||
826 | pos -= bbox / 2; | 830 | pos -= bbox / 2; |
827 | 831 | ||
828 | XmlNodeList groups = e.SelectNodes("SceneObjectGroup"); | 832 | XmlNodeList groups = e.SelectNodes("SceneObjectGroup"); |
@@ -859,7 +863,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
859 | primcount += g.PrimCount; | 863 | primcount += g.PrimCount; |
860 | 864 | ||
861 | if (!m_Scene.Permissions.CanRezObject( | 865 | if (!m_Scene.Permissions.CanRezObject( |
862 | primcount, remoteClient.AgentId, pos) | 866 | primcount, remoteClient.AgentId, rez_pos) |
863 | && !attachment) | 867 | && !attachment) |
864 | { | 868 | { |
865 | // The client operates in no fail mode. It will | 869 | // The client operates in no fail mode. It will |
@@ -876,7 +880,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
876 | return null; | 880 | return null; |
877 | } | 881 | } |
878 | 882 | ||
879 | if (item != null && !DoPreRezWhenFromItem(remoteClient, item, objlist, pos, attachment)) | 883 | if (item != null && !DoPreRezWhenFromItem(remoteClient, item, objlist, rez_pos, attachment)) |
880 | return null; | 884 | return null; |
881 | 885 | ||
882 | for (int i = 0; i < objlist.Count; i++) | 886 | for (int i = 0; i < objlist.Count; i++) |
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index 79dd4a0..26e9131 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs | |||
@@ -42,8 +42,8 @@ using PermissionMask = OpenSim.Framework.PermissionMask; | |||
42 | 42 | ||
43 | namespace OpenSim.Region.CoreModules.World.Permissions | 43 | namespace OpenSim.Region.CoreModules.World.Permissions |
44 | { | 44 | { |
45 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "PermissionsModule")] | 45 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "DefaultPermissionsModule")] |
46 | public class PermissionsModule : INonSharedRegionModule, IPermissionsModule | 46 | public class DefaultPermissionsModule : INonSharedRegionModule, IPermissionsModule |
47 | { | 47 | { |
48 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 48 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
49 | 49 | ||
@@ -348,7 +348,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
348 | 348 | ||
349 | public string Name | 349 | public string Name |
350 | { | 350 | { |
351 | get { return "PermissionsModule"; } | 351 | get { return "DefaultPermissionsModule"; } |
352 | } | 352 | } |
353 | 353 | ||
354 | public Type ReplaceableInterface | 354 | public Type ReplaceableInterface |
diff --git a/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs b/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs index 09481a7..f0e639d 100644 --- a/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs +++ b/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs | |||
@@ -662,7 +662,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
662 | 662 | ||
663 | // Do the frame processing | 663 | // Do the frame processing |
664 | double steps = (double)m_currentFrame.TimeMS / tickDuration; | 664 | double steps = (double)m_currentFrame.TimeMS / tickDuration; |
665 | 665 | ||
666 | if (steps <= 0.0) | 666 | if (steps <= 0.0) |
667 | { | 667 | { |
668 | m_group.RootPart.Velocity = Vector3.Zero; | 668 | m_group.RootPart.Velocity = Vector3.Zero; |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 2b58795..b189599 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -2802,8 +2802,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
2802 | newObject.RootPart.ParentGroup.CreateScriptInstances(0, false, DefaultScriptEngine, GetStateSource(newObject)); | 2802 | newObject.RootPart.ParentGroup.CreateScriptInstances(0, false, DefaultScriptEngine, GetStateSource(newObject)); |
2803 | newObject.ResumeScripts(); | 2803 | newObject.ResumeScripts(); |
2804 | 2804 | ||
2805 | if (newObject.RootPart.KeyframeMotion != null) | 2805 | // AddSceneObject already does this and doing it again messes |
2806 | newObject.RootPart.KeyframeMotion.UpdateSceneObject(newObject); | 2806 | // up region crossings, so don't. |
2807 | //if (newObject.RootPart.KeyframeMotion != null) | ||
2808 | // newObject.RootPart.KeyframeMotion.UpdateSceneObject(newObject); | ||
2807 | } | 2809 | } |
2808 | 2810 | ||
2809 | // Do this as late as possible so that listeners have full access to the incoming object | 2811 | // Do this as late as possible so that listeners have full access to the incoming object |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 0ea4e09..3e1dcaa 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -591,6 +591,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
591 | avinfo.ParentID = av.ParentID; | 591 | avinfo.ParentID = av.ParentID; |
592 | avsToCross.Add(avinfo); | 592 | avsToCross.Add(avinfo); |
593 | 593 | ||
594 | av.PrevSitOffset = av.OffsetPosition; | ||
594 | av.ParentID = 0; | 595 | av.ParentID = 0; |
595 | } | 596 | } |
596 | 597 | ||
@@ -1072,6 +1073,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1072 | for (int i = 0; i < parts.Length; i++) | 1073 | for (int i = 0; i < parts.Length; i++) |
1073 | { | 1074 | { |
1074 | SceneObjectPart part = parts[i]; | 1075 | SceneObjectPart part = parts[i]; |
1076 | if (part.KeyframeMotion != null) | ||
1077 | { | ||
1078 | part.KeyframeMotion.UpdateSceneObject(this); | ||
1079 | } | ||
1080 | |||
1075 | if (Object.ReferenceEquals(part, m_rootPart)) | 1081 | if (Object.ReferenceEquals(part, m_rootPart)) |
1076 | continue; | 1082 | continue; |
1077 | 1083 | ||
@@ -3483,8 +3489,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3483 | part.ClonePermissions(RootPart); | 3489 | part.ClonePermissions(RootPart); |
3484 | }); | 3490 | }); |
3485 | 3491 | ||
3486 | uint lockMask = ~(uint)PermissionMask.Move; | 3492 | uint lockMask = ~(uint)(PermissionMask.Move | PermissionMask.Modify); |
3487 | uint lockBit = RootPart.OwnerMask & (uint)PermissionMask.Move; | 3493 | uint lockBit = RootPart.OwnerMask & (uint)(PermissionMask.Move | PermissionMask.Modify); |
3488 | RootPart.OwnerMask = (RootPart.OwnerMask & lockBit) | ((newOwnerMask | foldedPerms) & lockMask); | 3494 | RootPart.OwnerMask = (RootPart.OwnerMask & lockBit) | ((newOwnerMask | foldedPerms) & lockMask); |
3489 | RootPart.ScheduleFullUpdate(); | 3495 | RootPart.ScheduleFullUpdate(); |
3490 | } | 3496 | } |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 0ab267a..7004d23 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -242,7 +242,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
242 | 242 | ||
243 | private int m_movementAnimationUpdateCounter = 0; | 243 | private int m_movementAnimationUpdateCounter = 0; |
244 | 244 | ||
245 | private Vector3 m_prevSitOffset; | 245 | public Vector3 PrevSitOffset { get; set; } |
246 | 246 | ||
247 | protected AvatarAppearance m_appearance; | 247 | protected AvatarAppearance m_appearance; |
248 | 248 | ||
@@ -957,7 +957,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
957 | // ParentPosition = part.GetWorldPosition(); | 957 | // ParentPosition = part.GetWorldPosition(); |
958 | ParentID = part.LocalId; | 958 | ParentID = part.LocalId; |
959 | ParentPart = part; | 959 | ParentPart = part; |
960 | m_pos = m_prevSitOffset; | 960 | m_pos = PrevSitOffset; |
961 | // pos = ParentPosition; | 961 | // pos = ParentPosition; |
962 | pos = part.GetWorldPosition(); | 962 | pos = part.GetWorldPosition(); |
963 | } | 963 | } |
@@ -2261,6 +2261,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2261 | 2261 | ||
2262 | if (ParentID != 0) | 2262 | if (ParentID != 0) |
2263 | { | 2263 | { |
2264 | PrevSitOffset = m_pos; // Save sit offset | ||
2264 | SceneObjectPart part = ParentPart; | 2265 | SceneObjectPart part = ParentPart; |
2265 | UnRegisterSeatControls(part.ParentGroup.UUID); | 2266 | UnRegisterSeatControls(part.ParentGroup.UUID); |
2266 | 2267 | ||
@@ -3487,7 +3488,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3487 | cAgent.Appearance = new AvatarAppearance(Appearance); | 3488 | cAgent.Appearance = new AvatarAppearance(Appearance); |
3488 | 3489 | ||
3489 | cAgent.ParentPart = ParentUUID; | 3490 | cAgent.ParentPart = ParentUUID; |
3490 | cAgent.SitOffset = m_pos; | 3491 | cAgent.SitOffset = PrevSitOffset; |
3491 | 3492 | ||
3492 | lock (scriptedcontrols) | 3493 | lock (scriptedcontrols) |
3493 | { | 3494 | { |
@@ -3530,7 +3531,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3530 | CameraLeftAxis = cAgent.LeftAxis; | 3531 | CameraLeftAxis = cAgent.LeftAxis; |
3531 | CameraUpAxis = cAgent.UpAxis; | 3532 | CameraUpAxis = cAgent.UpAxis; |
3532 | ParentUUID = cAgent.ParentPart; | 3533 | ParentUUID = cAgent.ParentPart; |
3533 | m_prevSitOffset = cAgent.SitOffset; | 3534 | PrevSitOffset = cAgent.SitOffset; |
3534 | 3535 | ||
3535 | // When we get to the point of re-computing neighbors everytime this | 3536 | // When we get to the point of re-computing neighbors everytime this |
3536 | // changes, then start using the agent's drawdistance rather than the | 3537 | // changes, then start using the agent's drawdistance rather than the |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs index 52ad538..9557cd0 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs | |||
@@ -67,7 +67,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
67 | IConfigSource configSource = new IniConfigSource(); | 67 | IConfigSource configSource = new IniConfigSource(); |
68 | IConfig config = configSource.AddConfig("Startup"); | 68 | IConfig config = configSource.AddConfig("Startup"); |
69 | config.Set("serverside_object_permissions", true); | 69 | config.Set("serverside_object_permissions", true); |
70 | SceneHelpers.SetupSceneModules(scene, configSource, new object[] { new PermissionsModule() }); | 70 | SceneHelpers.SetupSceneModules(scene, configSource, new object[] { new DefaultPermissionsModule() }); |
71 | IClientAPI client = SceneHelpers.AddScenePresence(scene, userId).ControllingClient; | 71 | IClientAPI client = SceneHelpers.AddScenePresence(scene, userId).ControllingClient; |
72 | 72 | ||
73 | // Turn off the timer on the async sog deleter - we'll crank it by hand for this test. | 73 | // Turn off the timer on the async sog deleter - we'll crank it by hand for this test. |
@@ -112,7 +112,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
112 | IConfigSource configSource = new IniConfigSource(); | 112 | IConfigSource configSource = new IniConfigSource(); |
113 | IConfig config = configSource.AddConfig("Startup"); | 113 | IConfig config = configSource.AddConfig("Startup"); |
114 | config.Set("serverside_object_permissions", true); | 114 | config.Set("serverside_object_permissions", true); |
115 | SceneHelpers.SetupSceneModules(scene, configSource, new object[] { new PermissionsModule() }); | 115 | SceneHelpers.SetupSceneModules(scene, configSource, new object[] { new DefaultPermissionsModule() }); |
116 | IClientAPI client = SceneHelpers.AddScenePresence(scene, userId).ControllingClient; | 116 | IClientAPI client = SceneHelpers.AddScenePresence(scene, userId).ControllingClient; |
117 | 117 | ||
118 | // Turn off the timer on the async sog deleter - we'll crank it by hand for this test. | 118 | // Turn off the timer on the async sog deleter - we'll crank it by hand for this test. |
@@ -195,4 +195,4 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
195 | // Assert.That(retrievedPart, Is.Null); | 195 | // Assert.That(retrievedPart, Is.Null); |
196 | } | 196 | } |
197 | } | 197 | } |
198 | } \ No newline at end of file | 198 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs index c7eaff9..e7a1fe0 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs | |||
@@ -71,7 +71,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
71 | 71 | ||
72 | SceneHelpers.SetupSceneModules( | 72 | SceneHelpers.SetupSceneModules( |
73 | scene, configSource, new object[] | 73 | scene, configSource, new object[] |
74 | { new PermissionsModule(), | 74 | { new DefaultPermissionsModule(), |
75 | new GroupsModule(), | 75 | new GroupsModule(), |
76 | new MockGroupsServicesConnector() }); | 76 | new MockGroupsServicesConnector() }); |
77 | 77 | ||
@@ -82,4 +82,4 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
82 | groupsModule.CreateGroup(client, "group1", "To boldly go", true, UUID.Zero, 5, true, true, true); | 82 | groupsModule.CreateGroup(client, "group1", "To boldly go", true, UUID.Zero, 5, true, true, true); |
83 | } | 83 | } |
84 | } | 84 | } |
85 | } \ No newline at end of file | 85 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs index de4458d..8d94d29 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs | |||
@@ -216,7 +216,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
216 | // We need to set up the permisions module on scene B so that our later use of agent limit to deny | 216 | // We need to set up the permisions module on scene B so that our later use of agent limit to deny |
217 | // QueryAccess won't succeed anyway because administrators are always allowed in and the default | 217 | // QueryAccess won't succeed anyway because administrators are always allowed in and the default |
218 | // IsAdministrator if no permissions module is present is true. | 218 | // IsAdministrator if no permissions module is present is true. |
219 | SceneHelpers.SetupSceneModules(sceneB, config, new object[] { new PermissionsModule(), etmB }); | 219 | SceneHelpers.SetupSceneModules(sceneB, config, new object[] { new DefaultPermissionsModule(), etmB }); |
220 | 220 | ||
221 | // Shared scene modules | 221 | // Shared scene modules |
222 | SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, lscm); | 222 | SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, lscm); |
@@ -381,7 +381,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
381 | // We need to set up the permisions module on scene B so that our later use of agent limit to deny | 381 | // We need to set up the permisions module on scene B so that our later use of agent limit to deny |
382 | // QueryAccess won't succeed anyway because administrators are always allowed in and the default | 382 | // QueryAccess won't succeed anyway because administrators are always allowed in and the default |
383 | // IsAdministrator if no permissions module is present is true. | 383 | // IsAdministrator if no permissions module is present is true. |
384 | SceneHelpers.SetupSceneModules(sceneB, config, new object[] { new PermissionsModule(), etmB }); | 384 | SceneHelpers.SetupSceneModules(sceneB, config, new object[] { new DefaultPermissionsModule(), etmB }); |
385 | 385 | ||
386 | // Shared scene modules | 386 | // Shared scene modules |
387 | SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, lscm); | 387 | SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, lscm); |
@@ -507,4 +507,4 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
507 | // TestHelpers.DisableLogging(); | 507 | // TestHelpers.DisableLogging(); |
508 | } | 508 | } |
509 | } | 509 | } |
510 | } \ No newline at end of file | 510 | } |
diff --git a/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs b/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs index 0c9fdb9..5d10e93 100644 --- a/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs +++ b/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs | |||
@@ -203,8 +203,9 @@ namespace OpenSim.Region.OptionalModules.World.MoneyModule | |||
203 | { | 203 | { |
204 | } | 204 | } |
205 | 205 | ||
206 | public bool ObjectGiveMoney(UUID objectID, UUID fromID, UUID toID, int amount, UUID txn) | 206 | public bool ObjectGiveMoney(UUID objectID, UUID fromID, UUID toID, int amount, UUID txn, out string result) |
207 | { | 207 | { |
208 | result = String.Empty; | ||
208 | string description = String.Format("Object {0} pays {1}", resolveObjectName(objectID), resolveAgentName(toID)); | 209 | string description = String.Format("Object {0} pays {1}", resolveObjectName(objectID), resolveAgentName(toID)); |
209 | 210 | ||
210 | bool give_result = doMoneyTransfer(fromID, toID, amount, 2, description); | 211 | bool give_result = doMoneyTransfer(fromID, toID, amount, 2, description); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 5ea14c7..e8502ac 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -3109,8 +3109,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
3109 | return; | 3109 | return; |
3110 | } | 3110 | } |
3111 | 3111 | ||
3112 | string reason; | ||
3112 | money.ObjectGiveMoney( | 3113 | money.ObjectGiveMoney( |
3113 | m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount,UUID.Zero); | 3114 | m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount,UUID.Zero, out reason); |
3114 | }); | 3115 | }); |
3115 | 3116 | ||
3116 | return 0; | 3117 | return 0; |
@@ -12784,8 +12785,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
12784 | return; | 12785 | return; |
12785 | } | 12786 | } |
12786 | 12787 | ||
12788 | string reason; | ||
12787 | bool result = money.ObjectGiveMoney( | 12789 | bool result = money.ObjectGiveMoney( |
12788 | m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount, txn); | 12790 | m_host.ParentGroup.RootPart.UUID, m_host.ParentGroup.RootPart.OwnerID, toID, amount, txn, out reason); |
12789 | 12791 | ||
12790 | if (result) | 12792 | if (result) |
12791 | { | 12793 | { |
@@ -12793,7 +12795,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
12793 | return; | 12795 | return; |
12794 | } | 12796 | } |
12795 | 12797 | ||
12796 | replydata = "LINDENDOLLAR_INSUFFICIENTFUNDS"; | 12798 | replydata = reason; |
12797 | } | 12799 | } |
12798 | finally | 12800 | finally |
12799 | { | 12801 | { |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs index 26850c4..a2ac9c5 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs | |||
@@ -231,6 +231,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance | |||
231 | ItemID = ScriptTask.ItemID; | 231 | ItemID = ScriptTask.ItemID; |
232 | AssetID = ScriptTask.AssetID; | 232 | AssetID = ScriptTask.AssetID; |
233 | } | 233 | } |
234 | LocalID = part.LocalId; | ||
234 | 235 | ||
235 | PrimName = part.ParentGroup.Name; | 236 | PrimName = part.ParentGroup.Name; |
236 | StartParam = startParam; | 237 | StartParam = startParam; |
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 17243ab..04a4e53 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -1316,13 +1316,21 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1316 | 1316 | ||
1317 | ScriptInstance instance = null; | 1317 | ScriptInstance instance = null; |
1318 | // Create the object record | 1318 | // Create the object record |
1319 | UUID appDomain = assetID; | ||
1320 | |||
1321 | |||
1322 | |||
1319 | lockScriptsForRead(true); | 1323 | lockScriptsForRead(true); |
1320 | if ((!m_Scripts.ContainsKey(itemID)) || | 1324 | if ((!m_Scripts.ContainsKey(itemID)) || |
1321 | (m_Scripts[itemID].AssetID != assetID)) | 1325 | (m_Scripts[itemID].AssetID != assetID)) |
1322 | { | 1326 | { |
1323 | lockScriptsForRead(false); | 1327 | lockScriptsForRead(false); |
1324 | 1328 | instance = new ScriptInstance(this, part, | |
1325 | UUID appDomain = assetID; | 1329 | item, |
1330 | startParam, postOnRez, | ||
1331 | m_MaxScriptQueue); | ||
1332 | |||
1333 | |||
1326 | 1334 | ||
1327 | if (part.ParentGroup.IsAttachment) | 1335 | if (part.ParentGroup.IsAttachment) |
1328 | appDomain = part.ParentGroup.RootPart.UUID; | 1336 | appDomain = part.ParentGroup.RootPart.UUID; |
@@ -1345,9 +1353,39 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1345 | sandbox = AppDomain.CreateDomain( | 1353 | sandbox = AppDomain.CreateDomain( |
1346 | m_Scene.RegionInfo.RegionID.ToString(), | 1354 | m_Scene.RegionInfo.RegionID.ToString(), |
1347 | evidence, appSetup); | 1355 | evidence, appSetup); |
1348 | m_AppDomains[appDomain].AssemblyResolve += | 1356 | if (m_AppDomains.ContainsKey(appDomain)) |
1349 | new ResolveEventHandler( | 1357 | { |
1350 | AssemblyResolver.OnAssemblyResolve); | 1358 | m_AppDomains[appDomain].AssemblyResolve += |
1359 | new ResolveEventHandler( | ||
1360 | AssemblyResolver.OnAssemblyResolve); | ||
1361 | if (m_DomainScripts.ContainsKey(appDomain)) | ||
1362 | { | ||
1363 | m_DomainScripts[appDomain].Add(itemID); | ||
1364 | } | ||
1365 | else | ||
1366 | { | ||
1367 | m_DomainScripts.Add(appDomain, new List<UUID>()); | ||
1368 | m_DomainScripts[appDomain].Add(itemID); | ||
1369 | } | ||
1370 | } | ||
1371 | else | ||
1372 | { | ||
1373 | m_AppDomains.Add(appDomain, sandbox); | ||
1374 | m_AppDomains[appDomain].AssemblyResolve += | ||
1375 | new ResolveEventHandler( | ||
1376 | AssemblyResolver.OnAssemblyResolve); | ||
1377 | if (m_DomainScripts.ContainsKey(appDomain)) | ||
1378 | { | ||
1379 | m_DomainScripts[appDomain].Add(itemID); | ||
1380 | } | ||
1381 | else | ||
1382 | { | ||
1383 | m_DomainScripts.Add(appDomain, new List<UUID>()); | ||
1384 | m_DomainScripts[appDomain].Add(itemID); | ||
1385 | } | ||
1386 | |||
1387 | } | ||
1388 | |||
1351 | } | 1389 | } |
1352 | else | 1390 | else |
1353 | { | 1391 | { |
@@ -1373,12 +1411,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1373 | return false; | 1411 | return false; |
1374 | } | 1412 | } |
1375 | } | 1413 | } |
1376 | m_DomainScripts[appDomain].Add(itemID); | 1414 | |
1377 | |||
1378 | instance = new ScriptInstance(this, part, | ||
1379 | item, | ||
1380 | startParam, postOnRez, | ||
1381 | m_MaxScriptQueue); | ||
1382 | 1415 | ||
1383 | instance.Load(m_AppDomains[appDomain], assembly, stateSource); | 1416 | instance.Load(m_AppDomains[appDomain], assembly, stateSource); |
1384 | // m_log.DebugFormat( | 1417 | // m_log.DebugFormat( |
@@ -1502,6 +1535,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1502 | if (handlerObjectRemoved != null) | 1535 | if (handlerObjectRemoved != null) |
1503 | { | 1536 | { |
1504 | SceneObjectPart part = m_Scene.GetSceneObjectPart(localID); | 1537 | SceneObjectPart part = m_Scene.GetSceneObjectPart(localID); |
1538 | if (part != null) | ||
1505 | handlerObjectRemoved(part.UUID); | 1539 | handlerObjectRemoved(part.UUID); |
1506 | } | 1540 | } |
1507 | 1541 | ||