Merge branch 'master' of ssh://opensimulator.org/var/git/opensim

0.7.4.1
Diva Canto 2012-04-24 22:17:52 -07:00
commit fd281ded3f
2 changed files with 13 additions and 1 deletions

View File

@ -212,6 +212,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
sp.ControllingClient.SendTeleportStart(teleportFlags); sp.ControllingClient.SendTeleportStart(teleportFlags);
sp.ControllingClient.SendLocalTeleport(position, lookAt, teleportFlags); sp.ControllingClient.SendLocalTeleport(position, lookAt, teleportFlags);
sp.Velocity = Vector3.Zero;
sp.Teleport(position); sp.Teleport(position);
foreach (SceneObjectGroup grp in sp.GetAttachments()) foreach (SceneObjectGroup grp in sp.GetAttachments())

View File

@ -990,13 +990,24 @@ namespace OpenSim.Region.Framework.Scenes
/// <param name="pos"></param> /// <param name="pos"></param>
public void Teleport(Vector3 pos) public void Teleport(Vector3 pos)
{ {
// m_log.DebugFormat("[SCENE PRESENCE]: Moving {0} to {1} in {2}", Name, pos, Scene.RegionInfo.RegionName); TeleportWithMomentum(pos, null);
}
public void TeleportWithMomentum(Vector3 pos, Vector3? v)
{
bool isFlying = Flying; bool isFlying = Flying;
Vector3 vel = Velocity;
RemoveFromPhysicalScene(); RemoveFromPhysicalScene();
CheckLandingPoint(ref pos); CheckLandingPoint(ref pos);
AbsolutePosition = pos; AbsolutePosition = pos;
AddToPhysicalScene(isFlying); AddToPhysicalScene(isFlying);
if (PhysicsActor != null)
{
if (v.HasValue)
PhysicsActor.SetMomentum((Vector3)v);
else
PhysicsActor.SetMomentum(vel);
}
SendTerseUpdateToAllClients(); SendTerseUpdateToAllClients();
} }