Commit the avination Teleport() methods (adaptedto justincc's changes)

0.7.3-extended
Melanie 2012-04-25 04:00:01 +01:00 committed by Justin Clark-Casey (justincc)
parent 675c208c7e
commit 79d1d3ca55
1 changed files with 12 additions and 1 deletions

View File

@ -1053,13 +1053,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();
} }