diff options
author | Teravus Ovares (Dan Olivares) | 2009-09-08 04:43:00 -0400 |
---|---|---|
committer | Teravus Ovares (Dan Olivares) | 2009-09-08 04:43:00 -0400 |
commit | 9a06056c9afee3f8c99c0a9e9513e5274bfcb45e (patch) | |
tree | 9690733d4eef51fac5bdfbcf58b62bc11b010ae1 | |
parent | Merge branch 'master' of ssh://MyConnection/var/git/opensim (diff) | |
download | opensim-SC_OLD-9a06056c9afee3f8c99c0a9e9513e5274bfcb45e.zip opensim-SC_OLD-9a06056c9afee3f8c99c0a9e9513e5274bfcb45e.tar.gz opensim-SC_OLD-9a06056c9afee3f8c99c0a9e9513e5274bfcb45e.tar.bz2 opensim-SC_OLD-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.
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 36 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 17 |
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 | ||