Prevent avatar data from being sent during login when it's not valid and

crashes login on some viewers.
avinationmerge
Melanie 2013-01-08 13:57:45 +01:00
parent 126e73c5ed
commit ef8f03b711
2 changed files with 6 additions and 2 deletions

View File

@ -2977,6 +2977,7 @@ namespace OpenSim.Region.Framework.Scenes
// start the scripts again (since this is done in RezAttachments()).
// XXX: This is convoluted.
sp.IsChildAgent = false;
sp.IsLoggingIn = true;
if (AttachmentsModule != null)
Util.FireAndForget(delegate(object o) { AttachmentsModule.RezAttachments(sp); });

View File

@ -607,6 +607,7 @@ namespace OpenSim.Region.Framework.Scenes
}
public bool IsChildAgent { get; set; }
public bool IsLoggingIn { get; set; }
/// <summary>
/// If the avatar is sitting, the local ID of the prim that it's sitting on. If not sitting then zero.
@ -743,6 +744,7 @@ namespace OpenSim.Region.Framework.Scenes
AttachmentsSyncLock = new Object();
AllowMovement = true;
IsChildAgent = true;
IsLoggingIn = false;
m_sendCoarseLocationsMethod = SendCoarseLocationsDefault;
Animator = new ScenePresenceAnimator(this);
PresenceType = type;
@ -915,6 +917,7 @@ namespace OpenSim.Region.Framework.Scenes
else
{
IsChildAgent = false;
IsLoggingIn = false;
}
@ -2541,13 +2544,13 @@ namespace OpenSim.Region.Framework.Scenes
// NOTE: Velocity is not the same as m_velocity. Velocity will attempt to
// grab the latest PhysicsActor velocity, whereas m_velocity is often
// storing a requested force instead of an actual traveling velocity
if (Appearance.AvatarSize != m_lastSize)
if (Appearance.AvatarSize != m_lastSize && !IsLoggingIn)
{
m_lastSize = Appearance.AvatarSize;
SendAvatarDataToAllAgents();
}
else if (!Rotation.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) ||
if (!Rotation.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) ||
!Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) ||
!m_pos.ApproxEquals(m_lastPosition, POSITION_TOLERANCE))
{