From f66b58cf00d4dcbd9d11030809bf9766330966f2 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Wed, 10 Sep 2014 19:30:57 +0100 Subject: *TEST* add movement states SIT and SITGROUND. ScenePresence on SIT, SITGROUND or STAND, sets directly the state, and desired sitAnimation for default sits --- .../Scenes/Animation/ScenePresenceAnimator.cs | 47 +++++++++++++++------- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 28 ++++++++++--- 2 files changed, 54 insertions(+), 21 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs index bbc5745..4d1d913 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs @@ -200,21 +200,28 @@ namespace OpenSim.Region.Framework.Scenes.Animation if (overridenAnim != UUID.Zero) { m_animations.SetDefaultAnimation(overridenAnim, m_scenePresence.ControllingClient.NextAnimationSequenceNumber, m_scenePresence.UUID); - m_scenePresence.SendScriptEventToAttachments("changed", new Object[] { (int)Changed.ANIMATION}); + m_scenePresence.SendScriptEventToAttachments("changed", new Object[] { (int)Changed.ANIMATION }); SendAnimPack(); ret = true; } - else if (m_animations.TrySetDefaultAnimation( - anim, m_scenePresence.ControllingClient.NextAnimationSequenceNumber, m_scenePresence.UUID)) + else { -// m_log.DebugFormat( -// "[SCENE PRESENCE ANIMATOR]: Updating movement animation to {0} for {1}", -// anim, m_scenePresence.Name); + // translate sit and sitground state animations + if (anim == "SIT" || anim == "SITGROUND") + anim = m_scenePresence.sitAnimation; - // 16384 is CHANGED_ANIMATION - m_scenePresence.SendScriptEventToAttachments("changed", new Object[] { (int)Changed.ANIMATION}); - SendAnimPack(); - ret = true; + 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); + + // 16384 is CHANGED_ANIMATION + m_scenePresence.SendScriptEventToAttachments("changed", new Object[] { (int)Changed.ANIMATION }); + SendAnimPack(); + ret = true; + } } } else @@ -236,6 +243,11 @@ namespace OpenSim.Region.Framework.Scenes.Animation const float JUMP_PERIOD = 800f; #region Inputs + if (m_scenePresence.SitGround) + return "SITGROUND"; + if (m_scenePresence.ParentID != 0 || m_scenePresence.ParentUUID != UUID.Zero) + return "SIT"; + AgentManager.ControlFlags controlFlags = (AgentManager.ControlFlags)m_scenePresence.AgentControlFlags; PhysicsActor actor = m_scenePresence.PhysicsActor; @@ -491,15 +503,20 @@ namespace OpenSim.Region.Framework.Scenes.Animation public bool ForceUpdateMovementAnimations() { - // m_log.DebugFormat("[SCENE PRESENCE ANIMATOR]: Updating movement animations for {0}", m_scenePresence.Name); + lock (m_animations) + { + CurrentMovementAnimation = DetermineMovementAnimation(); + return TrySetMovementAnimation(CurrentMovementAnimation); + } + } - bool ret = false; + public bool SetMovementAnimations(string motionState) + { lock (m_animations) { - string newMovementAnimation = DetermineMovementAnimation(); - ret = TrySetMovementAnimation(newMovementAnimation); + CurrentMovementAnimation = motionState; + return TrySetMovementAnimation(CurrentMovementAnimation); } - return ret; } public UUID[] GetAnimationArray() diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 5da92f9..fd1bab6 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -243,7 +243,7 @@ namespace OpenSim.Region.Framework.Scenes /// Server Side Animation Override /// public MovementAnimationOverrides Overrides { get; private set; } - + public String sitAnimation = "SIT"; /// /// Attachments recorded on this avatar. /// @@ -2779,7 +2779,11 @@ namespace OpenSim.Region.Framework.Scenes SendAvatarDataToAllAgents(); } - Animator.TrySetMovementAnimation("STAND"); + // reset to default sitAnimation + sitAnimation = "SIT"; + +// Animator.TrySetMovementAnimation("STAND"); + Animator.SetMovementAnimations("STAND"); TriggerScenePresenceUpdated(); } @@ -3058,11 +3062,18 @@ namespace OpenSim.Region.Framework.Scenes SendAvatarDataToAllAgents(); +/* if(status == 3) Animator.TrySetMovementAnimation("SIT_GROUND"); else Animator.TrySetMovementAnimation("SIT"); +*/ + if (status == 3) + sitAnimation = "SIT_GROUND"; + else + sitAnimation = "SIT"; + Animator.SetMovementAnimations("SIT"); part.ParentGroup.TriggerScriptChangedEvent(Changed.LINK); } @@ -3164,12 +3175,13 @@ namespace OpenSim.Region.Framework.Scenes SendAvatarDataToAllAgents(); - String sitAnimation = "SIT"; + sitAnimation = "SIT"; if (!String.IsNullOrEmpty(part.SitAnimation)) { sitAnimation = part.SitAnimation; } - Animator.TrySetMovementAnimation(sitAnimation); +// Animator.TrySetMovementAnimation(sitAnimation); + Animator.SetMovementAnimations("SIT"); TriggerScenePresenceUpdated(); } } @@ -3181,10 +3193,14 @@ namespace OpenSim.Region.Framework.Scenes // m_updateCount = 0; // Kill animation update burst so that the SIT_G.. will stick.. m_AngularVelocity = Vector3.Zero; - Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED"); - TriggerScenePresenceUpdated(); + sitAnimation = "SIT_GROUND_CONSTRAINED"; +// Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED"); +// TriggerScenePresenceUpdated(); SitGround = true; RemoveFromPhysicalScene(); + + Animator.SetMovementAnimations("SITGROUND"); + TriggerScenePresenceUpdated(); } /// -- cgit v1.1