Merge branch 'ubitwork' into avination
commit
5cbf7b3997
|
@ -112,7 +112,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
private long timeLastChanged = 0;
|
private long timeLastChanged = 0;
|
||||||
private long m_maxPersistTime = 0;
|
private long m_maxPersistTime = 0;
|
||||||
private long m_minPersistTime = 0;
|
private long m_minPersistTime = 0;
|
||||||
private Random m_rand;
|
// private Random m_rand;
|
||||||
private List<ScenePresence> m_linkedAvatars = new List<ScenePresence>();
|
private List<ScenePresence> m_linkedAvatars = new List<ScenePresence>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -130,6 +130,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
if (value)
|
if (value)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (m_isBackedUp)
|
if (m_isBackedUp)
|
||||||
{
|
{
|
||||||
m_scene.SceneGraph.FireChangeBackup(this);
|
m_scene.SceneGraph.FireChangeBackup(this);
|
||||||
|
@ -139,19 +140,21 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
timeFirstChanged = DateTime.Now.Ticks;
|
timeFirstChanged = DateTime.Now.Ticks;
|
||||||
if (m_rootPart != null && m_rootPart.UUID != null && m_scene != null)
|
if (m_rootPart != null && m_rootPart.UUID != null && m_scene != null)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
if (m_rand == null)
|
if (m_rand == null)
|
||||||
{
|
{
|
||||||
byte[] val = new byte[16];
|
byte[] val = new byte[16];
|
||||||
m_rootPart.UUID.ToBytes(val, 0);
|
m_rootPart.UUID.ToBytes(val, 0);
|
||||||
m_rand = new Random(BitConverter.ToInt32(val, 0));
|
m_rand = new Random(BitConverter.ToInt32(val, 0));
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
if (m_scene.GetRootAgentCount() == 0)
|
if (m_scene.GetRootAgentCount() == 0)
|
||||||
{
|
{
|
||||||
//If the region is empty, this change has been made by an automated process
|
//If the region is empty, this change has been made by an automated process
|
||||||
//and thus we delay the persist time by a random amount between 1.5 and 2.5.
|
//and thus we delay the persist time by a random amount between 1.5 and 2.5.
|
||||||
|
|
||||||
float factor = 1.5f + (float)(m_rand.NextDouble());
|
// float factor = 1.5f + (float)(m_rand.NextDouble());
|
||||||
|
float factor = 2.0f;
|
||||||
m_maxPersistTime = (long)((float)m_scene.m_persistAfter * factor);
|
m_maxPersistTime = (long)((float)m_scene.m_persistAfter * factor);
|
||||||
m_minPersistTime = (long)((float)m_scene.m_dontPersistBefore * factor);
|
m_minPersistTime = (long)((float)m_scene.m_dontPersistBefore * factor);
|
||||||
}
|
}
|
||||||
|
@ -159,8 +162,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
//If the region is not empty, we want to obey the minimum and maximum persist times
|
//If the region is not empty, we want to obey the minimum and maximum persist times
|
||||||
//but add a random factor so we stagger the object persistance a little
|
//but add a random factor so we stagger the object persistance a little
|
||||||
m_maxPersistTime = (long)((float)m_scene.m_persistAfter * (1.0d - (m_rand.NextDouble() / 5.0d))); //Multiply by 1.0-1.5
|
// m_maxPersistTime = (long)((float)m_scene.m_persistAfter * (1.0d - (m_rand.NextDouble() / 5.0d))); //Multiply by 1.0-1.5
|
||||||
m_minPersistTime = (long)((float)m_scene.m_dontPersistBefore * (1.0d + (m_rand.NextDouble() / 2.0d))); //Multiply by 0.8-1.0
|
// m_minPersistTime = (long)((float)m_scene.m_dontPersistBefore * (1.0d + (m_rand.NextDouble() / 2.0d))); //Multiply by 0.8-1.0
|
||||||
|
m_maxPersistTime = m_scene.m_persistAfter;
|
||||||
|
m_minPersistTime = m_scene.m_dontPersistBefore;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,27 +121,14 @@ namespace OpenSim.Region.OptionalModules
|
||||||
|
|
||||||
private bool CanObjectEnter(UUID objectID, bool enteringRegion, Vector3 newPoint, Scene scene)
|
private bool CanObjectEnter(UUID objectID, bool enteringRegion, Vector3 newPoint, Scene scene)
|
||||||
{
|
{
|
||||||
if ((newPoint.X > 257f || newPoint.X < -1f || newPoint.Y > 257f || newPoint.Y < -1f))
|
if (newPoint.X < -1f || newPoint.X > (float)(Constants.RegionSize + 1) ||
|
||||||
|
newPoint.Y < -1f || newPoint.Y > (float)(Constants.RegionSize + 1))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
SceneObjectPart obj = scene.GetSceneObjectPart(objectID);
|
SceneObjectPart obj = scene.GetSceneObjectPart(objectID);
|
||||||
Vector3 oldPoint = obj.GroupPosition;
|
|
||||||
int objectCount = obj.ParentGroup.PrimCount;
|
|
||||||
ILandObject oldParcel = scene.LandChannel.GetLandObject(oldPoint.X, oldPoint.Y);
|
|
||||||
ILandObject newParcel = scene.LandChannel.GetLandObject(newPoint.X, newPoint.Y);
|
|
||||||
|
|
||||||
if (newParcel == null)
|
if (obj == null)
|
||||||
return true;
|
return false;
|
||||||
|
|
||||||
int usedPrims = newParcel.PrimCounts.Total;
|
|
||||||
int simulatorCapacity = newParcel.GetSimulatorMaxPrimCount();
|
|
||||||
|
|
||||||
// The prim hasn't crossed a region boundry so we don't need to worry
|
|
||||||
// about prim counts here
|
|
||||||
if(oldParcel.Equals(newParcel))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prim counts are determined by the location of the root prim. if we're
|
// Prim counts are determined by the location of the root prim. if we're
|
||||||
// moving a child prim, just let it pass
|
// moving a child prim, just let it pass
|
||||||
|
@ -150,6 +137,25 @@ namespace OpenSim.Region.OptionalModules
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ILandObject newParcel = scene.LandChannel.GetLandObject(newPoint.X, newPoint.Y);
|
||||||
|
|
||||||
|
if (newParcel == null)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
Vector3 oldPoint = obj.GroupPosition;
|
||||||
|
ILandObject oldParcel = scene.LandChannel.GetLandObject(oldPoint.X, oldPoint.Y);
|
||||||
|
|
||||||
|
// The prim hasn't crossed a region boundry so we don't need to worry
|
||||||
|
// about prim counts here
|
||||||
|
if(oldParcel != null && oldParcel.Equals(newParcel))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int objectCount = obj.ParentGroup.PrimCount;
|
||||||
|
int usedPrims = newParcel.PrimCounts.Total;
|
||||||
|
int simulatorCapacity = newParcel.GetSimulatorMaxPrimCount();
|
||||||
|
|
||||||
// TODO: Add Special Case here for temporary prims
|
// TODO: Add Special Case here for temporary prims
|
||||||
|
|
||||||
if(objectCount + usedPrims > simulatorCapacity)
|
if(objectCount + usedPrims > simulatorCapacity)
|
||||||
|
|
|
@ -1403,8 +1403,8 @@ namespace OpenSim.Region.Physics.OdePlugin
|
||||||
|
|
||||||
if (vertexCount == 0 || indexCount == 0)
|
if (vertexCount == 0 || indexCount == 0)
|
||||||
{
|
{
|
||||||
m_log.WarnFormat("[PHYSICS]: Invalid mesh data on OdePrim {0}, mesh {1}",
|
m_log.WarnFormat("[PHYSICS]: Invalid mesh data on OdePrim {0}, mesh {1} at {2}",
|
||||||
Name, _pbs.SculptEntry ? _pbs.SculptTexture.ToString() : "primMesh");
|
Name, _pbs.SculptEntry ? _pbs.SculptTexture.ToString() : "primMesh",_position.ToString());
|
||||||
|
|
||||||
m_hasOBB = false;
|
m_hasOBB = false;
|
||||||
m_OBBOffset = Vector3.Zero;
|
m_OBBOffset = Vector3.Zero;
|
||||||
|
|
Loading…
Reference in New Issue