Merge branch 'master' into httptests
commit
a1aa2f1add
|
@ -371,7 +371,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
teleportFlags |= (uint)TeleportFlags.Godlike;
|
teleportFlags |= (uint)TeleportFlags.Godlike;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sp.Scene.Permissions.CanTeleport(sp.UUID))
|
else if (!sp.Scene.Permissions.CanTeleport(sp.UUID))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
string destinationRegionName = "(not found)";
|
string destinationRegionName = "(not found)";
|
||||||
|
@ -391,17 +391,27 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Reset animations; the viewer does that in teleports.
|
|
||||||
sp.Animator.ResetAnimations();
|
|
||||||
|
|
||||||
if (regionHandle == sp.Scene.RegionInfo.RegionHandle)
|
if (regionHandle == sp.Scene.RegionInfo.RegionHandle)
|
||||||
{
|
{
|
||||||
|
if(!sp.AllowMovement)
|
||||||
|
{
|
||||||
|
sp.ControllingClient.SendTeleportFailed("You are frozen");
|
||||||
|
m_entityTransferStateMachine.ResetFromTransit(sp.UUID);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset animations; the viewer does that in teleports.
|
||||||
|
sp.Animator.ResetAnimations();
|
||||||
destinationRegionName = sp.Scene.RegionInfo.RegionName;
|
destinationRegionName = sp.Scene.RegionInfo.RegionName;
|
||||||
|
|
||||||
TeleportAgentWithinRegion(sp, position, lookAt, teleportFlags);
|
TeleportAgentWithinRegion(sp, position, lookAt, teleportFlags);
|
||||||
}
|
}
|
||||||
else // Another region possibly in another simulator
|
else // Another region possibly in another simulator
|
||||||
{
|
{
|
||||||
|
// Reset animations; the viewer does that in teleports.
|
||||||
|
sp.Animator.ResetAnimations();
|
||||||
|
|
||||||
GridRegion finalDestination = null;
|
GridRegion finalDestination = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -2201,12 +2201,12 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
((Scene)client.Scene).TryGetScenePresence(client.AgentId, out parcelManager);
|
((Scene)client.Scene).TryGetScenePresence(client.AgentId, out parcelManager);
|
||||||
System.Threading.Timer Timer;
|
System.Threading.Timer Timer;
|
||||||
|
|
||||||
if (targetAvatar.GodController.UserLevel == 0)
|
if (targetAvatar.GodController.UserLevel < 200)
|
||||||
{
|
{
|
||||||
ILandObject land = ((Scene)client.Scene).LandChannel.GetLandObject(targetAvatar.AbsolutePosition.X, targetAvatar.AbsolutePosition.Y);
|
ILandObject land = ((Scene)client.Scene).LandChannel.GetLandObject(targetAvatar.AbsolutePosition.X, targetAvatar.AbsolutePosition.Y);
|
||||||
if (!((Scene)client.Scene).Permissions.CanEditParcelProperties(client.AgentId, land, GroupPowers.LandEjectAndFreeze, true))
|
if (!((Scene)client.Scene).Permissions.CanEditParcelProperties(client.AgentId, land, GroupPowers.LandEjectAndFreeze, true))
|
||||||
return;
|
return;
|
||||||
if (flags == 0)
|
if ((flags & 1) == 0) // only lowest bit has meaning for now
|
||||||
{
|
{
|
||||||
targetAvatar.AllowMovement = false;
|
targetAvatar.AllowMovement = false;
|
||||||
targetAvatar.ControllingClient.SendAlertMessage(parcelManager.Firstname + " " + parcelManager.Lastname + " has frozen you for 30 seconds. You cannot move or interact with the world.");
|
targetAvatar.ControllingClient.SendAlertMessage(parcelManager.Firstname + " " + parcelManager.Lastname + " has frozen you for 30 seconds. You cannot move or interact with the world.");
|
||||||
|
@ -2258,7 +2258,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
Vector3 pos = m_scene.GetNearestAllowedPosition(targetAvatar, land);
|
Vector3 pos = m_scene.GetNearestAllowedPosition(targetAvatar, land);
|
||||||
|
|
||||||
targetAvatar.TeleportWithMomentum(pos, null);
|
targetAvatar.TeleportOnEject(pos);
|
||||||
targetAvatar.ControllingClient.SendAlertMessage("You have been ejected by " + parcelManager.Firstname + " " + parcelManager.Lastname);
|
targetAvatar.ControllingClient.SendAlertMessage("You have been ejected by " + parcelManager.Firstname + " " + parcelManager.Lastname);
|
||||||
parcelManager.ControllingClient.SendAlertMessage("Avatar Ejected.");
|
parcelManager.ControllingClient.SendAlertMessage("Avatar Ejected.");
|
||||||
|
|
||||||
|
|
|
@ -1886,7 +1886,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
if (land.LandData.LocalID == LandData.LocalID)
|
if (land.LandData.LocalID == LandData.LocalID)
|
||||||
{
|
{
|
||||||
Vector3 pos = m_scene.GetNearestAllowedPosition(presence, land);
|
Vector3 pos = m_scene.GetNearestAllowedPosition(presence, land);
|
||||||
presence.TeleportWithMomentum(pos, null);
|
presence.TeleportOnEject(pos);
|
||||||
presence.ControllingClient.SendAlertMessage("You have been ejected from this land");
|
presence.ControllingClient.SendAlertMessage("You have been ejected from this land");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1642,6 +1642,20 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
SendTerseUpdateToAllClients();
|
SendTerseUpdateToAllClients();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void TeleportOnEject(Vector3 pos)
|
||||||
|
{
|
||||||
|
if (ParentID != (uint)0)
|
||||||
|
StandUp();
|
||||||
|
|
||||||
|
bool isFlying = Flying;
|
||||||
|
RemoveFromPhysicalScene();
|
||||||
|
|
||||||
|
AbsolutePosition = pos;
|
||||||
|
|
||||||
|
AddToPhysicalScene(isFlying);
|
||||||
|
SendTerseUpdateToAllClients();
|
||||||
|
}
|
||||||
|
|
||||||
public void avnLocalTeleport(Vector3 newpos, Vector3? newvel, bool rotateToVelXY)
|
public void avnLocalTeleport(Vector3 newpos, Vector3? newvel, bool rotateToVelXY)
|
||||||
{
|
{
|
||||||
if(!CheckLocalTPLandingPoint(ref newpos))
|
if(!CheckLocalTPLandingPoint(ref newpos))
|
||||||
|
|
|
@ -6827,7 +6827,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
if (m_host.OwnerID == land.LandData.OwnerID)
|
if (m_host.OwnerID == land.LandData.OwnerID)
|
||||||
{
|
{
|
||||||
Vector3 p = World.GetNearestAllowedPosition(presence, land);
|
Vector3 p = World.GetNearestAllowedPosition(presence, land);
|
||||||
presence.TeleportWithMomentum(p, null);
|
presence.TeleportOnEject(p);
|
||||||
presence.ControllingClient.SendAlertMessage("You have been ejected from this land");
|
presence.ControllingClient.SendAlertMessage("You have been ejected from this land");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue