diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index b415fd3504..0de5d4a5ca 100755 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs @@ -8224,8 +8224,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP { if( (x.ControlFlags != m_thisAgentUpdateArgs.ControlFlags) // significant if control flags changed -// || ((x.ControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0 && -// (x.ControlFlags & 0x3f8dfff) != 0) // we need to rotate the av on fly || x.ControlFlags != (byte)AgentManager.ControlFlags.NONE// actually all movement controls need to pass || (x.Flags != m_thisAgentUpdateArgs.Flags) // significant if Flags changed || (x.State != m_thisAgentUpdateArgs.State) // significant if Stats changed @@ -8233,11 +8231,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP ) return true; - float qdelta = Math.Abs(Quaternion.Dot(x.BodyRotation, m_thisAgentUpdateArgs.BodyRotation)); - if(qdelta < QDELTABody) // significant if body rotation above(below cos) threshold - return true; - - return false; + float qdelta = Math.Abs(Quaternion.Dot(x.BodyRotation, m_thisAgentUpdateArgs.BodyRotation)); + return qdelta < QDELTABody; // significant if body rotation above(below cos) threshold } /// @@ -8248,26 +8243,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// private bool CheckAgentCameraUpdateSignificance(AgentUpdatePacket.AgentDataBlock x) { - if(Math.Abs(x.CameraCenter.X - m_thisAgentUpdateArgs.CameraCenter.X) > VDELTA || - Math.Abs(x.CameraCenter.Y - m_thisAgentUpdateArgs.CameraCenter.Y) > VDELTA || - Math.Abs(x.CameraCenter.Z - m_thisAgentUpdateArgs.CameraCenter.Z) > VDELTA || + return (Math.Abs(x.CameraCenter.X - m_thisAgentUpdateArgs.CameraCenter.X) > VDELTA || + Math.Abs(x.CameraCenter.Y - m_thisAgentUpdateArgs.CameraCenter.Y) > VDELTA || + Math.Abs(x.CameraCenter.Z - m_thisAgentUpdateArgs.CameraCenter.Z) > VDELTA || - Math.Abs(x.CameraAtAxis.X - m_thisAgentUpdateArgs.CameraAtAxis.X) > VDELTA || - Math.Abs(x.CameraAtAxis.Y - m_thisAgentUpdateArgs.CameraAtAxis.Y) > VDELTA || -// Math.Abs(x.CameraAtAxis.Z - m_thisAgentUpdateArgs.CameraAtAxis.Z) > VDELTA || + Math.Abs(x.CameraAtAxis.X - m_thisAgentUpdateArgs.CameraAtAxis.X) > VDELTA || + Math.Abs(x.CameraAtAxis.Y - m_thisAgentUpdateArgs.CameraAtAxis.Y) > VDELTA || + //Math.Abs(x.CameraAtAxis.Z - m_thisAgentUpdateArgs.CameraAtAxis.Z) > VDELTA || - Math.Abs(x.CameraLeftAxis.X - m_thisAgentUpdateArgs.CameraLeftAxis.X) > VDELTA || - Math.Abs(x.CameraLeftAxis.Y - m_thisAgentUpdateArgs.CameraLeftAxis.Y) > VDELTA || -// Math.Abs(x.CameraLeftAxis.Z - m_thisAgentUpdateArgs.CameraLeftAxis.Z) > VDELTA || - - Math.Abs(x.CameraUpAxis.X - m_thisAgentUpdateArgs.CameraUpAxis.X) > VDELTA || - Math.Abs(x.CameraUpAxis.Y - m_thisAgentUpdateArgs.CameraUpAxis.Y) > VDELTA -// Math.Abs(x.CameraLeftAxis.Z - m_thisAgentUpdateArgs.CameraLeftAxis.Z) > VDELTA || - ) - return true; - - return false; - } + Math.Abs(x.CameraUpAxis.X - m_thisAgentUpdateArgs.CameraUpAxis.X) > VDELTA || + Math.Abs(x.CameraUpAxis.Y - m_thisAgentUpdateArgs.CameraUpAxis.Y) > VDELTA + //Math.Abs(x.CameraLeftAxis.Z - m_thisAgentUpdateArgs.CameraLeftAxis.Z) > VDELTA || + ); + } private void HandleAgentUpdate(Packet packet) { diff --git a/OpenSim/Region/Framework/Scenes/Animation/AnimationSet.cs b/OpenSim/Region/Framework/Scenes/Animation/AnimationSet.cs index 6f71f88fd4..645006f2d9 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/AnimationSet.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/AnimationSet.cs @@ -42,11 +42,11 @@ namespace OpenSim.Region.Framework.Scenes.Animation [Serializable] public class AnimationSet { -// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private OpenSim.Framework.Animation m_implicitDefaultAnimation = new OpenSim.Framework.Animation(); private OpenSim.Framework.Animation m_defaultAnimation = new OpenSim.Framework.Animation(); - private List m_animations = new List(); + private readonly List m_animations = new List(); public OpenSim.Framework.Animation DefaultAnimation { @@ -71,12 +71,12 @@ namespace OpenSim.Region.Framework.Scenes.Animation public bool HasAnimation(UUID animID) { - if (m_defaultAnimation.AnimID == animID) + if (m_defaultAnimation.AnimID.Equals(animID)) return true; for (int i = 0; i < m_animations.Count; ++i) { - if (m_animations[i].AnimID == animID) + if (m_animations[i].AnimID.Equals(animID)) return true; } @@ -108,7 +108,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation { lock (m_animations) { - if (m_defaultAnimation.AnimID == animID) + if (m_defaultAnimation.AnimID.Equals(animID)) { if (allowNoDefault) m_defaultAnimation = new OpenSim.Framework.Animation(UUID.Zero, 1, UUID.Zero); @@ -119,7 +119,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation { for (int i = 0; i < m_animations.Count; i++) { - if (m_animations[i].AnimID == animID) + if (m_animations[i].AnimID.Equals(animID)) { m_animations.RemoveAt(i); return true; @@ -142,13 +142,14 @@ namespace OpenSim.Region.Framework.Scenes.Animation /// public bool SetDefaultAnimation(UUID animID, int sequenceNum, UUID objectID) { - if (m_defaultAnimation.AnimID != animID) + if (m_defaultAnimation.AnimID.NotEqual(animID)) { m_defaultAnimation = new OpenSim.Framework.Animation(animID, sequenceNum, objectID); m_implicitDefaultAnimation = m_defaultAnimation; - return true; + //return true; } - return false; + //return false; + return true; } // Called from serialization only @@ -167,9 +168,9 @@ namespace OpenSim.Region.Framework.Scenes.Animation /// public bool TrySetDefaultAnimation(string anim, int sequenceNum, UUID objectID) { -// m_log.DebugFormat( -// "[ANIMATION SET]: Setting default animation {0}, sequence number {1}, object id {2}", -// anim, sequenceNum, objectID); + //m_log.DebugFormat( + // "[ANIMATION SET]: Setting default animation {0}, sequence number {1}, object id {2}", + // anim, sequenceNum, objectID); if (DefaultAvatarAnimations.AnimsUUIDbyName.TryGetValue(anim, out UUID id)) { @@ -189,7 +190,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation sequenceNums = new int[defaultSize]; objectIDs = new UUID[defaultSize]; - if (!m_defaultAnimation.AnimID.IsZero()) + if (m_defaultAnimation.AnimID.IsNotZero()) { animIDs[0] = m_defaultAnimation.AnimID; sequenceNums[0] = m_defaultAnimation.SequenceNum; diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs index 0736b99d89..4be6b2770e 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs @@ -61,9 +61,9 @@ namespace OpenSim.Region.Framework.Scenes.Animation private int m_animTickLand; private int m_animTickJump; - public bool m_jumping = false; + public bool isJumping; - // private int m_landing = 0; + // private int m_landing = 0; /// /// Is the avatar falling? @@ -154,7 +154,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation m_animations.Remove(animID, false); } if (sendPack) - SendAnimPack(); + SendAnimPack(false); } // Called from scripts @@ -189,9 +189,6 @@ namespace OpenSim.Region.Framework.Scenes.Animation /// /// 'true' if the animation was updated /// - - - public bool TrySetMovementAnimation(string anim) { if (m_scenePresence.IsChildAgent) @@ -254,6 +251,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation sitted = 0, flying, falling, + prejumping, jumping, landing, onsurface @@ -267,8 +265,8 @@ namespace OpenSim.Region.Framework.Scenes.Animation private string DetermineMovementAnimation() { const int FALL_DELAY = 800; - const int PREJUMP_DELAY = 200; - const int JUMP_PERIOD = 800; + const int PREJUMP_DELAY = 450; + const int JUMP_PERIOD = 1050; #region Inputs if (m_scenePresence.IsInTransit) @@ -277,16 +275,19 @@ namespace OpenSim.Region.Framework.Scenes.Animation if (m_scenePresence.SitGround) { currentControlState = motionControlStates.sitted; + isJumping = false; + Falling = false; return "SITGROUND"; } if (m_scenePresence.ParentID != 0 || !m_scenePresence.ParentUUID.IsZero()) { currentControlState = motionControlStates.sitted; + isJumping = false; + Falling = false; return "SIT"; } AgentManager.ControlFlags controlFlags = (AgentManager.ControlFlags)m_scenePresence.AgentControlFlags; - PhysicsActor actor = m_scenePresence.PhysicsActor; const AgentManager.ControlFlags ANYXYMASK = ( AgentManager.ControlFlags.AGENT_CONTROL_AT_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS | @@ -294,37 +295,44 @@ namespace OpenSim.Region.Framework.Scenes.Animation AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS | AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG ); + const AgentManager.ControlFlags ANYXYZMASK = (ANYXYMASK | + AgentManager.ControlFlags.AGENT_CONTROL_UP_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_POS | + AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG + ); - // 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); - */ - 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); - // excluded nudge up so it doesn't trigger jump state + // 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); //bool flying = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) == AgentManager.ControlFlags.AGENT_CONTROL_FLY; //bool mouselook = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) == AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK; bool heldOnXY = ((controlFlags & ANYXYMASK) != 0); - if (heldOnXY || heldUp || heldDown) + bool heldTurnLeft; + bool heldTurnRight; + if ((controlFlags & ANYXYZMASK) != 0) { heldTurnLeft = false; heldTurnRight = false; } + else + { + heldTurnLeft = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_TURN_LEFT) != 0; + heldTurnRight = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_TURN_RIGHT) != 0; + //heldTurnLeft = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_YAW_POS) != 0; + //heldTurnRight = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_YAW_NEG) != 0; + } + #endregion Inputs + PhysicsActor actor = m_scenePresence.PhysicsActor; // no physics actor case if (actor == null) { - // well what to do? + isJumping = false; + Falling = false; + // well what to do? currentControlState = motionControlStates.onsurface; if (heldOnXY) return "WALK"; @@ -332,15 +340,14 @@ namespace OpenSim.Region.Framework.Scenes.Animation return "STAND"; } - #region Flying - bool isColliding = actor.IsColliding; + #region Flying if (actor.Flying) { m_animTickFall = 0; m_animTickJump = 0; - m_jumping = false; + isJumping = false; Falling = false; currentControlState = motionControlStates.flying; @@ -387,7 +394,6 @@ namespace OpenSim.Region.Framework.Scenes.Animation if (!isColliding && currentControlState != motionControlStates.jumping) { float fallVelocity = actor.Velocity.Z; - // if stable on Hover assume falling if(actor.PIDHoverActive && fallVelocity < 0.05f) { @@ -429,14 +435,38 @@ namespace OpenSim.Region.Framework.Scenes.Animation #region Jumping // section added for jumping... - if (isColliding && heldUp && currentControlState != motionControlStates.jumping && !actor.PIDHoverActive) + if (isColliding && heldUp && !isJumping && !actor.PIDHoverActive) { - // Start jumping, prejump - currentControlState = motionControlStates.jumping; - m_jumping = true; + isJumping = true; Falling = false; - m_animTickJump = Environment.TickCount; - return "PREJUMP"; + if ((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_FINISH_ANIM)) == 0) + { + currentControlState = motionControlStates.prejumping; + m_animTickJump = Environment.TickCount; + // Start jumping, prejump + return "PREJUMP"; + } + + m_animTickJump = Environment.TickCount - PREJUMP_DELAY - 1; + currentControlState = motionControlStates.jumping; + m_scenePresence.Jump(18f); + return "JUMP"; + } + + if (currentControlState == motionControlStates.prejumping) + { + if((controlFlags & (AgentManager.ControlFlags.AGENT_CONTROL_FINISH_ANIM)) == 0) + { + int jumptime = Environment.TickCount - m_animTickJump; + if (jumptime < PREJUMP_DELAY) + return CurrentMovementAnimation; + } + + // jump up + isJumping = true; + currentControlState = motionControlStates.jumping; + m_scenePresence.Jump(18f); + return "JUMP"; } if (currentControlState == motionControlStates.jumping) @@ -445,7 +475,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation if ((jumptime > (JUMP_PERIOD * 1.5f)) && actor.IsColliding) { // end jumping - m_jumping = false; + isJumping = false; Falling = false; actor.Selected = false; // borrowed for jumping flag m_animTickLand = Environment.TickCount; @@ -457,12 +487,6 @@ namespace OpenSim.Region.Framework.Scenes.Animation // jump down return "JUMP"; } - else if (jumptime > PREJUMP_DELAY) - { - // jump up - m_jumping = true; - return "JUMP"; - } return CurrentMovementAnimation; } @@ -556,20 +580,18 @@ namespace OpenSim.Region.Framework.Scenes.Animation lock (m_animations) { string newMovementAnimation = DetermineMovementAnimation(); - if (CurrentMovementAnimation != newMovementAnimation) - { - CurrentMovementAnimation = newMovementAnimation; + if (CurrentMovementAnimation.Equals(newMovementAnimation)) + return false; -// m_log.DebugFormat( -// "[SCENE PRESENCE ANIMATOR]: Determined animation {0} for {1} in UpdateMovementAnimations()", -// CurrentMovementAnimation, m_scenePresence.Name); + CurrentMovementAnimation = newMovementAnimation; + m_log.DebugFormat( + "[SCENE PRESENCE ANIMATOR]: Determined animation {0} for {1} {2} {3} in UpdateMovementAnimations()", + CurrentMovementAnimation, m_scenePresence.Name, isJumping, Falling); - // Only set it if it's actually changed, give a script - // a chance to stop a default animation - return TrySetMovementAnimation(CurrentMovementAnimation); - } + // Only set it if it's actually changed, give a script + // a chance to stop a default animation + return TrySetMovementAnimation(CurrentMovementAnimation); } - return false; } public bool ForceUpdateMovementAnimations() diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index a8d7f4d9ad..678f2b6d1b 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -397,33 +397,33 @@ namespace OpenSim.Region.Framework.Scenes private enum Dir_ControlFlags : uint { - DIR_CONTROL_FLAG_FORWARD = AgentManager.ControlFlags.AGENT_CONTROL_AT_POS, - DIR_CONTROL_FLAG_BACK = AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG, - DIR_CONTROL_FLAG_LEFT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS, - DIR_CONTROL_FLAG_RIGHT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG, - DIR_CONTROL_FLAG_UP = AgentManager.ControlFlags.AGENT_CONTROL_UP_POS, - DIR_CONTROL_FLAG_DOWN = AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG, - DIR_CONTROL_FLAG_FORWARD_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS, - DIR_CONTROL_FLAG_BACKWARD_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG, - DIR_CONTROL_FLAG_LEFT_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS, - DIR_CONTROL_FLAG_RIGHT_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG, - DIR_CONTROL_FLAG_UP_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_POS, - DIR_CONTROL_FLAG_DOWN_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG + DIR_CONTROL_FLAG_FORWARD = ACFlags.AGENT_CONTROL_AT_POS, + DIR_CONTROL_FLAG_BACK = ACFlags.AGENT_CONTROL_AT_NEG, + DIR_CONTROL_FLAG_LEFT = ACFlags.AGENT_CONTROL_LEFT_POS, + DIR_CONTROL_FLAG_RIGHT = ACFlags.AGENT_CONTROL_LEFT_NEG, + DIR_CONTROL_FLAG_UP = ACFlags.AGENT_CONTROL_UP_POS, + DIR_CONTROL_FLAG_DOWN = ACFlags.AGENT_CONTROL_UP_NEG, + DIR_CONTROL_FLAG_FORWARD_NUDGE = ACFlags.AGENT_CONTROL_NUDGE_AT_POS, + DIR_CONTROL_FLAG_BACKWARD_NUDGE = ACFlags.AGENT_CONTROL_NUDGE_AT_NEG, + DIR_CONTROL_FLAG_LEFT_NUDGE = ACFlags.AGENT_CONTROL_NUDGE_LEFT_POS, + DIR_CONTROL_FLAG_RIGHT_NUDGE = ACFlags.AGENT_CONTROL_NUDGE_LEFT_NEG, + DIR_CONTROL_FLAG_UP_NUDGE = ACFlags.AGENT_CONTROL_NUDGE_UP_POS, + DIR_CONTROL_FLAG_DOWN_NUDGE = ACFlags.AGENT_CONTROL_NUDGE_UP_NEG } - const uint CONTROL_FLAG_NORM_MASK = (uint)(AgentManager.ControlFlags.AGENT_CONTROL_AT_POS | - AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG | - AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS | - AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG | - AgentManager.ControlFlags.AGENT_CONTROL_UP_POS | - AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG); + const uint CONTROL_FLAG_NORM_MASK = (uint)(ACFlags.AGENT_CONTROL_AT_POS | + ACFlags.AGENT_CONTROL_AT_NEG | + ACFlags.AGENT_CONTROL_LEFT_POS | + ACFlags.AGENT_CONTROL_LEFT_NEG | + ACFlags.AGENT_CONTROL_UP_POS | + ACFlags.AGENT_CONTROL_UP_NEG); - const uint CONTROL_FLAG_NUDGE_MASK = (uint)(AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS | - AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG | - AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS | - AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG | - AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_POS | - AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG); + const uint CONTROL_FLAG_NUDGE_MASK = (uint)(ACFlags.AGENT_CONTROL_NUDGE_AT_POS | + ACFlags.AGENT_CONTROL_NUDGE_AT_NEG | + ACFlags.AGENT_CONTROL_NUDGE_LEFT_POS | + ACFlags.AGENT_CONTROL_NUDGE_LEFT_NEG | + ACFlags.AGENT_CONTROL_NUDGE_UP_POS | + ACFlags.AGENT_CONTROL_NUDGE_UP_NEG); protected int m_reprioritizationLastTime; protected bool m_reprioritizationBusy; @@ -703,12 +703,12 @@ namespace OpenSim.Region.Framework.Scenes public byte State { get; set; } - private AgentManager.ControlFlags m_AgentControlFlags; + private ACFlags m_AgentControlFlags; public uint AgentControlFlags { get { return (uint)m_AgentControlFlags; } - set { m_AgentControlFlags = (AgentManager.ControlFlags)value; } + set { m_AgentControlFlags = (ACFlags)value; } } public IClientAPI ControllingClient { get; set; } @@ -1053,9 +1053,9 @@ namespace OpenSim.Region.Framework.Scenes if(value) { if (Flying) - m_AgentControlFlags |= AgentManager.ControlFlags.AGENT_CONTROL_FLY; + m_AgentControlFlags |= ACFlags.AGENT_CONTROL_FLY; else - m_AgentControlFlags &= ~AgentManager.ControlFlags.AGENT_CONTROL_FLY; + m_AgentControlFlags &= ~ACFlags.AGENT_CONTROL_FLY; } m_inTransit = value; } @@ -1067,9 +1067,9 @@ namespace OpenSim.Region.Framework.Scenes // velocities - private const float AgentControlStopSlowVel = 0.2f; - public const float AgentControlNudgeVel = 0.5f; - public const float AgentControlNormalVel = 1.0f; + private const float AgentControlStopSlowVel = 0.2f * 4.096f; + public const float AgentControlNudgeVel = 0.4f * 4.096f; + public const float AgentControlNormalVel = 1.0f * 4.096f; // old normal speed was tuned to match sl normal plus Fast modifiers // so we need to rescale it @@ -1715,20 +1715,12 @@ namespace OpenSim.Region.Framework.Scenes PhysicsActor pa = Interlocked.Exchange(ref m_physActor, null); if (pa != null) { -// PhysicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients; - + //PhysicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients; pa.OnOutOfBounds -= OutOfBoundsCall; pa.OnCollisionUpdate -= PhysicsCollisionUpdate; pa.UnSubscribeEvents(); m_scene.PhysicsScene.RemoveAvatar(pa); - pa = null; } -// else -// { -// m_log.ErrorFormat( -// "[SCENE PRESENCE]: Attempt to remove physics actor for {0} on {1} but this scene presence has no physics actor", -// Name, Scene.RegionInfo.RegionName); -// } } public void Teleport(Vector3 pos) @@ -2202,7 +2194,7 @@ namespace OpenSim.Region.Framework.Scenes //m_log.DebugFormat("[CompleteMovement] WaitForUpdateAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts)); - bool flying = ((m_AgentControlFlags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); + bool flying = ((m_AgentControlFlags & ACFlags.AGENT_CONTROL_FLY) != 0); Vector3 look = Lookat; look.Z = 0f; @@ -2595,13 +2587,13 @@ namespace OpenSim.Region.Framework.Scenes /// public void HandleAgentUpdate(IClientAPI remoteClient, AgentUpdateArgs agentData) { -// m_log.DebugFormat( -// "[SCENE PRESENCE]: In {0} received agent update from {1}, flags {2}", -// Scene.Name, remoteClient.Name, (AgentManager.ControlFlags)agentData.ControlFlags); + //m_log.DebugFormat( + // "[SCENE PRESENCE]: In {0} received agent update from {1}, flags {2}", + // Scene.Name, remoteClient.Name, (ACFlags)agentData.ControlFlags); if (IsChildAgent) { -// m_log.DebugFormat("DEBUG: HandleAgentUpdate: child agent in {0}", Scene.Name); + //m_log.DebugFormat("DEBUG: HandleAgentUpdate: child agent in {0}", Scene.Name); return; } @@ -2639,7 +2631,7 @@ namespace OpenSim.Region.Framework.Scenes #region Inputs - AgentManager.ControlFlags flags = (AgentManager.ControlFlags)agentData.ControlFlags; + ACFlags flags = (ACFlags)agentData.ControlFlags; // The Agent's Draw distance setting // When we get to the point of re-computing neighbors everytime this @@ -2648,27 +2640,27 @@ namespace OpenSim.Region.Framework.Scenes DrawDistance = agentData.Far; - m_mouseLook = (flags & AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0; + m_mouseLook = (flags & ACFlags.AGENT_CONTROL_MOUSELOOK) != 0; // FIXME: This does not work as intended because the viewer only sends the lbutton down when the button // is first pressed, not whilst it is held down. If this is required in the future then need to look // for an AGENT_CONTROL_LBUTTON_UP event and make sure to handle cases where an initial DOWN is not // received (e.g. on holding LMB down on the avatar in a viewer). - m_leftButtonDown = (flags & AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0; + m_leftButtonDown = (flags & ACFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0; #endregion Inputs -// // Make anims work for client side autopilot -// if ((flags & AgentManager.ControlFlags.AGENT_CONTROL_AT_POS) != 0) -// m_updateCount = UPDATE_COUNT; -// -// // Make turning in place work -// if ((flags & AgentManager.ControlFlags.AGENT_CONTROL_YAW_POS) != 0 || -// (flags & AgentManager.ControlFlags.AGENT_CONTROL_YAW_NEG) != 0) -// m_updateCount = UPDATE_COUNT; + // Make anims work for client side autopilot + //if ((flags & ACFlags.AGENT_CONTROL_AT_POS) != 0) + // m_updateCount = UPDATE_COUNT; + + // Make turning in place work + //if ((flags & ACFlags.AGENT_CONTROL_YAW_POS) != 0 || + // (flags & ACFlags.AGENT_CONTROL_YAW_NEG) != 0) + // m_updateCount = UPDATE_COUNT; - if ((flags & AgentManager.ControlFlags.AGENT_CONTROL_STAND_UP) != 0) + if ((flags & ACFlags.AGENT_CONTROL_STAND_UP) != 0) { StandUp(); } @@ -2681,7 +2673,7 @@ namespace OpenSim.Region.Framework.Scenes uint flagsForScripts = (uint)flags; flags = RemoveIgnoredControls(flags, IgnoredControls); - if ((flags & AgentManager.ControlFlags.AGENT_CONTROL_SIT_ON_GROUND) != 0) + if ((flags & ACFlags.AGENT_CONTROL_SIT_ON_GROUND) != 0) HandleAgentSitOnGround(); // In the future, these values might need to go global. @@ -2737,7 +2729,7 @@ namespace OpenSim.Region.Framework.Scenes else if(mvToTarget) newFlying = actor.Flying; else - newFlying = ((flags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); + newFlying = ((flags & ACFlags.AGENT_CONTROL_FLY) != 0); if (actor.Flying != newFlying) { @@ -2757,13 +2749,15 @@ namespace OpenSim.Region.Framework.Scenes if (currflags != 0) { DCFlagKeyPressed = true; - update_movementflag = (currflags ^ oldflags) != 0; + //update_movementflag = (currflags ^ oldflags) != 0; + update_movementflag = currflags != 0; MovementFlag |= currflags; if((currflags & CONTROL_FLAG_NUDGE_MASK) != 0) { currflags >>= 19; - agent_velocity = AgentControlNudgeVel; + if(m_delayedStop < 0) + agent_velocity = AgentControlNudgeVel; } uint mask = 1; @@ -2782,7 +2776,7 @@ namespace OpenSim.Region.Framework.Scenes } // Detect AGENT_CONTROL_STOP state changes - if (AgentControlStopActive != ((flags & AgentManager.ControlFlags.AGENT_CONTROL_STOP) != 0)) + if (AgentControlStopActive != ((flags & ACFlags.AGENT_CONTROL_STOP) != 0)) { AgentControlStopActive = !AgentControlStopActive; update_movementflag = true; @@ -2822,25 +2816,25 @@ namespace OpenSim.Region.Framework.Scenes { // Landing detection code // Are the landing controls requirements filled? - //bool controlland = (flags & (AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG)) != 0; + //bool controlland = (flags & (ACFlags.AGENT_CONTROL_UP_NEG | ACFlags.AGENT_CONTROL_NUDGE_UP_NEG)) != 0; //m_log.Debug("[CONTROL]: " +flags); // Applies a satisfying roll effect to the avatar when flying. - const AgentManager.ControlFlags flagsLeft = AgentManager.ControlFlags.AGENT_CONTROL_TURN_LEFT | AgentManager.ControlFlags.AGENT_CONTROL_YAW_POS; - const AgentManager.ControlFlags flagsRight = AgentManager.ControlFlags.AGENT_CONTROL_TURN_RIGHT | AgentManager.ControlFlags.AGENT_CONTROL_YAW_NEG; + const ACFlags flagsLeft = ACFlags.AGENT_CONTROL_TURN_LEFT | ACFlags.AGENT_CONTROL_YAW_POS; + const ACFlags flagsRight = ACFlags.AGENT_CONTROL_TURN_RIGHT | ACFlags.AGENT_CONTROL_YAW_NEG; if ((flags & flagsLeft) == flagsLeft) { ApplyFlyingRoll( FLY_ROLL_RADIANS_PER_UPDATE, - (flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0, - (flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0); + (flags & ACFlags.AGENT_CONTROL_UP_POS) != 0, + (flags & ACFlags.AGENT_CONTROL_UP_NEG) != 0); } else if ((flags & flagsRight) == flagsRight) { ApplyFlyingRoll( -FLY_ROLL_RADIANS_PER_UPDATE, - (flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0, - (flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0); + (flags & ACFlags.AGENT_CONTROL_UP_POS) != 0, + (flags & ACFlags.AGENT_CONTROL_UP_NEG) != 0); } else { @@ -2875,7 +2869,6 @@ namespace OpenSim.Region.Framework.Scenes if (update_movementflag || (update_rotation && DCFlagKeyPressed && (!AgentControlStopActive || MovementFlag != 0))) { - if (AgentControlStopActive) { // if (MovementFlag == 0 && Animator.Falling) @@ -2898,17 +2891,19 @@ namespace OpenSim.Region.Framework.Scenes if (MovementFlag != 0) AddNewMovement(agent_control_v3, agent_velocity); else - m_delayedStop = Util.GetTimeStampMS() + 100.0; + m_delayedStop = Util.GetTimeStampMS() + 200.0; } } } -/* + else if((flags & ACFlags.AGENT_CONTROL_FINISH_ANIM) != 0) + Animator.UpdateMovementAnimations(); + /* if (update_movementflag && ParentID == 0 && m_delayedStop < 0) { -// m_log.DebugFormat("[SCENE PRESENCE]: Updating movement animations for {0}", Name); + //m_log.DebugFormat("[SCENE PRESENCE]: Updating movement animations for {0}", Name); Animator.UpdateMovementAnimations(); } -*/ + */ SendControlsToScripts(flagsForScripts); } @@ -2931,7 +2926,7 @@ namespace OpenSim.Region.Framework.Scenes { //m_log.DebugFormat( // "[SCENE PRESENCE]: In {0} received agent camera update from {1}, flags {2}", - // Scene.RegionInfo.RegionName, remoteClient.Name, (AgentManager.ControlFlags)agentData.ControlFlags); + // Scene.RegionInfo.RegionName, remoteClient.Name, (ACFlags)agentData.ControlFlags); if (IsChildAgent) return; @@ -2939,7 +2934,7 @@ namespace OpenSim.Region.Framework.Scenes if(IsInTransit) return; -// AgentManager.ControlFlags flags = (AgentManager.ControlFlags)agentData.ControlFlags; +// ACFlags flags = (ACFlags)agentData.ControlFlags; // Camera location in world. We'll need to raytrace // from this location from time to time. @@ -3091,8 +3086,8 @@ namespace OpenSim.Region.Framework.Scenes MovementFlag &= noMovFlagsMask; MovementFlag |= tmpAgentControlFlags; - m_AgentControlFlags &= unchecked((AgentManager.ControlFlags)noMovFlagsMask); - m_AgentControlFlags |= (AgentManager.ControlFlags)tmpAgentControlFlags; + m_AgentControlFlags &= unchecked((ACFlags)noMovFlagsMask); + m_AgentControlFlags |= (ACFlags)tmpAgentControlFlags; if (updated) agent_control_v3 += LocalVectorToTarget3D; @@ -3201,7 +3196,7 @@ namespace OpenSim.Region.Framework.Scenes Vector3 control = Vector3.Zero; if(HandleMoveToTargetUpdate(0.5f, ref control)) - AddNewMovement(control); + AddNewMovement(control, AgentControlNormalVel); } /// @@ -3221,7 +3216,7 @@ namespace OpenSim.Region.Framework.Scenes // resting animation (e.g. hover or stand). NPCs don't have a client that will quickly reset this flag. // However, the line is here rather than in the NPC module since it also appears necessary to stop a // viewer that uses "go here" from juddering on all subsequent avatar movements. - AgentControlFlags = (uint)AgentManager.ControlFlags.NONE; + AgentControlFlags = (uint)ACFlags.NONE; if(IsNPC) Animator.UpdateMovementAnimations(); } @@ -3799,11 +3794,11 @@ namespace OpenSim.Region.Framework.Scenes /// The vector in which to move. This is relative to the rotation argument /// /// Optional additional speed modifier for this particular add. Default is 1 - public void AddNewMovement(Vector3 vec, float thisAddSpeedModifier = 1, bool breaking = false) + public void AddNewMovement(Vector3 vec, float thisAddSpeedModifier, bool breaking = false) { - // m_log.DebugFormat( - // "[SCENE PRESENCE]: Adding new movement {0} with rotation {1}, thisAddSpeedModifier {2} for {3}", - // vec, Rotation, thisAddSpeedModifier, Name); + // m_log.DebugFormat( + // "[SCENE PRESENCE]: Adding new movement {0} with rotation {1}, thisAddSpeedModifier {2} for {3}", + // vec, Rotation, thisAddSpeedModifier, Name); m_delayedStop = -1; // rotate from avatar coord space to world Quaternion rot = Rotation; @@ -3824,19 +3819,19 @@ namespace OpenSim.Region.Framework.Scenes bool notmvtrgt = !m_movingToTarget || m_moveToSpeed <= 0; // odd rescalings if(notmvtrgt) - direc *= 4.096f * SpeedModifier * thisAddSpeedModifier; + direc *= SpeedModifier * thisAddSpeedModifier; else direc *= m_moveToSpeed; - // m_log.DebugFormat("[SCENE PRESENCE]: Force to apply before modification was {0} for {1}", direc, Name); + //m_log.DebugFormat("[SCENE PRESENCE]: Force to apply before modification was {0} for {1}", direc, Name); if (Animator.currentControlState == ScenePresenceAnimator.motionControlStates.falling && (PhysicsActor == null || !PhysicsActor.PIDHoverActive)) { if (breaking) direc.Z = -9999f; //hack to tell physics to stop on Z - else - direc = Vector3.Zero; + //else + //direc = Vector3.Zero; } else if (Flying) { @@ -3849,9 +3844,9 @@ namespace OpenSim.Region.Framework.Scenes } else if (IsColliding) { - if (direc.Z > 2.0f && notmvtrgt) // reinforce jumps + if (((AgentControlFlags & (uint)ACFlags.AGENT_CONTROL_UP_POS) != 0) && notmvtrgt) // reinforce jumps { - direc.Z *= 2.6f; + direc.Z = 0; } else if (direc.Z < 0) // on a surface moving down (pg down) only changes animation direc.Z = 0; @@ -3892,14 +3887,14 @@ namespace OpenSim.Region.Framework.Scenes m_delayedStop = -1; Vector3 control = Vector3.Zero; if(HandleMoveToTargetUpdate(0.5f, ref control)) - AddNewMovement(control); + AddNewMovement(control, AgentControlNormalVel); } else if(m_delayedStop > 0) { if(IsSatOnObject) m_delayedStop = -1; else if(Util.GetTimeStampMS() > m_delayedStop) - AddNewMovement(Vector3.Zero); + AddNewMovement(Vector3.Zero, 0); } if (Appearance.AvatarSize != m_lastSize) @@ -4415,9 +4410,9 @@ namespace OpenSim.Region.Framework.Scenes if (IsChildAgent) return; - m_scene.ForEachScenePresence(delegate(ScenePresence p) + m_scene.ForEachScenePresence(delegate (ScenePresence p) { - if(p.IsNPC) + if (p.IsNPC) return; if (ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && !p.IsViewerUIGod) return; @@ -5050,13 +5045,13 @@ namespace OpenSim.Region.Framework.Scenes m_headrotation = cAgent.HeadRotation; Rotation = cAgent.BodyRotation; - m_AgentControlFlags = (AgentManager.ControlFlags)cAgent.ControlFlags; + m_AgentControlFlags = (ACFlags)cAgent.ControlFlags; SetAlwaysRun = cAgent.AlwaysRun; Appearance = new AvatarAppearance(cAgent.Appearance, true, true); /* - bool isFlying = ((m_AgentControlFlags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); + bool isFlying = ((m_AgentControlFlags & ACFlags.AGENT_CONTROL_FLY) != 0); if (PhysicsActor != null) { @@ -6019,56 +6014,56 @@ namespace OpenSim.Region.Framework.Scenes ScriptControlled allflags; // convert mouse from edge to level - if ((flags & ((uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_UP | unchecked((uint)AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_UP))) != 0) + if ((flags & ((uint)ACFlags.AGENT_CONTROL_LBUTTON_UP | unchecked((uint)ACFlags.AGENT_CONTROL_ML_LBUTTON_UP))) != 0) { allflags = ScriptControlled.CONTROL_ZERO; } else // recover last state of mouse allflags = LastCommands & (ScriptControlled.CONTROL_ML_LBUTTON | ScriptControlled.CONTROL_LBUTTON); - if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_DOWN) != 0) + if ((flags & (uint)ACFlags.AGENT_CONTROL_ML_LBUTTON_DOWN) != 0) allflags |= ScriptControlled.CONTROL_ML_LBUTTON; - if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0) + if ((flags & (uint)ACFlags.AGENT_CONTROL_LBUTTON_DOWN) != 0) allflags |= ScriptControlled.CONTROL_LBUTTON; // find all activated controls, whether the scripts are interested in them or not - if ((flags & (uint)(AgentManager.ControlFlags.AGENT_CONTROL_AT_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS)) != 0) + if ((flags & (uint)(ACFlags.AGENT_CONTROL_AT_POS | ACFlags.AGENT_CONTROL_NUDGE_AT_POS)) != 0) { allflags |= ScriptControlled.CONTROL_FWD; } - if ((flags & (uint)(AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG)) != 0) + if ((flags & (uint)(ACFlags.AGENT_CONTROL_AT_NEG | ACFlags.AGENT_CONTROL_NUDGE_AT_NEG)) != 0) { allflags |= ScriptControlled.CONTROL_BACK; } - if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_POS) != 0) + if ((flags & (uint)ACFlags.AGENT_CONTROL_UP_POS) != 0 || (flags & (uint)ACFlags.AGENT_CONTROL_NUDGE_UP_POS) != 0) { allflags |= ScriptControlled.CONTROL_UP; } - if ((flags & (uint)(AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG)) != 0) + if ((flags & (uint)(ACFlags.AGENT_CONTROL_UP_NEG | ACFlags.AGENT_CONTROL_NUDGE_UP_NEG)) != 0) { allflags |= ScriptControlled.CONTROL_DOWN; } - if ((flags & (uint)(AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS)) != 0) + if ((flags & (uint)(ACFlags.AGENT_CONTROL_LEFT_POS | ACFlags.AGENT_CONTROL_NUDGE_LEFT_POS)) != 0) { allflags |= ScriptControlled.CONTROL_LEFT; } - if ((flags & (uint)(AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG)) != 0) + if ((flags & (uint)(ACFlags.AGENT_CONTROL_LEFT_NEG | ACFlags.AGENT_CONTROL_NUDGE_LEFT_NEG)) != 0) { allflags |= ScriptControlled.CONTROL_RIGHT; } - if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_YAW_NEG) != 0) + if ((flags & (uint)ACFlags.AGENT_CONTROL_YAW_NEG) != 0) { allflags |= ScriptControlled.CONTROL_ROT_RIGHT; } - if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_YAW_POS) != 0) + if ((flags & (uint)ACFlags.AGENT_CONTROL_YAW_POS) != 0) { allflags |= ScriptControlled.CONTROL_ROT_LEFT; } @@ -6096,39 +6091,31 @@ namespace OpenSim.Region.Framework.Scenes } } - internal static AgentManager.ControlFlags RemoveIgnoredControls(AgentManager.ControlFlags flags, ScriptControlled ignored) + internal static ACFlags RemoveIgnoredControls(ACFlags flags, ScriptControlled ignored) { if (ignored == ScriptControlled.CONTROL_ZERO) return flags; if ((ignored & ScriptControlled.CONTROL_BACK) != 0) - flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG); + flags &= ~(ACFlags.AGENT_CONTROL_AT_NEG | ACFlags.AGENT_CONTROL_NUDGE_AT_NEG); if ((ignored & ScriptControlled.CONTROL_FWD) != 0) - flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS | AgentManager.ControlFlags.AGENT_CONTROL_AT_POS); + flags &= ~(ACFlags.AGENT_CONTROL_NUDGE_AT_POS | ACFlags.AGENT_CONTROL_AT_POS); if ((ignored & ScriptControlled.CONTROL_DOWN) != 0) - flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG); + flags &= ~(ACFlags.AGENT_CONTROL_UP_NEG | ACFlags.AGENT_CONTROL_NUDGE_UP_NEG); if ((ignored & ScriptControlled.CONTROL_UP) != 0) - flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_POS | AgentManager.ControlFlags.AGENT_CONTROL_UP_POS); + flags &= ~(ACFlags.AGENT_CONTROL_NUDGE_UP_POS | ACFlags.AGENT_CONTROL_UP_POS); if ((ignored & ScriptControlled.CONTROL_LEFT) != 0) - flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS); + flags &= ~(ACFlags.AGENT_CONTROL_LEFT_POS | ACFlags.AGENT_CONTROL_NUDGE_LEFT_POS); if ((ignored & ScriptControlled.CONTROL_RIGHT) != 0) - flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG); + flags &= ~(ACFlags.AGENT_CONTROL_NUDGE_LEFT_NEG | ACFlags.AGENT_CONTROL_LEFT_NEG); if ((ignored & ScriptControlled.CONTROL_ROT_LEFT) != 0) - flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_YAW_NEG); + flags &= ~(ACFlags.AGENT_CONTROL_YAW_NEG); if ((ignored & ScriptControlled.CONTROL_ROT_RIGHT) != 0) - flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_YAW_POS); + flags &= ~(ACFlags.AGENT_CONTROL_YAW_POS); if ((ignored & ScriptControlled.CONTROL_ML_LBUTTON) != 0) - flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_ML_LBUTTON_DOWN); + flags &= ~(ACFlags.AGENT_CONTROL_ML_LBUTTON_DOWN); if ((ignored & ScriptControlled.CONTROL_LBUTTON) != 0) - flags &= ~(AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_UP | AgentManager.ControlFlags.AGENT_CONTROL_LBUTTON_DOWN); - - //DIR_CONTROL_FLAG_FORWARD = AgentManager.ControlFlags.AGENT_CONTROL_AT_POS, - //DIR_CONTROL_FLAG_BACK = AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG, - //DIR_CONTROL_FLAG_LEFT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS, - //DIR_CONTROL_FLAG_RIGHT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG, - //DIR_CONTROL_FLAG_UP = AgentManager.ControlFlags.AGENT_CONTROL_UP_POS, - //DIR_CONTROL_FLAG_DOWN = AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG, - //DIR_CONTROL_FLAG_DOWN_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG + flags &= ~(ACFlags.AGENT_CONTROL_LBUTTON_UP | ACFlags.AGENT_CONTROL_LBUTTON_DOWN); return flags; } @@ -7011,15 +6998,16 @@ namespace OpenSim.Region.Framework.Scenes p.ControllingClient.SendKillObject(ids); } -/* -// kill with hack + /* + // kill with hack public void SendKillTo(ScenePresence p) { foreach (SceneObjectGroup sog in m_attachments) p.ControllingClient.SendPartFullUpdate(sog.RootPart, LocalId + 1); p.ControllingClient.SendKillObject(new List { LocalId }); } -*/ + */ + public void SendViewTo(ScenePresence p) { SendAvatarDataToAgentNF(p);