aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes
diff options
context:
space:
mode:
authorJohn Hurliman2009-10-28 14:13:17 -0700
committerJohn Hurliman2009-10-28 14:13:17 -0700
commitb81c829576dd916c0a7bf141919f5e13f025d818 (patch)
tree92e537b80a4cded51d1cccd2a3ba4dfb12c1665c /OpenSim/Region/Framework/Scenes
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC-b81c829576dd916c0a7bf141919f5e13f025d818.zip
opensim-SC-b81c829576dd916c0a7bf141919f5e13f025d818.tar.gz
opensim-SC-b81c829576dd916c0a7bf141919f5e13f025d818.tar.bz2
opensim-SC-b81c829576dd916c0a7bf141919f5e13f025d818.tar.xz
* Standalone logins will now go through the sequence of "requested region, default region, any region" before giving up
* Hip offset should have been added not subtracted (it's a negative offset). This puts avatar feet closer to the ground * Improved duplicate checking for terse updates. This should reduce bandwidth and walking through walls
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs15
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs21
2 files changed, 20 insertions, 16 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index a99a802..c16c4fe 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -2394,18 +2394,19 @@ if (m_shape != null) {
2394 /// </summary> 2394 /// </summary>
2395 public void SendScheduledUpdates() 2395 public void SendScheduledUpdates()
2396 { 2396 {
2397 const float VELOCITY_TOLERANCE = 0.0001f; 2397 const float ROTATION_TOLERANCE = 0.01f;
2398 const float POSITION_TOLERANCE = 0.1f; 2398 const float VELOCITY_TOLERANCE = 0.001f;
2399 const float POSITION_TOLERANCE = 0.05f;
2399 const int TIME_MS_TOLERANCE = 3000; 2400 const int TIME_MS_TOLERANCE = 3000;
2400 2401
2401 if (m_updateFlag == 1) 2402 if (m_updateFlag == 1)
2402 { 2403 {
2403 // Throw away duplicate or insignificant updates 2404 // Throw away duplicate or insignificant updates
2404 if (RotationOffset != m_lastRotation || 2405 if (!RotationOffset.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) ||
2405 Acceleration != m_lastAcceleration || 2406 !Acceleration.Equals(m_lastAcceleration) ||
2406 (Velocity - m_lastVelocity).Length() > VELOCITY_TOLERANCE || 2407 !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) ||
2407 (RotationalVelocity - m_lastAngularVelocity).Length() > VELOCITY_TOLERANCE || 2408 !RotationalVelocity.ApproxEquals(m_lastAngularVelocity, VELOCITY_TOLERANCE) ||
2408 (OffsetPosition - m_lastPosition).Length() > POSITION_TOLERANCE || 2409 !OffsetPosition.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) ||
2409 Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE) 2410 Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE)
2410 { 2411 {
2411 AddTerseUpdateToAllAvatars(); 2412 AddTerseUpdateToAllAvatars();
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 9ba19d3..63c979f 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2362,8 +2362,9 @@ namespace OpenSim.Region.Framework.Scenes
2362 2362
2363 public override void Update() 2363 public override void Update()
2364 { 2364 {
2365 const float VELOCITY_TOLERANCE = 0.0001f; 2365 const float ROTATION_TOLERANCE = 0.01f;
2366 const float POSITION_TOLERANCE = 10.0f; 2366 const float VELOCITY_TOLERANCE = 0.001f;
2367 const float POSITION_TOLERANCE = 0.05f;
2367 const int TIME_MS_TOLERANCE = 3000; 2368 const int TIME_MS_TOLERANCE = 3000;
2368 2369
2369 SendPrimUpdates(); 2370 SendPrimUpdates();
@@ -2377,9 +2378,9 @@ namespace OpenSim.Region.Framework.Scenes
2377 if (m_isChildAgent == false) 2378 if (m_isChildAgent == false)
2378 { 2379 {
2379 // Throw away duplicate or insignificant updates 2380 // Throw away duplicate or insignificant updates
2380 if (m_bodyRot != m_lastRotation || 2381 if (!m_bodyRot.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) ||
2381 (m_velocity - m_lastVelocity).Length() > VELOCITY_TOLERANCE || 2382 !m_velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) ||
2382 (m_pos - m_lastPosition).Length() > POSITION_TOLERANCE || 2383 !m_pos.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) ||
2383 Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE) 2384 Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE)
2384 { 2385 {
2385 SendTerseUpdateToAllClients(); 2386 SendTerseUpdateToAllClients();
@@ -2415,7 +2416,9 @@ namespace OpenSim.Region.Framework.Scenes
2415 m_perfMonMS = Environment.TickCount; 2416 m_perfMonMS = Environment.TickCount;
2416 2417
2417 Vector3 pos = m_pos; 2418 Vector3 pos = m_pos;
2418 pos.Z -= m_appearance.HipOffset; 2419 pos.Z += m_appearance.HipOffset;
2420
2421 //m_log.DebugFormat("[SCENEPRESENCE]: TerseUpdate: Pos={0} Rot={1} Vel={2}", m_pos, m_bodyRot, m_velocity);
2419 2422
2420 remoteClient.SendAvatarTerseUpdate(new SendAvatarTerseData(m_regionHandle, (ushort)(m_scene.TimeDilation * ushort.MaxValue), LocalId, 2423 remoteClient.SendAvatarTerseUpdate(new SendAvatarTerseData(m_regionHandle, (ushort)(m_scene.TimeDilation * ushort.MaxValue), LocalId,
2421 pos, m_velocity, Vector3.Zero, m_bodyRot, Vector4.UnitW, m_uuid, null, GetUpdatePriority(remoteClient))); 2424 pos, m_velocity, Vector3.Zero, m_bodyRot, Vector4.UnitW, m_uuid, null, GetUpdatePriority(remoteClient)));
@@ -2514,7 +2517,7 @@ namespace OpenSim.Region.Framework.Scenes
2514 return; 2517 return;
2515 2518
2516 Vector3 pos = m_pos; 2519 Vector3 pos = m_pos;
2517 pos.Z -= m_appearance.HipOffset; 2520 pos.Z += m_appearance.HipOffset;
2518 2521
2519 remoteAvatar.m_controllingClient.SendAvatarData(new SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_grouptitle, m_uuid, 2522 remoteAvatar.m_controllingClient.SendAvatarData(new SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_grouptitle, m_uuid,
2520 LocalId, pos, m_appearance.Texture.GetBytes(), 2523 LocalId, pos, m_appearance.Texture.GetBytes(),
@@ -2585,7 +2588,7 @@ namespace OpenSim.Region.Framework.Scenes
2585 // m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance); 2588 // m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance);
2586 2589
2587 Vector3 pos = m_pos; 2590 Vector3 pos = m_pos;
2588 pos.Z -= m_appearance.HipOffset; 2591 pos.Z += m_appearance.HipOffset;
2589 2592
2590 m_controllingClient.SendAvatarData(new SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_grouptitle, m_uuid, LocalId, 2593 m_controllingClient.SendAvatarData(new SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_grouptitle, m_uuid, LocalId,
2591 pos, m_appearance.Texture.GetBytes(), m_parentID, m_bodyRot)); 2594 pos, m_appearance.Texture.GetBytes(), m_parentID, m_bodyRot));
@@ -2694,7 +2697,7 @@ namespace OpenSim.Region.Framework.Scenes
2694 } 2697 }
2695 2698
2696 Vector3 pos = m_pos; 2699 Vector3 pos = m_pos;
2697 pos.Z -= m_appearance.HipOffset; 2700 pos.Z += m_appearance.HipOffset;
2698 2701
2699 m_controllingClient.SendAvatarData(new SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_grouptitle, m_uuid, LocalId, 2702 m_controllingClient.SendAvatarData(new SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_grouptitle, m_uuid, LocalId,
2700 pos, m_appearance.Texture.GetBytes(), m_parentID, m_bodyRot)); 2703 pos, m_appearance.Texture.GetBytes(), m_parentID, m_bodyRot));