diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs index 2d1b0df906..ade908d657 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs @@ -307,15 +307,15 @@ namespace OpenSim.Region.Framework.Scenes.Animation ); // Check control flags -/* not in use - bool heldForward = ((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_AT_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS)) != 0); - bool heldBack = ((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG)) != 0); - bool heldLeft = ((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS)) != 0); - bool heldRight = ((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG)) != 0); -*/ + /* not in use + bool heldForward = ((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_AT_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS)) != 0); + bool heldBack = ((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG)) != 0); + bool heldLeft = ((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS)) != 0); + bool heldRight = ((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG)) != 0); + */ bool heldTurnLeft = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_TURN_LEFT) == AgentManager.ControlFlags.AGENT_CONTROL_TURN_LEFT; bool heldTurnRight = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_TURN_RIGHT) == AgentManager.ControlFlags.AGENT_CONTROL_TURN_RIGHT; -// bool heldUp = ((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_UP_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_POS)) != 0); + // bool heldUp = ((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_UP_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_POS)) != 0); // excluded nudge up so it doesn't trigger jump state bool heldUp = ((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_UP_POS)) != 0); bool heldDown = ((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG)) != 0); @@ -328,7 +328,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation heldTurnLeft = false; heldTurnRight = false; } - + #endregion Inputs // no physics actor case @@ -432,7 +432,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation #region Jumping // section added for jumping... if (isColliding && heldUp && currentControlState != motionControlStates.jumping) - { + { // Start jumping, prejump currentControlState = motionControlStates.jumping; m_jumping = true; @@ -465,6 +465,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation m_jumping = true; return "JUMP"; } + return CurrentMovementAnimation; } #endregion Jumping @@ -508,7 +509,6 @@ namespace OpenSim.Region.Framework.Scenes.Animation } } - // next section moved outside paren. and realigned for jumping if (heldOnXY) @@ -530,12 +530,12 @@ namespace OpenSim.Region.Framework.Scenes.Animation return "WALK"; } } - else if (!m_jumping) + else { currentControlState = motionControlStates.onsurface; Falling = false; // Not walking - if(heldDown) + if (heldDown) return "CROUCH"; else if (heldTurnLeft) return "TURNLEFT"; diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 6daa109598..3fc741c305 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -666,6 +666,8 @@ namespace OpenSim.Region.Framework.Scenes m_isSelected = value; if (ParentGroup != null) ParentGroup.PartSelectChanged(value); + if (!m_isSelected && m_angularVelocity != Vector3.Zero) + ScheduleTerseUpdate(); } } diff --git a/OpenSim/Region/Physics/UbitOdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/UbitOdePlugin/ODECharacter.cs index 992fae74bd..af7ca1d475 100644 --- a/OpenSim/Region/Physics/UbitOdePlugin/ODECharacter.cs +++ b/OpenSim/Region/Physics/UbitOdePlugin/ODECharacter.cs @@ -928,7 +928,7 @@ namespace OpenSim.Region.Physics.OdePlugin IsColliding = true; } } - +/* if (contact.normal.Z < 0.2f) { contact.normal.Z = 0; @@ -940,12 +940,15 @@ namespace OpenSim.Region.Physics.OdePlugin contact.normal.Y *= t; } } + */ return true; } altContact = contact; useAltcontact = true; + offset.Z -= 0.2f; + offset.Normalize(); if (contact.depth > 0.1f) @@ -1201,8 +1204,8 @@ namespace OpenSim.Region.Physics.OdePlugin // Avatar to Avatar collisions // Prim to avatar collisions - vec.X = -vel.X * PID_D * 2 + (_zeroPosition.X - localpos.X) * (PID_P * 5); - vec.Y = -vel.Y * PID_D * 2 + (_zeroPosition.Y - localpos.Y) * (PID_P * 5); + vec.X = -vel.X * PID_D + (_zeroPosition.X - localpos.X) * (PID_P * 5); + vec.Y = -vel.Y * PID_D + (_zeroPosition.Y - localpos.Y) * (PID_P * 5); if (flying) { vec.Z += -vel.Z * PID_D + (_zeroPosition.Z - localpos.Z) * PID_P; @@ -1223,7 +1226,7 @@ namespace OpenSim.Region.Physics.OdePlugin if (ctz.Z > 0f) { // moving up or JUMPING - vec.Z += (ctz.Z - vel.Z) * PID_D * 1.2f;// +(_zeroPosition.Z - localpos.Z) * PID_P; + vec.Z += (ctz.Z - vel.Z) * PID_D; vec.X += (ctz.X - vel.X) * (PID_D); vec.Y += (ctz.Y - vel.Y) * (PID_D); } @@ -1233,7 +1236,7 @@ namespace OpenSim.Region.Physics.OdePlugin if (ctz.Z == 0) { if (vel.Z > 0) - vec.Z -= vel.Z * PID_D * 2.0f; + vec.Z -= vel.Z * PID_D; vec.X += (ctz.X - vel.X) * (PID_D); vec.Y += (ctz.Y - vel.Y) * (PID_D); } @@ -1241,7 +1244,7 @@ namespace OpenSim.Region.Physics.OdePlugin else { if (ctz.Z < vel.Z) - vec.Z += (ctz.Z - vel.Z) * PID_D * 2.0f; + vec.Z += (ctz.Z - vel.Z) * PID_D; else { } @@ -1260,7 +1263,7 @@ namespace OpenSim.Region.Physics.OdePlugin // We're flying and colliding with something vec.X += (ctz.X - vel.X) * (PID_D * 0.0625f); vec.Y += (ctz.Y - vel.Y) * (PID_D * 0.0625f); - vec.Z += (ctz.Z - vel.Z) * (PID_D); + vec.Z += (ctz.Z - vel.Z) * (PID_D * 0.0625f); } } else // ie not colliding @@ -1268,8 +1271,8 @@ namespace OpenSim.Region.Physics.OdePlugin if (flying) //(!m_iscolliding && flying) { // we're in mid air suspended - vec.X += (ctz.X - vel.X) * (PID_D * 1.667f); - vec.Y += (ctz.Y - vel.Y) * (PID_D * 1.667f); + vec.X += (ctz.X - vel.X) * (PID_D); + vec.Y += (ctz.Y - vel.Y) * (PID_D); vec.Z += (ctz.Z - vel.Z) * (PID_D); }