Merge branch 'master' into careminster
commit
488ec59408
|
@ -65,13 +65,26 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal struct ScopedRegionPosition
|
||||||
|
{
|
||||||
|
public UUID m_scopeID;
|
||||||
|
public ulong m_regionHandle;
|
||||||
|
public ScopedRegionPosition(UUID scopeID, ulong handle)
|
||||||
|
{
|
||||||
|
m_scopeID = scopeID;
|
||||||
|
m_regionHandle = handle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private ExpiringCache<ScopedRegionUUID, GridRegion> m_UUIDCache;
|
private ExpiringCache<ScopedRegionUUID, GridRegion> m_UUIDCache;
|
||||||
private ExpiringCache<ScopedRegionName, ScopedRegionUUID> m_NameCache;
|
private ExpiringCache<ScopedRegionName, ScopedRegionUUID> m_NameCache;
|
||||||
|
private ExpiringCache<ScopedRegionPosition, GridRegion> m_PositionCache;
|
||||||
|
|
||||||
public RegionInfoCache()
|
public RegionInfoCache()
|
||||||
{
|
{
|
||||||
m_UUIDCache = new ExpiringCache<ScopedRegionUUID, GridRegion>();
|
m_UUIDCache = new ExpiringCache<ScopedRegionUUID, GridRegion>();
|
||||||
m_NameCache = new ExpiringCache<ScopedRegionName, ScopedRegionUUID>();
|
m_NameCache = new ExpiringCache<ScopedRegionName, ScopedRegionUUID>();
|
||||||
|
m_PositionCache = new ExpiringCache<ScopedRegionPosition, GridRegion>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Cache(GridRegion rinfo)
|
public void Cache(GridRegion rinfo)
|
||||||
|
@ -96,6 +109,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
|
||||||
{
|
{
|
||||||
ScopedRegionName name = new ScopedRegionName(scopeID,rinfo.RegionName);
|
ScopedRegionName name = new ScopedRegionName(scopeID,rinfo.RegionName);
|
||||||
m_NameCache.AddOrUpdate(name, id, CACHE_EXPIRATION_SECONDS);
|
m_NameCache.AddOrUpdate(name, id, CACHE_EXPIRATION_SECONDS);
|
||||||
|
|
||||||
|
ScopedRegionPosition pos = new ScopedRegionPosition(scopeID, rinfo.RegionHandle);
|
||||||
|
m_PositionCache.AddOrUpdate(pos, rinfo, CACHE_EXPIRATION_SECONDS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,6 +130,22 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GridRegion Get(UUID scopeID, ulong handle, out bool inCache)
|
||||||
|
{
|
||||||
|
inCache = false;
|
||||||
|
|
||||||
|
GridRegion rinfo = null;
|
||||||
|
ScopedRegionPosition pos = new ScopedRegionPosition(scopeID, handle);
|
||||||
|
if (m_PositionCache.TryGetValue(pos, out rinfo))
|
||||||
|
{
|
||||||
|
inCache = true;
|
||||||
|
return rinfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public GridRegion Get(UUID scopeID, string name, out bool inCache)
|
public GridRegion Get(UUID scopeID, string name, out bool inCache)
|
||||||
{
|
{
|
||||||
inCache = false;
|
inCache = false;
|
||||||
|
|
|
@ -186,10 +186,16 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
|
||||||
|
|
||||||
public GridRegion GetRegionByPosition(UUID scopeID, int x, int y)
|
public GridRegion GetRegionByPosition(UUID scopeID, int x, int y)
|
||||||
{
|
{
|
||||||
GridRegion rinfo = m_LocalGridService.GetRegionByPosition(scopeID, x, y);
|
bool inCache = false;
|
||||||
|
GridRegion rinfo = m_RegionInfoCache.Get(scopeID, Util.UIntsToLong((uint)x, (uint)y), out inCache);
|
||||||
|
if (inCache)
|
||||||
|
return rinfo;
|
||||||
|
|
||||||
|
rinfo = m_LocalGridService.GetRegionByPosition(scopeID, x, y);
|
||||||
if (rinfo == null)
|
if (rinfo == null)
|
||||||
rinfo = m_RemoteGridService.GetRegionByPosition(scopeID, x, y);
|
rinfo = m_RemoteGridService.GetRegionByPosition(scopeID, x, y);
|
||||||
|
|
||||||
|
m_RegionInfoCache.Cache(rinfo);
|
||||||
return rinfo;
|
return rinfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -290,7 +290,8 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
ParcelFlags.AllowGroupScripts |
|
ParcelFlags.AllowGroupScripts |
|
||||||
ParcelFlags.CreateGroupObjects |
|
ParcelFlags.CreateGroupObjects |
|
||||||
ParcelFlags.AllowAPrimitiveEntry |
|
ParcelFlags.AllowAPrimitiveEntry |
|
||||||
ParcelFlags.AllowGroupObjectEntry);
|
ParcelFlags.AllowGroupObjectEntry |
|
||||||
|
ParcelFlags.AllowFly);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandSetSale))
|
if (m_scene.Permissions.CanEditParcelProperties(remote_client.AgentId, this, GroupPowers.LandSetSale))
|
||||||
|
|
|
@ -1604,9 +1604,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
dupe.GroupPosition = GroupPosition;
|
dupe.GroupPosition = GroupPosition;
|
||||||
dupe.OffsetPosition = OffsetPosition;
|
dupe.OffsetPosition = OffsetPosition;
|
||||||
dupe.RotationOffset = RotationOffset;
|
dupe.RotationOffset = RotationOffset;
|
||||||
dupe.Velocity = new Vector3(0, 0, 0);
|
dupe.Velocity = Velocity;
|
||||||
dupe.Acceleration = new Vector3(0, 0, 0);
|
dupe.Acceleration = Acceleration;
|
||||||
dupe.AngularVelocity = new Vector3(0, 0, 0);
|
dupe.AngularVelocity = AngularVelocity;
|
||||||
dupe.Flags = Flags;
|
dupe.Flags = Flags;
|
||||||
|
|
||||||
dupe.OwnershipCost = OwnershipCost;
|
dupe.OwnershipCost = OwnershipCost;
|
||||||
|
|
Loading…
Reference in New Issue