diff options
author | Melanie Thielker | 2008-08-19 15:09:35 +0000 |
---|---|---|
committer | Melanie Thielker | 2008-08-19 15:09:35 +0000 |
commit | e5cdba1cb49346308fb0e9699c3a6386b487d97b (patch) | |
tree | cc299b3bae3d221887522294bfe031985db93740 /OpenSim/Region/Environment/Scenes | |
parent | Update svn properties, minor formatting cleanup. (diff) | |
download | opensim-SC-e5cdba1cb49346308fb0e9699c3a6386b487d97b.zip opensim-SC-e5cdba1cb49346308fb0e9699c3a6386b487d97b.tar.gz opensim-SC-e5cdba1cb49346308fb0e9699c3a6386b487d97b.tar.bz2 opensim-SC-e5cdba1cb49346308fb0e9699c3a6386b487d97b.tar.xz |
Fix region crossings and access to inventory after changing regions within
the same simulator
Diffstat (limited to 'OpenSim/Region/Environment/Scenes')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 17 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | 5 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/ScenePresence.cs | 7 |
3 files changed, 25 insertions, 4 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 4564cf1..7d55f7e 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -3860,5 +3860,22 @@ namespace OpenSim.Region.Environment.Scenes | |||
3860 | client.SendLayerData(patchX, patchY, Heightmap.GetFloatsSerialised()); | 3860 | client.SendLayerData(patchX, patchY, Heightmap.GetFloatsSerialised()); |
3861 | } | 3861 | } |
3862 | 3862 | ||
3863 | public void SetRootAgentScene(LLUUID agentID) | ||
3864 | { | ||
3865 | IInventoryModule inv = RequestModuleInterface<IInventoryModule>(); | ||
3866 | if(inv == null) | ||
3867 | return; | ||
3868 | |||
3869 | inv.SetRootAgentScene(agentID, this); | ||
3870 | } | ||
3871 | |||
3872 | public bool NeedSceneCacheClear(LLUUID agentID) | ||
3873 | { | ||
3874 | IInventoryModule inv = RequestModuleInterface<IInventoryModule>(); | ||
3875 | if(inv == null) | ||
3876 | return true; | ||
3877 | |||
3878 | return inv.NeedSceneCacheClear(agentID, this); | ||
3879 | } | ||
3863 | } | 3880 | } |
3864 | } | 3881 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs index adad7d3..f1af15f 100644 --- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs | |||
@@ -653,9 +653,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
653 | SendCloseChildAgentConnections(avatar.UUID,avatar.GetKnownRegionList()); | 653 | SendCloseChildAgentConnections(avatar.UUID,avatar.GetKnownRegionList()); |
654 | } | 654 | } |
655 | // if (teleport success) // seems to be always success here | 655 | // if (teleport success) // seems to be always success here |
656 | // the user may change thier profile information in other region, | 656 | // the user may change their profile information in other region, |
657 | // so the userinfo in UserProfileCache is not reliable any more, delete it | 657 | // so the userinfo in UserProfileCache is not reliable any more, delete it |
658 | m_commsProvider.UserProfileCacheService.RemoveUser(avatar.UUID); | 658 | if (avatar.Scene.NeedSceneCacheClear(avatar.UUID)) |
659 | m_commsProvider.UserProfileCacheService.RemoveUser(avatar.UUID); | ||
659 | m_log.InfoFormat("User {0} is going to another region, profile cache removed", avatar.UUID); | 660 | m_log.InfoFormat("User {0} is going to another region, profile cache removed", avatar.UUID); |
660 | } | 661 | } |
661 | else | 662 | else |
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 8059a78..706fd61 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -606,6 +606,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
606 | /// </summary> | 606 | /// </summary> |
607 | public void MakeRootAgent(LLVector3 pos, bool isFlying) | 607 | public void MakeRootAgent(LLVector3 pos, bool isFlying) |
608 | { | 608 | { |
609 | m_scene.SetRootAgentScene(m_uuid); | ||
610 | |||
609 | IAvatarFactory ava = m_scene.RequestModuleInterface<IAvatarFactory>(); | 611 | IAvatarFactory ava = m_scene.RequestModuleInterface<IAvatarFactory>(); |
610 | if (ava != null) | 612 | if (ava != null) |
611 | { | 613 | { |
@@ -2010,9 +2012,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
2010 | 2012 | ||
2011 | m_scene.SendKillObject(m_localId); | 2013 | m_scene.SendKillObject(m_localId); |
2012 | m_scene.NotifyMyCoarseLocationChange(); | 2014 | m_scene.NotifyMyCoarseLocationChange(); |
2013 | // the user may change thier profile information in other region, | 2015 | // the user may change their profile information in other region, |
2014 | // so the userinfo in UserProfileCache is not reliable any more, delete it | 2016 | // so the userinfo in UserProfileCache is not reliable any more, delete it |
2015 | m_scene.CommsManager.UserProfileCacheService.RemoveUser(UUID); | 2017 | if(m_scene.NeedSceneCacheClear(UUID)) |
2018 | m_scene.CommsManager.UserProfileCacheService.RemoveUser(UUID); | ||
2016 | m_log.InfoFormat("User {0} is going to another region, profile cache removed", UUID); | 2019 | m_log.InfoFormat("User {0} is going to another region, profile cache removed", UUID); |
2017 | } | 2020 | } |
2018 | else | 2021 | else |