Merge branch 'master' of /home/opensim/var/repo/opensim
commit
b94ab10922
|
@ -54,11 +54,8 @@ namespace OpenSim.Region.Framework.Scenes.Animation
|
|||
/// <value>
|
||||
/// The current movement animation
|
||||
/// </value>
|
||||
public string CurrentMovementAnimation
|
||||
{
|
||||
get { return m_movementAnimation; }
|
||||
}
|
||||
protected string m_movementAnimation = "CROUCH";
|
||||
public string CurrentMovementAnimation { get; private set; }
|
||||
|
||||
private int m_animTickFall;
|
||||
public int m_animTickJump; // ScenePresence has to see this to control +Z force
|
||||
public bool m_jumping = false;
|
||||
|
@ -79,6 +76,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation
|
|||
public ScenePresenceAnimator(ScenePresence sp)
|
||||
{
|
||||
m_scenePresence = sp;
|
||||
CurrentMovementAnimation = "CROUCH";
|
||||
}
|
||||
|
||||
public void AddAnimation(UUID animID, UUID objectID)
|
||||
|
@ -146,6 +144,10 @@ namespace OpenSim.Region.Framework.Scenes.Animation
|
|||
{
|
||||
if (!m_scenePresence.IsChildAgent)
|
||||
{
|
||||
// m_log.DebugFormat(
|
||||
// "[SCENE PRESENCE ANIMATOR]: Setting movement animation {0} for {1}",
|
||||
// anim, m_scenePresence.Name);
|
||||
|
||||
if (m_animations.TrySetDefaultAnimation(
|
||||
anim, m_scenePresence.ControllingClient.NextAnimationSequenceNumber, m_scenePresence.UUID))
|
||||
{
|
||||
|
@ -158,20 +160,18 @@ namespace OpenSim.Region.Framework.Scenes.Animation
|
|||
SendAnimPack();
|
||||
}
|
||||
}
|
||||
// Don't leave this on since on teleports SP.HandleAgentUpdate() still hammers us for a while after it teleports
|
||||
// else
|
||||
// {
|
||||
// m_log.WarnFormat(
|
||||
// "[SCENE PRESENCE ANIMATOR]: Tried to set movement animation {0} on child presence {1}",
|
||||
// anim, m_scenePresence.Name);
|
||||
// throw new Exception(string.Format("aaargh on setting {0}", anim));
|
||||
// }
|
||||
else
|
||||
{
|
||||
m_log.WarnFormat(
|
||||
"[SCENE PRESENCE ANIMATOR]: Tried to set movement animation {0} on child presence {1}",
|
||||
anim, m_scenePresence.Name);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method determines the proper movement related animation
|
||||
/// </summary>
|
||||
public string GetMovementAnimation()
|
||||
private string DetermineMovementAnimation()
|
||||
{
|
||||
const float FALL_DELAY = 800f;
|
||||
const float PREJUMP_DELAY = 200f;
|
||||
|
@ -274,7 +274,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation
|
|||
return "FALLDOWN";
|
||||
}
|
||||
|
||||
return m_movementAnimation;
|
||||
return CurrentMovementAnimation;
|
||||
}
|
||||
|
||||
#endregion Falling/Floating/Landing
|
||||
|
@ -285,7 +285,6 @@ namespace OpenSim.Region.Framework.Scenes.Animation
|
|||
int jumptime;
|
||||
jumptime = Environment.TickCount - m_animTickJump;
|
||||
|
||||
|
||||
if ((move.Z > 0f) && (!m_jumping))
|
||||
{
|
||||
// Start jumping, prejump
|
||||
|
@ -329,7 +328,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation
|
|||
|
||||
#region Ground Movement
|
||||
|
||||
if (m_movementAnimation == "FALLDOWN")
|
||||
if (CurrentMovementAnimation == "FALLDOWN")
|
||||
{
|
||||
m_falling = false;
|
||||
m_animTickFall = Environment.TickCount;
|
||||
|
@ -342,16 +341,17 @@ namespace OpenSim.Region.Framework.Scenes.Animation
|
|||
else
|
||||
return "LAND";
|
||||
}
|
||||
else if ((m_movementAnimation == "LAND") || (m_movementAnimation == "SOFT_LAND") || (m_movementAnimation == "STANDUP"))
|
||||
else if ((CurrentMovementAnimation == "LAND") || (CurrentMovementAnimation == "SOFT_LAND") || (CurrentMovementAnimation == "STANDUP"))
|
||||
{
|
||||
int landElapsed = Environment.TickCount - m_animTickFall;
|
||||
int limit = 1000;
|
||||
if(m_movementAnimation == "LAND") limit = 350;
|
||||
if (CurrentMovementAnimation == "LAND")
|
||||
limit = 350;
|
||||
// NB if the above is set too long a weird anim reset from some place prevents STAND from being sent to client
|
||||
|
||||
if ((m_animTickFall != 0) && (landElapsed <= limit))
|
||||
{
|
||||
return m_movementAnimation;
|
||||
return CurrentMovementAnimation;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -389,7 +389,8 @@ namespace OpenSim.Region.Framework.Scenes.Animation
|
|||
#endregion Ground Movement
|
||||
|
||||
m_falling = false;
|
||||
return m_movementAnimation;
|
||||
|
||||
return CurrentMovementAnimation;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -397,8 +398,8 @@ namespace OpenSim.Region.Framework.Scenes.Animation
|
|||
/// </summary>
|
||||
public void UpdateMovementAnimations()
|
||||
{
|
||||
m_movementAnimation = GetMovementAnimation();
|
||||
TrySetMovementAnimation(m_movementAnimation);
|
||||
CurrentMovementAnimation = DetermineMovementAnimation();
|
||||
TrySetMovementAnimation(CurrentMovementAnimation);
|
||||
}
|
||||
|
||||
public UUID[] GetAnimationArray()
|
||||
|
|
|
@ -1293,11 +1293,11 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
// "[SCENE PRESENCE]: In {0} received agent update from {1}",
|
||||
// Scene.RegionInfo.RegionName, remoteClient.Name);
|
||||
|
||||
//if (IsChildAgent)
|
||||
//{
|
||||
if (IsChildAgent)
|
||||
{
|
||||
// // m_log.Debug("DEBUG: HandleAgentUpdate: child agent");
|
||||
// return;
|
||||
//}
|
||||
return;
|
||||
}
|
||||
|
||||
++m_movementUpdateCount;
|
||||
if (m_movementUpdateCount < 1)
|
||||
|
@ -3195,6 +3195,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
catch { }
|
||||
|
||||
// FIXME: Why is this null check necessary? Where are the cases where we get a null Anims object?
|
||||
if (cAgent.Anims != null)
|
||||
Animator.Animations.FromArray(cAgent.Anims);
|
||||
|
||||
if (cAgent.AttachmentObjects != null && cAgent.AttachmentObjects.Count > 0)
|
||||
|
@ -3280,6 +3282,9 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
// Event called by the physics plugin to tell the avatar about a collision.
|
||||
private void PhysicsCollisionUpdate(EventArgs e)
|
||||
{
|
||||
if (IsChildAgent)
|
||||
return;
|
||||
|
||||
//if ((Math.Abs(Velocity.X) > 0.1e-9f) || (Math.Abs(Velocity.Y) > 0.1e-9f))
|
||||
// The Physics Scene will send updates every 500 ms grep: PhysicsActor.SubscribeEvents(
|
||||
// as of this comment the interval is set in AddToPhysicalScene
|
||||
|
|
|
@ -5554,7 +5554,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
flags |= ScriptBaseClass.AGENT_TYPING;
|
||||
}
|
||||
|
||||
string agentMovementAnimation = agent.Animator.GetMovementAnimation();
|
||||
string agentMovementAnimation = agent.Animator.CurrentMovementAnimation;
|
||||
|
||||
if (agentMovementAnimation == "CROUCH")
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue