From 6d1f1103f3f2cfd6e123e8b7c42ff7561109bc50 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Wed, 1 Oct 2014 16:36:06 +0100 Subject: clean up coments, use a even faster XY move request detection --- .../Scenes/Animation/ScenePresenceAnimator.cs | 84 +++++----------------- 1 file changed, 19 insertions(+), 65 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs index 56b8b30..2d1b0df 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs @@ -201,9 +201,9 @@ namespace OpenSim.Region.Framework.Scenes.Animation bool ret = false; if (!m_scenePresence.IsChildAgent) { - // m_log.DebugFormat( - // "[SCENE PRESENCE ANIMATOR]: Setting movement animation {0} for {1}", - // anim, m_scenePresence.Name); +// m_log.DebugFormat( +// "[SCENE PRESENCE ANIMATOR]: Setting movement animation {0} for {1}", +// anim, m_scenePresence.Name); if (aoSitGndAnim != UUID.Zero) { @@ -240,9 +240,9 @@ namespace OpenSim.Region.Framework.Scenes.Animation if (m_animations.TrySetDefaultAnimation( anim, m_scenePresence.ControllingClient.NextAnimationSequenceNumber, m_scenePresence.UUID)) { - // m_log.DebugFormat( - // "[SCENE PRESENCE ANIMATOR]: Updating movement animation to {0} for {1}", - // anim, m_scenePresence.Name); +// m_log.DebugFormat( +// "[SCENE PRESENCE ANIMATOR]: Updating movement animation to {0} for {1}", +// anim, m_scenePresence.Name); // 16384 is CHANGED_ANIMATION m_scenePresence.SendScriptEventToAttachments("changed", new Object[] { (int)Changed.ANIMATION }); @@ -299,26 +299,20 @@ namespace OpenSim.Region.Framework.Scenes.Animation AgentManager.ControlFlags controlFlags = (AgentManager.ControlFlags)m_scenePresence.AgentControlFlags; PhysicsActor actor = m_scenePresence.PhysicsActor; - -// there is no point on having this meaningless movement values, much less in world coordenates -// situation may change if vertical Axis of avatar is allowed to rotate. -// then jumping etc will need some care - - // Create forward and left vectors from the current avatar rotation - /* yes matrix are better, but getting it from the Quaternion will kill the advantage - Matrix4 rotMatrix = Matrix4.CreateFromQuaternion(m_scenePresence.Rotation); - Vector3 fwd = Vector3.Transform(Vector3.UnitX, rotMatrix); - Vector3 left = Vector3.Transform(Vector3.UnitY, rotMatrix); - */ - // there is still a better way -// Vector3 fwd = Vector3.UnitX * m_scenePresence.Rotation; -// Vector3 left = Vector3.UnitY * m_scenePresence.Rotation; + const AgentManager.ControlFlags ANYXYMASK = ( + AgentManager.ControlFlags.AGENT_CONTROL_AT_POS | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS | + AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG | AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG | + 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 + ); // 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); @@ -328,27 +322,13 @@ namespace OpenSim.Region.Framework.Scenes.Animation //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 = (heldForward || heldBack || heldLeft || heldRight); + bool heldOnXY = ((controlFlags & ANYXYMASK) != 0); if (heldOnXY || heldUp || heldDown) { heldTurnLeft = false; heldTurnRight = false; } - - // Direction in which the avatar is trying to move -/* - Vector3 move = Vector3.Zero; - if (heldForward) { move.X += fwd.X; move.Y += fwd.Y; } - if (heldBack) { move.X -= fwd.X; move.Y -= fwd.Y; } - if (heldLeft) { move.X += left.X; move.Y += left.Y; } - if (heldRight) { move.X -= left.X; move.Y -= left.Y; } - if (heldUp) { move.Z += 1; } - if (heldDown) { move.Z -= 1; } -*/ - - - // Is the avatar trying to move? - // bool moving = (move != Vector3.Zero); + #endregion Inputs // no physics actor case @@ -357,7 +337,6 @@ namespace OpenSim.Region.Framework.Scenes.Animation // well what to do? currentControlState = motionControlStates.onsurface; -// if (move.X != 0f || move.Y != 0f) if (heldOnXY) return "WALK"; @@ -377,18 +356,14 @@ namespace OpenSim.Region.Framework.Scenes.Animation currentControlState = motionControlStates.flying; -// if (move.X != 0f || move.Y != 0f) if (heldOnXY) { return (m_scenePresence.Scene.m_useFlySlow ? "FLYSLOW" : "FLY"); } -// else if (move.Z > 0f) else if (heldUp) - { return "HOVER_UP"; } -// else if (move.Z < 0f) else if (heldDown) { if (isColliding) @@ -444,7 +419,6 @@ namespace OpenSim.Region.Framework.Scenes.Animation } // Check if the user has stopped walking just now -// if (CurrentMovementAnimation == "WALK" && move == Vector3.Zero)) if (CurrentMovementAnimation == "WALK" && !heldOnXY && !heldDown && !heldUp) return "STAND"; @@ -457,7 +431,6 @@ namespace OpenSim.Region.Framework.Scenes.Animation #region Jumping // section added for jumping... -// if (isColliding && move.Z > 0f && currentControlState != motionControlStates.jumping) if (isColliding && heldUp && currentControlState != motionControlStates.jumping) { // Start jumping, prejump @@ -538,13 +511,11 @@ namespace OpenSim.Region.Framework.Scenes.Animation // next section moved outside paren. and realigned for jumping -// if (move.X != 0f || move.Y != 0f) if (heldOnXY) { currentControlState = motionControlStates.onsurface; Falling = false; // Walking / crouchwalking / running -// if (move.Z < 0f) if (heldDown) { return "CROUCHWALK"; @@ -564,7 +535,6 @@ namespace OpenSim.Region.Framework.Scenes.Animation currentControlState = motionControlStates.onsurface; Falling = false; // Not walking -// if (move.Z < 0) if(heldDown) return "CROUCH"; else if (heldTurnLeft) @@ -595,9 +565,9 @@ namespace OpenSim.Region.Framework.Scenes.Animation { CurrentMovementAnimation = newMovementAnimation; - // m_log.DebugFormat( - // "[SCENE PRESENCE ANIMATOR]: Determined animation {0} for {1} in UpdateMovementAnimations()", - // CurrentMovementAnimation, m_scenePresence.Name); +// m_log.DebugFormat( +// "[SCENE PRESENCE ANIMATOR]: Determined animation {0} for {1} in UpdateMovementAnimations()", +// CurrentMovementAnimation, m_scenePresence.Name); // Only set it if it's actually changed, give a script // a chance to stop a default animation @@ -701,22 +671,6 @@ namespace OpenSim.Region.Framework.Scenes.Animation /// public void SendAnimPack(UUID[] animations, int[] seqs, UUID[] objectIDs) { - /* - if (m_scenePresence.IsChildAgent) - return; - - // m_log.DebugFormat( - // "[SCENE PRESENCE ANIMATOR]: Sending anim pack with animations '{0}', sequence '{1}', uuids '{2}'", - // string.Join(",", Array.ConvertAll(animations, a => a.ToString())), - // string.Join(",", Array.ConvertAll(seqs, s => s.ToString())), - // string.Join(",", Array.ConvertAll(objectIDs, o => o.ToString()))); - - m_scenePresence.Scene.ForEachClient( - delegate(IClientAPI client) - { - client.SendAnimations(animations, seqs, m_scenePresence.ControllingClient.AgentId, objectIDs); - }); - */ m_scenePresence.SendAnimPack(animations, seqs, objectIDs); } -- cgit v1.1