mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 17:05:55 +08:00
Merge branch 'avination' into careminster
This commit is contained in:
@@ -816,6 +816,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
public event ParcelPrimCountTainted OnParcelPrimCountTainted;
|
||||
public event GetScriptRunning OnGetScriptRunning;
|
||||
|
||||
public delegate void ThrottleUpdate(ScenePresence scenePresence);
|
||||
|
||||
public event ThrottleUpdate OnThrottleUpdate;
|
||||
|
||||
/// <summary>
|
||||
/// RegisterCapsEvent is called by Scene after the Caps object
|
||||
/// has been instantiated and before it is return to the
|
||||
@@ -3130,5 +3134,14 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void TriggerThrottleUpdate(ScenePresence scenePresence)
|
||||
{
|
||||
ThrottleUpdate handler = OnThrottleUpdate;
|
||||
if (handler != null)
|
||||
{
|
||||
handler(scenePresence);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
private long timeLastChanged = 0;
|
||||
private long m_maxPersistTime = 0;
|
||||
private long m_minPersistTime = 0;
|
||||
private Random m_rand;
|
||||
// private Random m_rand;
|
||||
private List<ScenePresence> m_linkedAvatars = new List<ScenePresence>();
|
||||
|
||||
/// <summary>
|
||||
@@ -130,6 +130,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
{
|
||||
if (value)
|
||||
{
|
||||
|
||||
if (m_isBackedUp)
|
||||
{
|
||||
m_scene.SceneGraph.FireChangeBackup(this);
|
||||
@@ -139,19 +140,21 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
timeFirstChanged = DateTime.Now.Ticks;
|
||||
if (m_rootPart != null && m_rootPart.UUID != null && m_scene != null)
|
||||
{
|
||||
/*
|
||||
if (m_rand == null)
|
||||
{
|
||||
byte[] val = new byte[16];
|
||||
m_rootPart.UUID.ToBytes(val, 0);
|
||||
m_rand = new Random(BitConverter.ToInt32(val, 0));
|
||||
}
|
||||
|
||||
*/
|
||||
if (m_scene.GetRootAgentCount() == 0)
|
||||
{
|
||||
//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.
|
||||
|
||||
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_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
|
||||
//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_minPersistTime = (long)((float)m_scene.m_dontPersistBefore * (1.0d + (m_rand.NextDouble() / 2.0d))); //Multiply by 0.8-1.0
|
||||
// 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_maxPersistTime = m_scene.m_persistAfter;
|
||||
m_minPersistTime = m_scene.m_dontPersistBefore;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -794,6 +794,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
ControllingClient.OnChangeAnim += avnHandleChangeAnim;
|
||||
ControllingClient.OnForceReleaseControls += HandleForceReleaseControls;
|
||||
ControllingClient.OnAutoPilotGo += MoveToTarget;
|
||||
ControllingClient.OnUpdateThrottles += RaiseUpdateThrottles;
|
||||
|
||||
// ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange);
|
||||
// ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement);
|
||||
@@ -3174,6 +3175,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
}
|
||||
|
||||
private static Vector3 marker = new Vector3(-1f, -1f, -1f);
|
||||
private void RaiseUpdateThrottles()
|
||||
{
|
||||
m_scene.EventManager.TriggerThrottleUpdate(this);
|
||||
}
|
||||
/// <summary>
|
||||
/// This updates important decision making data about a child agent
|
||||
/// The main purpose is to figure out what objects to send to a child agent that's in a neighboring region
|
||||
|
||||
Reference in New Issue
Block a user