Add a tweakable for the prim queue preload
parent
52d80249d3
commit
0f721da5f1
|
@ -168,6 +168,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
private volatile bool shuttingdown = false;
|
private volatile bool shuttingdown = false;
|
||||||
|
|
||||||
private int m_lastUpdate = Environment.TickCount;
|
private int m_lastUpdate = Environment.TickCount;
|
||||||
|
private int m_maxPrimsPerFrame = 200;
|
||||||
|
|
||||||
private object m_deleting_scene_object = new object();
|
private object m_deleting_scene_object = new object();
|
||||||
|
|
||||||
|
@ -229,6 +230,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
get { return m_timedilation; }
|
get { return m_timedilation; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int MaxPrimsPerFrame
|
||||||
|
{
|
||||||
|
get { return m_maxPrimsPerFrame; }
|
||||||
|
set { m_maxPrimsPerFrame = value; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This is for llGetRegionFPS
|
/// This is for llGetRegionFPS
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -372,6 +379,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_persistAfter *= 10000000;
|
m_persistAfter *= 10000000;
|
||||||
|
|
||||||
m_defaultScriptEngine = startupConfig.GetString("DefaultScriptEngine", "DotNetEngine");
|
m_defaultScriptEngine = startupConfig.GetString("DefaultScriptEngine", "DotNetEngine");
|
||||||
|
|
||||||
|
m_maxPrimsPerFrame = startupConfig.GetInt("MaxPrimsPerFrame", 200);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|
|
@ -617,6 +617,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
newAvatar = new ScenePresence(client, m_parentScene, m_regInfo, appearance);
|
newAvatar = new ScenePresence(client, m_parentScene, m_regInfo, appearance);
|
||||||
newAvatar.IsChildAgent = true;
|
newAvatar.IsChildAgent = true;
|
||||||
|
newAvatar.MaxPrimsPerFrame = m_parentScene.MaxPrimsPerFrame;
|
||||||
|
|
||||||
AddScenePresence(newAvatar);
|
AddScenePresence(newAvatar);
|
||||||
|
|
||||||
|
|
|
@ -141,6 +141,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
private Vector3 m_lastVelocity = Vector3.Zero;
|
private Vector3 m_lastVelocity = Vector3.Zero;
|
||||||
|
|
||||||
|
private int m_maxPrimsPerFrame = 200;
|
||||||
|
|
||||||
// Default AV Height
|
// Default AV Height
|
||||||
private float m_avHeight = 127.0f;
|
private float m_avHeight = 127.0f;
|
||||||
|
|
||||||
|
@ -392,6 +394,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
set { m_parentPosition = value; }
|
set { m_parentPosition = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int MaxPrimsPerFrame
|
||||||
|
{
|
||||||
|
get { return m_maxPrimsPerFrame; }
|
||||||
|
set { m_maxPrimsPerFrame = value; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Absolute position of this avatar in 'region cordinates'
|
/// Absolute position of this avatar in 'region cordinates'
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -747,7 +755,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while (m_pendingObjects != null && m_pendingObjects.Count > 0 && m_partsUpdateQueue.Count < 60)
|
while (m_pendingObjects != null && m_pendingObjects.Count > 0 && m_partsUpdateQueue.Count < m_maxPrimsPerFrame)
|
||||||
{
|
{
|
||||||
SceneObjectGroup g = m_pendingObjects.Dequeue();
|
SceneObjectGroup g = m_pendingObjects.Dequeue();
|
||||||
|
|
||||||
|
@ -763,8 +771,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
g.ScheduleFullUpdateToAvatar(this);
|
g.ScheduleFullUpdateToAvatar(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
int updateCount = 0;
|
|
||||||
|
|
||||||
while (m_partsUpdateQueue.Count > 0)
|
while (m_partsUpdateQueue.Count > 0)
|
||||||
{
|
{
|
||||||
SceneObjectPart part = m_partsUpdateQueue.Dequeue();
|
SceneObjectPart part = m_partsUpdateQueue.Dequeue();
|
||||||
|
@ -798,7 +804,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
update.LastFullUpdateTime = part.TimeStampFull;
|
update.LastFullUpdateTime = part.TimeStampFull;
|
||||||
|
|
||||||
updateCount++;
|
|
||||||
}
|
}
|
||||||
else if (update.LastTerseUpdateTime <= part.TimeStampTerse)
|
else if (update.LastTerseUpdateTime <= part.TimeStampTerse)
|
||||||
{
|
{
|
||||||
|
@ -809,7 +814,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
part.SendTerseUpdateToClient(ControllingClient);
|
part.SendTerseUpdateToClient(ControllingClient);
|
||||||
|
|
||||||
update.LastTerseUpdateTime = part.TimeStampTerse;
|
update.LastTerseUpdateTime = part.TimeStampTerse;
|
||||||
updateCount++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -833,11 +837,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
part.SendFullUpdate(ControllingClient,
|
part.SendFullUpdate(ControllingClient,
|
||||||
GenerateClientFlags(part.UUID));
|
GenerateClientFlags(part.UUID));
|
||||||
updateCount++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (updateCount > 200)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS);
|
m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS);
|
||||||
|
|
|
@ -78,6 +78,9 @@
|
||||||
; YOU HAVE BEEN WARNED!!!
|
; YOU HAVE BEEN WARNED!!!
|
||||||
TrustBinaries = false
|
TrustBinaries = false
|
||||||
|
|
||||||
|
; How many prims to send to each avatar in the scene on each Update()
|
||||||
|
; MaxPrimsPerFrame = 200
|
||||||
|
|
||||||
; ##
|
; ##
|
||||||
; ## STORAGE
|
; ## STORAGE
|
||||||
; ##
|
; ##
|
||||||
|
|
Loading…
Reference in New Issue