aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorTeravus Ovares (Dan Olivares)2009-09-08 04:43:00 -0400
committerTeravus Ovares (Dan Olivares)2009-09-08 04:43:00 -0400
commit9a06056c9afee3f8c99c0a9e9513e5274bfcb45e (patch)
tree9690733d4eef51fac5bdfbcf58b62bc11b010ae1 /OpenSim/Region
parentMerge branch 'master' of ssh://MyConnection/var/git/opensim (diff)
downloadopensim-SC-9a06056c9afee3f8c99c0a9e9513e5274bfcb45e.zip
opensim-SC-9a06056c9afee3f8c99c0a9e9513e5274bfcb45e.tar.gz
opensim-SC-9a06056c9afee3f8c99c0a9e9513e5274bfcb45e.tar.bz2
opensim-SC-9a06056c9afee3f8c99c0a9e9513e5274bfcb45e.tar.xz
* Fixes a 'take object from mega region' and rez it in a regular region.. and have it appear 5 regions over bug by limiting the stored position in the asset to Constants.RegionSize. The stored position in the asset gets overwritten anyway by the rezzing routine, but at least this way, there's no chance of the objects border crossing before the rezzing routine finishes.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs36
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs17
2 files changed, 52 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index f638386..4ea283f 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1620,8 +1620,24 @@ namespace OpenSim.Region.Framework.Scenes
1620 { 1620 {
1621 UUID assetID = UUID.Zero; 1621 UUID assetID = UUID.Zero;
1622 1622
1623 Vector3 inventoryStoredPosition = new Vector3
1624 (((objectGroup.AbsolutePosition.X > (int)Constants.RegionSize)
1625 ? 250
1626 : objectGroup.AbsolutePosition.X)
1627 ,
1628 (objectGroup.AbsolutePosition.X > (int)Constants.RegionSize)
1629 ? 250
1630 : objectGroup.AbsolutePosition.X,
1631 objectGroup.AbsolutePosition.Z);
1632
1633 Vector3 originalPosition = objectGroup.AbsolutePosition;
1634
1635 objectGroup.AbsolutePosition = inventoryStoredPosition;
1636
1623 string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(objectGroup); 1637 string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(objectGroup);
1624 1638
1639 objectGroup.AbsolutePosition = originalPosition;
1640
1625 // Get the user info of the item destination 1641 // Get the user info of the item destination
1626 // 1642 //
1627 UUID userID = UUID.Zero; 1643 UUID userID = UUID.Zero;
@@ -1683,6 +1699,8 @@ namespace OpenSim.Region.Framework.Scenes
1683 { 1699 {
1684 // Deleting someone else's item 1700 // Deleting someone else's item
1685 // 1701 //
1702
1703
1686 if (remoteClient == null || 1704 if (remoteClient == null ||
1687 objectGroup.OwnerID != remoteClient.AgentId) 1705 objectGroup.OwnerID != remoteClient.AgentId)
1688 { 1706 {
@@ -1857,8 +1875,24 @@ namespace OpenSim.Region.Framework.Scenes
1857 itemID = UUID.Zero; 1875 itemID = UUID.Zero;
1858 if (grp != null) 1876 if (grp != null)
1859 { 1877 {
1878 Vector3 inventoryStoredPosition = new Vector3
1879 (((grp.AbsolutePosition.X > (int)Constants.RegionSize)
1880 ? 250
1881 : grp.AbsolutePosition.X)
1882 ,
1883 (grp.AbsolutePosition.X > (int)Constants.RegionSize)
1884 ? 250
1885 : grp.AbsolutePosition.X,
1886 grp.AbsolutePosition.Z);
1887
1888 Vector3 originalPosition = grp.AbsolutePosition;
1889
1890 grp.AbsolutePosition = inventoryStoredPosition;
1891
1860 string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(grp); 1892 string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(grp);
1861 1893
1894 grp.AbsolutePosition = originalPosition;
1895
1862 AssetBase asset = CreateAsset( 1896 AssetBase asset = CreateAsset(
1863 grp.GetPartName(grp.LocalId), 1897 grp.GetPartName(grp.LocalId),
1864 grp.GetPartDescription(grp.LocalId), 1898 grp.GetPartDescription(grp.LocalId),
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 3b91dd0..d43a7e2 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -4256,7 +4256,24 @@ namespace OpenSim.Region.Framework.Scenes
4256 break; 4256 break;
4257 4257
4258 case 2: // Sell a copy 4258 case 2: // Sell a copy
4259
4260
4261 Vector3 inventoryStoredPosition = new Vector3
4262 (((group.AbsolutePosition.X > (int)Constants.RegionSize)
4263 ? 250
4264 : group.AbsolutePosition.X)
4265 ,
4266 (group.AbsolutePosition.X > (int)Constants.RegionSize)
4267 ? 250
4268 : group.AbsolutePosition.X,
4269 group.AbsolutePosition.Z);
4270
4271 Vector3 originalPosition = group.AbsolutePosition;
4272
4273 group.AbsolutePosition = inventoryStoredPosition;
4274
4259 string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(group); 4275 string sceneObjectXml = SceneObjectSerializer.ToOriginalXmlFormat(group);
4276 group.AbsolutePosition = originalPosition;
4260 4277
4261 uint perms=group.GetEffectivePermissions(); 4278 uint perms=group.GetEffectivePermissions();
4262 4279