EDIT BEAMS!!! They had been missing from OpenSim since ever. Thanks to lkalif for telling me how to route the information. The viewer effect is under the distance filter, so only avatars with cameras < 10m away see the beams.

TeleportWork
Diva Canto 2013-07-20 17:58:32 -07:00
parent 032c637c10
commit b5ab0698d6
6 changed files with 12 additions and 28 deletions

View File

@ -1476,7 +1476,7 @@ namespace OpenSim.Framework
void SendChangeUserRights(UUID agentID, UUID friendID, int rights);
void SendTextBoxRequest(string message, int chatChannel, string objectname, UUID ownerID, string ownerFirstName, string ownerLastName, UUID objectId);
void StopFlying(ISceneEntity presence);
void SendAgentTerseUpdate(ISceneEntity presence);
void SendPlacesReply(UUID queryID, UUID transactionID, PlacesReplyData[] data);
}

View File

@ -5016,7 +5016,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{
ScenePresence presence = (ScenePresence)entity;
attachPoint = 0;
attachPoint = presence.State;
collisionPlane = presence.CollisionPlane;
position = presence.OffsetPosition;
velocity = presence.Velocity;
@ -5040,7 +5040,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
SceneObjectPart part = (SceneObjectPart)entity;
attachPoint = part.ParentGroup.AttachmentPoint;
attachPoint = ((attachPoint % 16) * 16 + (attachPoint / 16));
// m_log.DebugFormat(
// "[LLCLIENTVIEW]: Sending attachPoint {0} for {1} {2} to {3}",
// attachPoint, part.Name, part.LocalId, Name);
@ -5068,7 +5068,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
pos += 4;
// Avatar/CollisionPlane
data[pos++] = (byte)((attachPoint % 16) * 16 + (attachPoint / 16)); ;
data[pos++] = (byte) attachPoint;
if (avatar)
{
data[pos++] = 1;
@ -12550,7 +12550,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
OutPacket(dialog, ThrottleOutPacketType.Task);
}
public void StopFlying(ISceneEntity p)
public void SendAgentTerseUpdate(ISceneEntity p)
{
if (p is ScenePresence)
{
@ -12564,25 +12564,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
Vector3 pos = presence.AbsolutePosition;
if (presence.Appearance.AvatarHeight != 127.0f)
pos += new Vector3(0f, 0f, (presence.Appearance.AvatarHeight/6f));
else
pos += new Vector3(0f, 0f, (1.56f/6f));
presence.AbsolutePosition = pos;
// attach a suitable collision plane regardless of the actual situation to force the LLClient to land.
// Collision plane below the avatar's position a 6th of the avatar's height is suitable.
// Mind you, that this method doesn't get called if the avatar's velocity magnitude is greater then a
// certain amount.. because the LLClient wouldn't land in that situation anyway.
// why are we still testing for this really old height value default???
if (presence.Appearance.AvatarHeight != 127.0f)
presence.CollisionPlane = new Vector4(0, 0, 0, pos.Z - presence.Appearance.AvatarHeight/6f);
else
presence.CollisionPlane = new Vector4(0, 0, 0, pos.Z - (1.56f/6f));
ImprovedTerseObjectUpdatePacket.ObjectDataBlock block =
CreateImprovedTerseBlock(p, false);

View File

@ -1125,7 +1125,7 @@ namespace OpenSim.Region.Framework.Scenes
public void StopFlying()
{
ControllingClient.StopFlying(this);
ControllingClient.SendAgentTerseUpdate(this);
}
/// <summary>
@ -1728,6 +1728,9 @@ namespace OpenSim.Region.Framework.Scenes
SendControlsToScripts(flagsForScripts);
}
if ((State & 0x10) != 0)
ControllingClient.SendAgentTerseUpdate(this);
m_scene.EventManager.TriggerOnClientMovement(this);
}

View File

@ -1673,7 +1673,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
{
}
public void StopFlying(ISceneEntity presence)
public void SendAgentTerseUpdate(ISceneEntity presence)
{
}

View File

@ -1229,7 +1229,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
{
}
public void StopFlying(ISceneEntity presence)
public void SendAgentTerseUpdate(ISceneEntity presence)
{
}

View File

@ -1256,7 +1256,7 @@ namespace OpenSim.Tests.Common.Mock
{
}
public void StopFlying(ISceneEntity presence)
public void SendAgentTerseUpdate(ISceneEntity presence)
{
}