diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 7136cfc..991074b 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -866,7 +866,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
866 | 866 | ||
867 | IsChildAgent = false; | 867 | IsChildAgent = false; |
868 | 868 | ||
869 | Animator.TrySetMovementAnimation("SIT"); | 869 | // Animator.TryFixMovementAnimation("SIT"); |
870 | } | 870 | } |
871 | else | 871 | else |
872 | { | 872 | { |
@@ -929,7 +929,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
929 | } | 929 | } |
930 | AbsolutePosition = pos; | 930 | AbsolutePosition = pos; |
931 | 931 | ||
932 | AddToPhysicalScene(isFlying); | 932 | if (m_teleportFlags == TeleportFlags.Default) |
933 | { | ||
934 | Vector3 vel = Velocity; | ||
935 | AddToPhysicalScene(isFlying); | ||
936 | if (PhysicsActor != null) | ||
937 | PhysicsActor.SetMomentum(vel); | ||
938 | } | ||
939 | else | ||
940 | AddToPhysicalScene(isFlying); | ||
933 | 941 | ||
934 | if (ForceFly) | 942 | if (ForceFly) |
935 | { | 943 | { |
@@ -943,7 +951,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
943 | // Don't send an animation pack here, since on a region crossing this will sometimes cause a flying | 951 | // Don't send an animation pack here, since on a region crossing this will sometimes cause a flying |
944 | // avatar to return to the standing position in mid-air. On login it looks like this is being sent | 952 | // avatar to return to the standing position in mid-air. On login it looks like this is being sent |
945 | // elsewhere anyway | 953 | // elsewhere anyway |
946 | // Animator.SendAnimPack(); | 954 | // Animator.SendAnimPack(); |
955 | |||
947 | 956 | ||
948 | m_scene.SwapRootAgentCount(false); | 957 | m_scene.SwapRootAgentCount(false); |
949 | 958 | ||
@@ -980,6 +989,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
980 | // If we don't reset the movement flag here, an avatar that crosses to a neighbouring sim and returns will | 989 | // If we don't reset the movement flag here, an avatar that crosses to a neighbouring sim and returns will |
981 | // stall on the border crossing since the existing child agent will still have the last movement | 990 | // stall on the border crossing since the existing child agent will still have the last movement |
982 | // recorded, which stops the input from being processed. | 991 | // recorded, which stops the input from being processed. |
992 | |||
983 | MovementFlag = 0; | 993 | MovementFlag = 0; |
984 | 994 | ||
985 | m_scene.EventManager.TriggerOnMakeRootAgent(this); | 995 | m_scene.EventManager.TriggerOnMakeRootAgent(this); |
@@ -1020,6 +1030,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1020 | // as teleporting back | 1030 | // as teleporting back |
1021 | TeleportFlags = TeleportFlags.Default; | 1031 | TeleportFlags = TeleportFlags.Default; |
1022 | 1032 | ||
1033 | MovementFlag = 0; | ||
1034 | |||
1023 | // It looks like Animator is set to null somewhere, and MakeChild | 1035 | // It looks like Animator is set to null somewhere, and MakeChild |
1024 | // is called after that. Probably in aborted teleports. | 1036 | // is called after that. Probably in aborted teleports. |
1025 | if (Animator == null) | 1037 | if (Animator == null) |
@@ -1027,6 +1039,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1027 | else | 1039 | else |
1028 | Animator.ResetAnimations(); | 1040 | Animator.ResetAnimations(); |
1029 | 1041 | ||
1042 | |||
1030 | // m_log.DebugFormat( | 1043 | // m_log.DebugFormat( |
1031 | // "[SCENE PRESENCE]: Downgrading root agent {0}, {1} to a child agent in {2}", | 1044 | // "[SCENE PRESENCE]: Downgrading root agent {0}, {1} to a child agent in {2}", |
1032 | // Name, UUID, m_scene.RegionInfo.RegionName); | 1045 | // Name, UUID, m_scene.RegionInfo.RegionName); |
@@ -1053,9 +1066,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
1053 | { | 1066 | { |
1054 | // PhysicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients; | 1067 | // PhysicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients; |
1055 | PhysicsActor.OnOutOfBounds -= OutOfBoundsCall; | 1068 | PhysicsActor.OnOutOfBounds -= OutOfBoundsCall; |
1056 | m_scene.PhysicsScene.RemoveAvatar(PhysicsActor); | ||
1057 | PhysicsActor.UnSubscribeEvents(); | ||
1058 | PhysicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate; | 1069 | PhysicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate; |
1070 | PhysicsActor.UnSubscribeEvents(); | ||
1071 | m_scene.PhysicsScene.RemoveAvatar(PhysicsActor); | ||
1059 | PhysicsActor = null; | 1072 | PhysicsActor = null; |
1060 | } | 1073 | } |
1061 | // else | 1074 | // else |