Restore the independent LocalID numbering for avatars. Fixes an issue where

it becomes impossible to cross back into a region you came from, or freeze
several seconds after region crossings.
0.6.1-post-fixes
Melanie Thielker 2008-11-10 20:58:24 +00:00
parent b044a0f139
commit 58e74b554f
3 changed files with 13 additions and 1 deletions

View File

@ -45,6 +45,7 @@ namespace OpenSim.Framework
public interface IScene public interface IScene
{ {
RegionInfo RegionInfo { get; } RegionInfo RegionInfo { get; }
uint NextAvatarLocalId { get; }
RegionStatus Region_Status { get; set; } RegionStatus Region_Status { get; set; }
ClientManager ClientManager { get; } ClientManager ClientManager { get; }

View File

@ -80,6 +80,7 @@ namespace OpenSim.Region.Environment.Scenes
get { return m_eventManager; } get { return m_eventManager; }
} }
protected SceneExternalChecks m_externalChecks; protected SceneExternalChecks m_externalChecks;
public SceneExternalChecks ExternalChecks public SceneExternalChecks ExternalChecks
{ {
@ -88,6 +89,8 @@ namespace OpenSim.Region.Environment.Scenes
protected string m_datastore; protected string m_datastore;
private uint m_nextAvatarLocalId = 8880000;
private AssetCache m_assetCache; private AssetCache m_assetCache;
public AssetCache AssetCache public AssetCache AssetCache
@ -161,6 +164,11 @@ namespace OpenSim.Region.Environment.Scenes
get { return m_regInfo; } get { return m_regInfo; }
} }
public uint NextAvatarLocalId
{
get { return m_nextAvatarLocalId++; }
}
#region admin stuff #region admin stuff
/// <summary> /// <summary>

View File

@ -492,7 +492,7 @@ namespace OpenSim.Region.Environment.Scenes
m_scene = world; m_scene = world;
m_uuid = client.AgentId; m_uuid = client.AgentId;
m_regionInfo = reginfo; m_regionInfo = reginfo;
m_localId = m_scene.AllocateLocalId(); m_localId = m_scene.NextAvatarLocalId;
IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>(); IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>();
if (gm != null) if (gm != null)
@ -2215,6 +2215,8 @@ namespace OpenSim.Region.Environment.Scenes
CrossAttachmentsIntoNewRegion(neighbourHandle, true); CrossAttachmentsIntoNewRegion(neighbourHandle, true);
// m_scene.SendKillObject(m_localId);
m_scene.NotifyMyCoarseLocationChange(); m_scene.NotifyMyCoarseLocationChange();
// the user may change their profile information in other region, // the user may change their profile information in other region,
// so the userinfo in UserProfileCache is not reliable any more, delete it // so the userinfo in UserProfileCache is not reliable any more, delete it
@ -2264,6 +2266,7 @@ namespace OpenSim.Region.Environment.Scenes
/// </summary> /// </summary>
public void ChildAgentDataUpdate(ChildAgentDataUpdate cAgentData, uint tRegionX, uint tRegionY, uint rRegionX, uint rRegionY) public void ChildAgentDataUpdate(ChildAgentDataUpdate cAgentData, uint tRegionX, uint tRegionY, uint rRegionX, uint rRegionY)
{ {
//
if (!IsChildAgent) if (!IsChildAgent)
return; return;