From 2a6597f61e6a21a6950a0b951e56a13c54e49e21 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 2 Dec 2011 22:14:47 +0000 Subject: Remove pointless Animator.TrySetMovementAnimation("STAND") in ScenePresnece constructor. Comment was right - it is indeed useless since SP always starts off as child and TrySetMovementAnimation screens out child SP --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 3 --- 1 file changed, 3 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index c2d3501..1c2025c 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -782,9 +782,6 @@ namespace OpenSim.Region.Framework.Scenes AdjustKnownSeeds(); - // TODO: I think, this won't send anything, as we are still a child here... - Animator.TrySetMovementAnimation("STAND"); - // we created a new ScenePresence (a new child agent) in a fresh region. // Request info about all the (root) agents in this region // Note: This won't send data *to* other clients in that region (children don't send) -- cgit v1.1 From 054ebe8878cbd1552fe96c0df631f50d5c2409d3 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Fri, 2 Dec 2011 23:56:01 +0000 Subject: Stop some places where we're trying to reset animations in child agents where such requests are ignored. --- .../Scenes/Animation/ScenePresenceAnimator.cs | 13 ++++++++++- OpenSim/Region/Framework/Scenes/Scene.cs | 1 - OpenSim/Region/Framework/Scenes/ScenePresence.cs | 25 ++++++++++------------ 3 files changed, 23 insertions(+), 16 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 4cf854e..6b1208c 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs @@ -131,8 +131,11 @@ namespace OpenSim.Region.Framework.Scenes.Animation public void ResetAnimations() { +// m_log.DebugFormat( +// "[SCENE PRESENCE ANIMATOR]: Resetting animations for {0} in {1}", +// m_scenePresence.Name, m_scenePresence.Scene.RegionInfo.RegionName); + m_animations.Clear(); - TrySetMovementAnimation("STAND"); } /// @@ -155,6 +158,14 @@ 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)); +// } } /// diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 9a71cd4..3ac6327 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -3700,7 +3700,6 @@ namespace OpenSim.Region.Framework.Scenes return false; } - ScenePresence childAgentUpdate = WaitGetScenePresence(cAgentData.AgentID); if (childAgentUpdate != null) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 1c2025c..b93b67d 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -995,13 +995,17 @@ namespace OpenSim.Region.Framework.Scenes /// /// This turns a root agent into a child agent + /// + /// /// when an agent departs this region for a neighbor, this gets called. /// /// It doesn't get called for a teleport. Reason being, an agent that /// teleports out may not end up anywhere near this region - /// + /// public void MakeChildAgent() { + m_log.DebugFormat("[SCENE PRESENCE]: Making {0} a child agent in {1}", Name, Scene.RegionInfo.RegionName); + // Reset these so that teleporting in and walking out isn't seen // as teleporting back TeleportFlags = TeleportFlags.Default; @@ -2295,11 +2299,6 @@ namespace OpenSim.Region.Framework.Scenes { m_updateCount = 0; // Kill animation update burst so that the SIT_G.. will stick. Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED"); - - // TODO: This doesn't prevent the user from walking yet. - // Setting parent ID would fix this, if we knew what value - // to use. Or we could add a m_isSitting variable. - //Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED"); SitGround = true; RemoveFromPhysicalScene(); } @@ -2908,9 +2907,12 @@ namespace OpenSim.Region.Framework.Scenes public void Reset() { +// m_log.DebugFormat("[SCENE PRESENCE]: Resetting {0} in {1}", Name, Scene.RegionInfo.RegionName); + // Put the child agent back at the center AbsolutePosition = new Vector3(((float)Constants.RegionSize * 0.5f), ((float)Constants.RegionSize * 0.5f), 70); + Animator.ResetAnimations(); } @@ -3133,7 +3135,7 @@ namespace OpenSim.Region.Framework.Scenes } } - public void CopyFrom(AgentData cAgent) + private void CopyFrom(AgentData cAgent) { m_originRegionID = cAgent.RegionID; @@ -3192,13 +3194,8 @@ namespace OpenSim.Region.Framework.Scenes } } catch { } - // Animations - try - { - Animator.ResetAnimations(); - Animator.Animations.FromArray(cAgent.Anims); - } - catch { } + + Animator.Animations.FromArray(cAgent.Anims); if (cAgent.AttachmentObjects != null && cAgent.AttachmentObjects.Count > 0) { -- cgit v1.1 From 96c191f4fdbd64009fc210b8c911c832723bb10e Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 00:09:18 +0000 Subject: Stop SP.HandleAgentUpdate() and PhysicsCollisionUpdate() from being processed if we're dealing with a child ScenePresence. Neither of these can have any effect on child agents Now leaving warning about trying to set animation on a child agent active. Might temporarily pop up now and again. --- .../Framework/Scenes/Animation/ScenePresenceAnimator.cs | 14 ++++++-------- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 11 +++++++---- 2 files changed, 13 insertions(+), 12 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 6b1208c..a2805d2 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs @@ -158,14 +158,12 @@ 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); + } } /// diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index b93b67d..c517978 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -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) @@ -3280,6 +3280,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 -- cgit v1.1 From 5ba8ca5662efb9c4f595e9a703535661d72e5b2f Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 00:27:21 +0000 Subject: Rename ScenePresenceAnimator.GetMovementAnimation() -> DetermineMovementAnimation() for better code readability --- .../Framework/Scenes/Animation/ScenePresenceAnimator.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 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 a2805d2..cac936c 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs @@ -59,6 +59,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation get { return m_movementAnimation; } } protected string m_movementAnimation = "CROUCH"; + private int m_animTickFall; public int m_animTickJump; // ScenePresence has to see this to control +Z force public bool m_jumping = false; @@ -146,6 +147,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)) { @@ -169,7 +174,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation /// /// This method determines the proper movement related animation /// - public string GetMovementAnimation() + public string DetermineMovementAnimation() { const float FALL_DELAY = 800f; const float PREJUMP_DELAY = 200f; @@ -283,7 +288,6 @@ namespace OpenSim.Region.Framework.Scenes.Animation int jumptime; jumptime = Environment.TickCount - m_animTickJump; - if ((move.Z > 0f) && (!m_jumping)) { // Start jumping, prejump @@ -387,6 +391,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation #endregion Ground Movement m_falling = false; + return m_movementAnimation; } @@ -395,7 +400,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation /// public void UpdateMovementAnimations() { - m_movementAnimation = GetMovementAnimation(); + m_movementAnimation = DetermineMovementAnimation(); TrySetMovementAnimation(m_movementAnimation); } -- cgit v1.1 From 8185ce8b4afab459655f5cd362b2c6bbb98c28c3 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 00:30:13 +0000 Subject: Do a cagent.Anims != null check in SP.CopyFrom() --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index c517978..7156137 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -3195,7 +3195,9 @@ namespace OpenSim.Region.Framework.Scenes } catch { } - Animator.Animations.FromArray(cAgent.Anims); + // 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) { -- cgit v1.1 From 0ca8491bbeab74e4cb50521d4857104c7e0a59b9 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 00:40:08 +0000 Subject: refactor: Use just ScenePresenceAnimator.CurrentMovementAnimation rather than duplicating it with m_movementAnimation --- .../Scenes/Animation/ScenePresenceAnimator.cs | 26 ++++++++++------------ 1 file changed, 12 insertions(+), 14 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 cac936c..2a6b8ea 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs @@ -54,11 +54,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation /// /// The current movement animation /// - 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 @@ -80,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) @@ -174,7 +171,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation /// /// This method determines the proper movement related animation /// - public string DetermineMovementAnimation() + private string DetermineMovementAnimation() { const float FALL_DELAY = 800f; const float PREJUMP_DELAY = 200f; @@ -277,7 +274,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation return "FALLDOWN"; } - return m_movementAnimation; + return CurrentMovementAnimation; } #endregion Falling/Floating/Landing @@ -331,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; @@ -344,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 { @@ -392,7 +390,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation m_falling = false; - return m_movementAnimation; + return CurrentMovementAnimation; } /// @@ -400,8 +398,8 @@ namespace OpenSim.Region.Framework.Scenes.Animation /// public void UpdateMovementAnimations() { - m_movementAnimation = DetermineMovementAnimation(); - TrySetMovementAnimation(m_movementAnimation); + CurrentMovementAnimation = DetermineMovementAnimation(); + TrySetMovementAnimation(CurrentMovementAnimation); } public UUID[] GetAnimationArray() -- cgit v1.1 From f08aad8a403e18625c01c0b3b4b6d4248476a64b Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 01:47:12 +0000 Subject: For now, disable mechanism to limit avatar animation updates since this causes avatars to never reach the correct animation after some actions. This reverts to situation where animation updates are made each frame on SP.PhysicsCollisionUpdate (though a packet is only sent if the anim actually changes). m_updateCount was not being update on various avatar state changes, causing the correct animations to never be sent. Always setting in HandleAgentUpdate() is not enough since the avatar is continually sending AgentUpdate packets. One would need to identify all the conditions under which animations need to play out and set m_updateCount appropriately in SP.HandleAgentUpdate() --- .../Scenes/Animation/ScenePresenceAnimator.cs | 5 +++ OpenSim/Region/Framework/Scenes/ScenePresence.cs | 46 +++++++++++----------- 2 files changed, 28 insertions(+), 23 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 2a6b8ea..43cfd80 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs @@ -399,6 +399,11 @@ namespace OpenSim.Region.Framework.Scenes.Animation public void UpdateMovementAnimations() { CurrentMovementAnimation = DetermineMovementAnimation(); + +// m_log.DebugFormat( +// "[SCENE PRESENCE ANIMATOR]: Determined animation {0} for {1} in UpdateMovementAnimations()", +// CurrentMovementAnimation, m_scenePresence.Name); + TrySetMovementAnimation(CurrentMovementAnimation); } diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 7156137..663c9ae 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -149,9 +149,9 @@ namespace OpenSim.Region.Framework.Scenes } private bool m_wasFlying; // add for fly velocity control - private int m_lastColCount = -1; //KF: Look for Collision chnages - private int m_updateCount = 0; //KF: Update Anims for a while - private static readonly int UPDATE_COUNT = 10; // how many frames to update for +// private int m_lastColCount = -1; //KF: Look for Collision chnages +// private int m_updateCount = 0; //KF: Update Anims for a while +// private static readonly int UPDATE_COUNT = 10; // how many frames to update for private TeleportFlags m_teleportFlags; public TeleportFlags TeleportFlags @@ -1366,14 +1366,14 @@ namespace OpenSim.Region.Framework.Scenes #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 & 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; if ((flags & AgentManager.ControlFlags.AGENT_CONTROL_STAND_UP) != 0) { @@ -2297,7 +2297,7 @@ namespace OpenSim.Region.Framework.Scenes public void HandleAgentSitOnGround() { - m_updateCount = 0; // Kill animation update burst so that the SIT_G.. will stick. +// m_updateCount = 0; // Kill animation update burst so that the SIT_G.. will stick. Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED"); SitGround = true; RemoveFromPhysicalScene(); @@ -3290,11 +3290,11 @@ namespace OpenSim.Region.Framework.Scenes // as of this comment the interval is set in AddToPhysicalScene if (Animator != null) { - if (m_updateCount > 0) - { +// if (m_updateCount > 0) +// { Animator.UpdateMovementAnimations(); - m_updateCount--; - } +// m_updateCount--; +// } } CollisionEventUpdate collisionData = (CollisionEventUpdate)e; @@ -3302,13 +3302,13 @@ namespace OpenSim.Region.Framework.Scenes CollisionPlane = Vector4.UnitW; - // No collisions at all means we may be flying. Update always - // to make falling work - if (m_lastColCount != coldata.Count || coldata.Count == 0) - { - m_updateCount = UPDATE_COUNT; - m_lastColCount = coldata.Count; - } +// // No collisions at all means we may be flying. Update always +// // to make falling work +// if (m_lastColCount != coldata.Count || coldata.Count == 0) +// { +// m_updateCount = UPDATE_COUNT; +// m_lastColCount = coldata.Count; +// } if (coldata.Count != 0 && Animator != null) { -- cgit v1.1 From feef1dd73243cfdd5322632fb67e64cabc1ad4bc Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 02:05:11 +0000 Subject: Stop calling Animator.UpdateMovementAnimations() at the end of HandleAgentUpdate(). There's no point doing this if it's being called via PhysicsCollisionUpdate --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 663c9ae..8865b3d 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -1582,8 +1582,8 @@ namespace OpenSim.Region.Framework.Scenes // } // } - if (update_movementflag && ParentID == 0) - Animator.UpdateMovementAnimations(); +// if (update_movementflag && ParentID == 0) +// Animator.UpdateMovementAnimations(); } m_scene.EventManager.TriggerOnClientMovement(this); -- cgit v1.1 From a009871827c250cc677bd42aed2351a3c2cec021 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 02:39:21 +0000 Subject: Add basic TestFlyingAnimation() regression test --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 7 ++- .../Scenes/Tests/ScenePresenceAnimationTests.cs | 70 ++++++++++++++++++++++ 2 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 8865b3d..0533106 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -3279,8 +3279,11 @@ namespace OpenSim.Region.Framework.Scenes ControllingClient.SendAgentAlertMessage("Physics is having a problem with your avatar. You may not be able to move until you relog.", true); } - // Event called by the physics plugin to tell the avatar about a collision. - private void PhysicsCollisionUpdate(EventArgs e) + /// + /// Event called by the physics plugin to tell the avatar about a collision. + /// + /// + public void PhysicsCollisionUpdate(EventArgs e) { if (IsChildAgent) return; diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs new file mode 100644 index 0000000..4a0533c --- /dev/null +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAnimationTests.cs @@ -0,0 +1,70 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Timers; +using Nini.Config; +using NUnit.Framework; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Framework.Communications; +using OpenSim.Region.Framework.Scenes; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.CoreModules.Framework.EntityTransfer; +using OpenSim.Region.CoreModules.World.Serialiser; +using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; +using OpenSim.Region.Physics.Manager; +using OpenSim.Tests.Common; +using OpenSim.Tests.Common.Mock; + +namespace OpenSim.Region.Framework.Scenes.Tests +{ + /// + /// Scene presence animation tests + /// + [TestFixture] + public class ScenePresenceAnimationTests + { + [Test] + public void TestFlyingAnimation() + { + TestHelpers.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + TestScene scene = SceneHelpers.SetupScene(); + ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); + sp.PhysicsActor.Flying = true; + sp.PhysicsCollisionUpdate(new CollisionEventUpdate()); + + Assert.That(sp.Animator.CurrentMovementAnimation, Is.EqualTo("HOVER")); + } + } +} \ No newline at end of file -- cgit v1.1 From b66fe3e9ffd968c2c8aaa0fba108e86b8c4f04d9 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 02:45:02 +0000 Subject: Add method doc to SP.PhysicsCollisionUpdate() to make it clear that it's called continuously even where there are no collisions --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 0533106..1fe8048 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -3282,6 +3282,10 @@ namespace OpenSim.Region.Framework.Scenes /// /// Event called by the physics plugin to tell the avatar about a collision. /// + /// + /// This function is called continuously, even when there are no collisions which might be very inefficient. + /// However, we can't avoid this yet since some of this method might currently rely on being called every frame. + /// /// public void PhysicsCollisionUpdate(EventArgs e) { -- cgit v1.1 From 585fc5e79d4b87a5375fa3c2986b5f91d0de1f4e Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 02:51:17 +0000 Subject: Update SP.PhysicsCollisionUpdate() doc. It might be inefficient, but there are collisions every frame if the avatar is walking/standing on the ground or a prim surface --- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 1fe8048..5b9438b 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -3283,8 +3283,11 @@ namespace OpenSim.Region.Framework.Scenes /// Event called by the physics plugin to tell the avatar about a collision. /// /// - /// This function is called continuously, even when there are no collisions which might be very inefficient. - /// However, we can't avoid this yet since some of this method might currently rely on being called every frame. + /// This function is called continuously, even when there are no collisions. If the avatar is walking on the + /// ground or a prim then there will be collision information between the avatar and the surface. + /// + /// FIXME: However, we can't safely avoid calling this yet where there are no collisions without analyzing whether + /// any part of this method is relying on an every-frame call. /// /// public void PhysicsCollisionUpdate(EventArgs e) -- cgit v1.1 From e75bcd4c59234382ac3efb743a228cd23d92ad45 Mon Sep 17 00:00:00 2001 From: marc Date: Fri, 25 Nov 2011 15:21:42 +0100 Subject: Workaround for mesh to correct the number of faces in GetNumberOfSides(). Meshs are handeled as sculpts but can have up to 8 faces (SL restriction the collada format can handle even more). The patch enables all LSL function that adressing faces to behave correct. Like llGetNumberOfSides(); llSetLinkPrimitiveParamsFast(); llSetPrimitiveParams(); llSetColor(); Signed-off-by: marc --- OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 24322a1..304a7a7 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -3272,7 +3272,15 @@ namespace OpenSim.Region.Framework.Scenes if (hasHollow) ret += 1; break; case PrimType.SCULPT: - ret = 1; + // Special mesh handling + if (this.Shape.SculptType == 5) + { + ret = 7; // its a mesh then max 8 faces + } + else + { + ret = 1; // its a sculpt then max 1 faces + } break; } return ret; -- cgit v1.1 From aba42d85434b0e0f367a4f691a9fab9d68fab99a Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 15:54:06 +0000 Subject: Correct SOP.GetNumberOfSides() to return 8 for meshes rather than 7 We are returning the actual number of 'sides', not the maximum index number. Also minor format corrections. --- OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 304a7a7..dcbcfa3 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -3273,16 +3273,13 @@ namespace OpenSim.Region.Framework.Scenes break; case PrimType.SCULPT: // Special mesh handling - if (this.Shape.SculptType == 5) - { - ret = 7; // its a mesh then max 8 faces - } + if (Shape.SculptType == (byte)SculptType.Mesh) + ret = 8; // if it's a mesh then max 8 faces else - { - ret = 1; // its a sculpt then max 1 faces - } + ret = 1; // if it's a sculpt then max 1 face break; } + return ret; } @@ -3295,6 +3292,7 @@ namespace OpenSim.Region.Framework.Scenes { if (Shape.SculptEntry) return PrimType.SCULPT; + if ((Shape.ProfileCurve & 0x07) == (byte)ProfileShape.Square) { if (Shape.PathCurve == (byte)Extrusion.Straight) -- cgit v1.1 From aac3f2d04ed5d828f48959f73fca893f884cec3b Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 16:04:11 +0000 Subject: Add agent circuit number checks to TestCloseAgent() --- OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs index f0bbf0b..f6a3d1f 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs @@ -103,11 +103,15 @@ namespace OpenSim.Region.Framework.Scenes.Tests ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Not.Null); + Assert.That(scene.AuthenticateHandler.AgentCircuits.Count, Is.EqualTo(1)); + Assert.That(scene.AuthenticateHandler.AgentCircuitsByUUID.Count, Is.EqualTo(1)); scene.IncomingCloseAgent(sp.UUID); Assert.That(scene.GetScenePresence(sp.UUID), Is.Null); Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Null); + Assert.That(scene.AuthenticateHandler.AgentCircuits.Count, Is.EqualTo(0)); + Assert.That(scene.AuthenticateHandler.AgentCircuitsByUUID.Count, Is.EqualTo(0)); } /// -- cgit v1.1 From c934901a056f142c49e6b449971fcaf59ff19d82 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 16:11:47 +0000 Subject: Use GetAgentCircuits() to receive a copy of the AgentCircuitsByUUID dictionary rather than AgentCircuitManager.AgentCircuits directly in "show circuits" to avoid enumeration exceptions --- OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs index f6a3d1f..57d22bd 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs @@ -103,15 +103,13 @@ namespace OpenSim.Region.Framework.Scenes.Tests ScenePresence sp = SceneHelpers.AddScenePresence(scene, TestHelpers.ParseTail(0x1)); Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Not.Null); - Assert.That(scene.AuthenticateHandler.AgentCircuits.Count, Is.EqualTo(1)); - Assert.That(scene.AuthenticateHandler.AgentCircuitsByUUID.Count, Is.EqualTo(1)); + Assert.That(scene.AuthenticateHandler.GetAgentCircuits().Count, Is.EqualTo(1)); scene.IncomingCloseAgent(sp.UUID); Assert.That(scene.GetScenePresence(sp.UUID), Is.Null); Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(sp.UUID), Is.Null); - Assert.That(scene.AuthenticateHandler.AgentCircuits.Count, Is.EqualTo(0)); - Assert.That(scene.AuthenticateHandler.AgentCircuitsByUUID.Count, Is.EqualTo(0)); + Assert.That(scene.AuthenticateHandler.GetAgentCircuits().Count, Is.EqualTo(0)); } /// -- cgit v1.1 From 4919c6056022053f8632b030a06fd8f48ac02a8e Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 18:59:54 +0000 Subject: Add beginning of ScenePresenceAgentTests.TestCreateChildScenePresence() This required an option to be added to NullRegionData via ConnectionString for it to act as a non-static instance, so that regression tests (which only load this class once) don't get hopeless confused and complex to compensate. Normal standalone operation unaffected. --- .../Scenes/Tests/ScenePresenceAgentTests.cs | 57 +++++++++++++++++----- 1 file changed, 46 insertions(+), 11 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs index 57d22bd..f479e12 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs @@ -31,7 +31,7 @@ using System.Reflection; using System.Text; using System.Threading; using System.Timers; -using Timer=System.Timers.Timer; +using Timer = System.Timers.Timer; using Nini.Config; using NUnit.Framework; using OpenMetaverse; @@ -39,11 +39,13 @@ using OpenSim.Framework; using OpenSim.Framework.Communications; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.ClientStack.Linden; using OpenSim.Region.CoreModules.Framework.EntityTransfer; using OpenSim.Region.CoreModules.World.Serialiser; using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; using OpenSim.Tests.Common; using OpenSim.Tests.Common.Mock; +using GridRegion = OpenSim.Services.Interfaces.GridRegion; namespace OpenSim.Region.Framework.Scenes.Tests { @@ -112,14 +114,40 @@ namespace OpenSim.Region.Framework.Scenes.Tests Assert.That(scene.AuthenticateHandler.GetAgentCircuits().Count, Is.EqualTo(0)); } + [Test] + public void TestCreateChildScenePresence() + { + TestHelpers.InMethod(); +// log4net.Config.XmlConfigurator.Configure(); + + LocalSimulationConnectorModule lsc = new LocalSimulationConnectorModule(); + + IConfigSource configSource = new IniConfigSource(); + IConfig config = configSource.AddConfig("Modules"); + config.Set("SimulationServices", "LocalSimulationConnectorModule"); + + TestScene scene = SceneHelpers.SetupScene(); + SceneHelpers.SetupSceneModules(scene, configSource, lsc); + + UUID agentId = TestHelpers.ParseTail(0x01); + AgentCircuitData acd = SceneHelpers.GenerateAgentData(agentId); + + GridRegion region = scene.GridService.GetRegionByName(UUID.Zero, scene.RegionInfo.RegionName); + string reason; + scene.SimulationService.CreateAgent(region, acd, (uint)TeleportFlags.ViaLogin, out reason); + + Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(agentId), Is.Not.Null); + Assert.That(scene.AuthenticateHandler.GetAgentCircuits().Count, Is.EqualTo(1)); + } + /// /// Test that if a root agent logs into a region, a child agent is also established in the neighbouring region /// /// - /// Please note that unlike the other tests here, this doesn't rely on structures + /// Please note that unlike the other tests here, this doesn't rely on anything set up in the instance fields. /// [Test] - public void TestChildAgentEstablished() + public void TestChildAgentEstablishedInNeighbour() { TestHelpers.InMethod(); // log4net.Config.XmlConfigurator.Configure(); @@ -127,18 +155,25 @@ namespace OpenSim.Region.Framework.Scenes.Tests UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001"); TestScene myScene1 = SceneHelpers.SetupScene("Neighbour y", UUID.Random(), 1000, 1000); -// TestScene myScene2 = SceneHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000); - + TestScene myScene2 = SceneHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000); + IConfigSource configSource = new IniConfigSource(); - configSource.AddConfig("Modules").Set("EntityTransferModule", "BasicEntityTransferModule"); + IConfig config = configSource.AddConfig("Startup"); + config.Set("serverside_object_permissions", true); + config.Set("EventQueue", true); + EntityTransferModule etm = new EntityTransferModule(); + + EventQueueGetModule eqgm1 = new EventQueueGetModule(); + SceneHelpers.SetupSceneModules(myScene1, configSource, etm, eqgm1); + + EventQueueGetModule eqgm2 = new EventQueueGetModule(); + SceneHelpers.SetupSceneModules(myScene2, configSource, etm, eqgm2); - SceneHelpers.SetupSceneModules(myScene1, configSource, etm); - - SceneHelpers.AddScenePresence(myScene1, agent1Id); +// SceneHelpers.AddScenePresence(myScene1, agent1Id); // ScenePresence childPresence = myScene2.GetScenePresence(agent1); - - // TODO: Need to do a fair amount of work to allow synchronous establishment of child agents +// +// // TODO: Need to do a fair amount of work to allow synchronous establishment of child agents // Assert.That(childPresence, Is.Not.Null); // Assert.That(childPresence.IsChildAgent, Is.True); } -- cgit v1.1 From 3852f05e6e03425e06eec1faa19929146901c92e Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 19:10:32 +0000 Subject: Extend TestCreateChildScenePresence to make assertions both at CreateAgent stage and then at Scene.AddClient() --- .../Framework/Scenes/Tests/ScenePresenceAgentTests.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs index f479e12..df2dacb 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs @@ -131,13 +131,29 @@ namespace OpenSim.Region.Framework.Scenes.Tests UUID agentId = TestHelpers.ParseTail(0x01); AgentCircuitData acd = SceneHelpers.GenerateAgentData(agentId); + acd.child = true; GridRegion region = scene.GridService.GetRegionByName(UUID.Zero, scene.RegionInfo.RegionName); string reason; + // XXX: ViaLogin may not be correct here. scene.SimulationService.CreateAgent(region, acd, (uint)TeleportFlags.ViaLogin, out reason); Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(agentId), Is.Not.Null); Assert.That(scene.AuthenticateHandler.GetAgentCircuits().Count, Is.EqualTo(1)); + + // There's no scene presence yet since only an agent circuit has been established. + Assert.That(scene.GetScenePresence(agentId), Is.Null); + + TestClient client = new TestClient(acd, scene); + scene.AddNewClient(client, PresenceType.User); + + Assert.That(scene.AuthenticateHandler.GetAgentCircuitData(agentId), Is.Not.Null); + Assert.That(scene.AuthenticateHandler.GetAgentCircuits().Count, Is.EqualTo(1)); + + ScenePresence sp = scene.GetScenePresence(agentId); + Assert.That(sp, Is.Not.Null); + Assert.That(sp.UUID, Is.EqualTo(agentId)); + Assert.That(sp.IsChildAgent, Is.True); } /// -- cgit v1.1 From a4d82895be6617ab409735c107903c6aaef2c234 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 19:14:37 +0000 Subject: Remove T012_TestAddNeighbourRegion() and T013_TestRemoveNeighbourRegion() since they don't do anything useful. --- .../Scenes/Tests/ScenePresenceAgentTests.cs | 75 ++-------------------- 1 file changed, 5 insertions(+), 70 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs index df2dacb..946481c 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs @@ -135,6 +135,9 @@ namespace OpenSim.Region.Framework.Scenes.Tests GridRegion region = scene.GridService.GetRegionByName(UUID.Zero, scene.RegionInfo.RegionName); string reason; + + // *** This is the first stage, when a neighbouring region is told that a viewer is about to try and + // establish a child scene presence. We pass in the circuit code that the client has to connect with *** // XXX: ViaLogin may not be correct here. scene.SimulationService.CreateAgent(region, acd, (uint)TeleportFlags.ViaLogin, out reason); @@ -144,6 +147,8 @@ namespace OpenSim.Region.Framework.Scenes.Tests // There's no scene presence yet since only an agent circuit has been established. Assert.That(scene.GetScenePresence(agentId), Is.Null); + // *** This is the second stage, where the client established a child agent/scene presence using the + // circuit code given to the scene in stage 1 *** TestClient client = new TestClient(acd, scene); scene.AddNewClient(client, PresenceType.User); @@ -247,48 +252,6 @@ namespace OpenSim.Region.Framework.Scenes.Tests // Assert.That(presence, Is.Null, "presence is not null"); // } - [Test] - public void T012_TestAddNeighbourRegion() - { - TestHelpers.InMethod(); - - string reason; - - if (acd1 == null) - fixNullPresence(); - - scene.NewUserConnection(acd1, 0, out reason); - if (testclient == null) - testclient = new TestClient(acd1, scene); - scene.AddNewClient(testclient, PresenceType.User); - - ScenePresence presence = scene.GetScenePresence(agent1); - presence.MakeRootAgent(new Vector3(90,90,90),false); - - string cap = presence.ControllingClient.RequestClientInfo().CapsPath; - - presence.AddNeighbourRegion(region2, cap); - presence.AddNeighbourRegion(region3, cap); - - Assert.That(presence.KnownRegionCount, Is.EqualTo(2)); - } - - [Test] - public void T013_TestRemoveNeighbourRegion() - { - TestHelpers.InMethod(); - - ScenePresence presence = scene.GetScenePresence(agent1); - presence.RemoveNeighbourRegion(region3); - - Assert.That(presence.KnownRegionCount,Is.EqualTo(1)); - /* - presence.MakeChildAgent; - presence.MakeRootAgent; - CompleteAvatarMovement - */ - } - // I'm commenting this test because it does not represent // crossings. The Thread.Sleep's in here are not meaningful mocks, // and they sometimes fail in panda. @@ -391,33 +354,5 @@ namespace OpenSim.Region.Framework.Scenes.Tests Assert.That(presence2.IsChildAgent, Is.True, "Did not return from region as expected."); Assert.That(presence.IsChildAgent, Is.False, "Presence was not made root in old region again."); } - - public void fixNullPresence() - { - string firstName = "testfirstname"; - - AgentCircuitData agent = new AgentCircuitData(); - agent.AgentID = agent1; - agent.firstname = firstName; - agent.lastname = "testlastname"; - agent.SessionID = UUID.Zero; - agent.SecureSessionID = UUID.Zero; - agent.circuitcode = 123; - agent.BaseFolder = UUID.Zero; - agent.InventoryFolder = UUID.Zero; - agent.startpos = Vector3.Zero; - agent.CapsPath = GetRandomCapsObjectPath(); - agent.Appearance = new AvatarAppearance(); - - acd1 = agent; - } - - public static string GetRandomCapsObjectPath() - { - UUID caps = UUID.Random(); - string capsPath = caps.ToString(); - capsPath = capsPath.Remove(capsPath.Length - 4, 4); - return capsPath; - } } } \ No newline at end of file -- cgit v1.1 From a82aea53f863566037fa4fe3d546f57a49a126fa Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Sat, 3 Dec 2011 19:32:59 +0000 Subject: Split up test SceneHelpers to provide an AddChildScenePresence() call --- OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs | 1 + 1 file changed, 1 insertion(+) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs index 946481c..d4c299f 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs @@ -166,6 +166,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests /// /// /// Please note that unlike the other tests here, this doesn't rely on anything set up in the instance fields. + /// INCOMPLETE /// [Test] public void TestChildAgentEstablishedInNeighbour() -- cgit v1.1