* Fix bug in r7162 where avatars could not move
* Was caused by the lack of a local id. Local ids are now given from the same sequence as prims, rather than a separate one * I don't believe this will cause any problems, but please revert to a separate sequence if it does0.6.0-stable
parent
ba1d9ca26b
commit
4ace67a81d
|
@ -72,14 +72,6 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
public InnerScene m_innerScene;
|
public InnerScene m_innerScene;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The last allocated local prim id. When a new local id is requested, the next number in the sequence is
|
|
||||||
/// dispenced.
|
|
||||||
/// </summary>
|
|
||||||
private uint m_lastAllocatedLocalId = 720000;
|
|
||||||
|
|
||||||
private readonly Mutex _primAllocateMutex = new Mutex(false);
|
|
||||||
|
|
||||||
private int m_timePhase = 24;
|
private int m_timePhase = 24;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1618,21 +1610,6 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)");
|
m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns a new unallocated local primitive ID
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>A brand new local primitive ID</returns>
|
|
||||||
protected internal uint AllocateLocalPrimId()
|
|
||||||
{
|
|
||||||
uint myID;
|
|
||||||
|
|
||||||
_primAllocateMutex.WaitOne();
|
|
||||||
myID = ++m_lastAllocatedLocalId;
|
|
||||||
_primAllocateMutex.ReleaseMutex();
|
|
||||||
|
|
||||||
return myID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Vector3 GetNewRezLocation(Vector3 RayStart, Vector3 RayEnd, UUID RayTargetID, Quaternion rot, byte bypassRayCast, byte RayEndIsIntersection, bool frontFacesOnly, Vector3 scale, bool FaceCenter)
|
public Vector3 GetNewRezLocation(Vector3 RayStart, Vector3 RayEnd, UUID RayTargetID, Quaternion rot, byte bypassRayCast, byte RayEndIsIntersection, bool frontFacesOnly, Vector3 scale, bool FaceCenter)
|
||||||
{
|
{
|
||||||
Vector3 pos = Vector3.Zero;
|
Vector3 pos = Vector3.Zero;
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Threading;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using log4net;
|
using log4net;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
|
@ -48,6 +49,14 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The last allocated local prim id. When a new local id is requested, the next number in the sequence is
|
||||||
|
/// dispensed.
|
||||||
|
/// </summary>
|
||||||
|
private uint m_lastAllocatedLocalId = 720000;
|
||||||
|
|
||||||
|
private readonly Mutex _primAllocateMutex = new Mutex(false);
|
||||||
|
|
||||||
private readonly ClientManager m_clientManager = new ClientManager();
|
private readonly ClientManager m_clientManager = new ClientManager();
|
||||||
|
|
||||||
public ClientManager ClientManager
|
public ClientManager ClientManager
|
||||||
|
@ -213,6 +222,21 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns a new unallocated local ID
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>A brand new local ID</returns>
|
||||||
|
protected internal uint AllocateLocalId()
|
||||||
|
{
|
||||||
|
uint myID;
|
||||||
|
|
||||||
|
_primAllocateMutex.WaitOne();
|
||||||
|
myID = ++m_lastAllocatedLocalId;
|
||||||
|
_primAllocateMutex.ReleaseMutex();
|
||||||
|
|
||||||
|
return myID;
|
||||||
|
}
|
||||||
|
|
||||||
public virtual T RequestModuleInterface<T>()
|
public virtual T RequestModuleInterface<T>()
|
||||||
{
|
{
|
||||||
return default(T);
|
return default(T);
|
||||||
|
|
|
@ -567,7 +567,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
RegionHandle = m_scene.RegionInfo.RegionHandle;
|
RegionHandle = m_scene.RegionInfo.RegionHandle;
|
||||||
|
|
||||||
m_rootPart.ParentID = 0;
|
m_rootPart.ParentID = 0;
|
||||||
m_rootPart.LocalId = m_scene.AllocateLocalPrimId();
|
m_rootPart.LocalId = m_scene.AllocateLocalId();
|
||||||
|
|
||||||
// No need to lock here since the object isn't yet in a scene
|
// No need to lock here since the object isn't yet in a scene
|
||||||
foreach (SceneObjectPart part in m_parts.Values)
|
foreach (SceneObjectPart part in m_parts.Values)
|
||||||
|
@ -575,7 +575,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
if (Object.ReferenceEquals(part, m_rootPart))
|
if (Object.ReferenceEquals(part, m_rootPart))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
part.LocalId = m_scene.AllocateLocalPrimId();
|
part.LocalId = m_scene.AllocateLocalId();
|
||||||
part.ParentID = m_rootPart.LocalId;
|
part.ParentID = m_rootPart.LocalId;
|
||||||
//m_log.DebugFormat("[SCENE]: Given local id {0} to part {1}, linknum {2}, parent {3} {4}", part.LocalId, part.UUID, part.LinkNum, part.ParentID, part.ParentUUID);
|
//m_log.DebugFormat("[SCENE]: Given local id {0} to part {1}, linknum {2}, parent {3} {4}", part.LocalId, part.UUID, part.LinkNum, part.ParentID, part.ParentUUID);
|
||||||
}
|
}
|
||||||
|
@ -1394,7 +1394,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <param name="cGroupID"></param>
|
/// <param name="cGroupID"></param>
|
||||||
public void CopyRootPart(SceneObjectPart part, UUID cAgentID, UUID cGroupID, bool userExposed)
|
public void CopyRootPart(SceneObjectPart part, UUID cAgentID, UUID cGroupID, bool userExposed)
|
||||||
{
|
{
|
||||||
SceneObjectPart newPart = part.Copy(m_scene.AllocateLocalPrimId(), OwnerID, GroupID, m_parts.Count, userExposed);
|
SceneObjectPart newPart = part.Copy(m_scene.AllocateLocalId(), OwnerID, GroupID, m_parts.Count, userExposed);
|
||||||
newPart.SetParent(this);
|
newPart.SetParent(this);
|
||||||
|
|
||||||
lock (m_parts)
|
lock (m_parts)
|
||||||
|
@ -1514,7 +1514,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <param name="cGroupID"></param>
|
/// <param name="cGroupID"></param>
|
||||||
public void CopyPart(SceneObjectPart part, UUID cAgentID, UUID cGroupID, bool userExposed)
|
public void CopyPart(SceneObjectPart part, UUID cAgentID, UUID cGroupID, bool userExposed)
|
||||||
{
|
{
|
||||||
SceneObjectPart newPart = part.Copy(m_scene.AllocateLocalPrimId(), OwnerID, GroupID, m_parts.Count, userExposed);
|
SceneObjectPart newPart = part.Copy(m_scene.AllocateLocalId(), OwnerID, GroupID, m_parts.Count, userExposed);
|
||||||
newPart.SetParent(this);
|
newPart.SetParent(this);
|
||||||
|
|
||||||
lock (m_parts)
|
lock (m_parts)
|
||||||
|
@ -2676,7 +2676,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
scriptPosTarget waypoint = new scriptPosTarget();
|
scriptPosTarget waypoint = new scriptPosTarget();
|
||||||
waypoint.targetPos = target;
|
waypoint.targetPos = target;
|
||||||
waypoint.tolerance = tolerance;
|
waypoint.tolerance = tolerance;
|
||||||
uint handle = m_scene.AllocateLocalPrimId();
|
uint handle = m_scene.AllocateLocalId();
|
||||||
lock (m_targets)
|
lock (m_targets)
|
||||||
{
|
{
|
||||||
m_targets.Add(handle, waypoint);
|
m_targets.Add(handle, waypoint);
|
||||||
|
|
|
@ -492,6 +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();
|
||||||
|
|
||||||
IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>();
|
IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>();
|
||||||
if (gm != null)
|
if (gm != null)
|
||||||
|
|
Loading…
Reference in New Issue