Merge branch 'master' of ssh://3dhosting.de/var/git/careminster into ubitwork
commit
5145980c74
|
@ -3774,6 +3774,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
// doesn't seem to be attached, skip
|
// doesn't seem to be attached, skip
|
||||||
if (!found)
|
if (!found)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
// On vehicle crossing, the attachments are received
|
||||||
|
// while the avatar is still a child. Don't send
|
||||||
|
// updates here because the LocalId has not yet
|
||||||
|
// been updated and the viewer will derender the
|
||||||
|
// attachments until the avatar becomes root.
|
||||||
|
if (sp.IsChildAgent)
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
if (part.ParentGroup.IsAttachment && m_disableFacelights)
|
if (part.ParentGroup.IsAttachment && m_disableFacelights)
|
||||||
{
|
{
|
||||||
|
@ -4837,7 +4845,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
if (part != null && part != part.ParentGroup.RootPart)
|
if (part != null && part != part.ParentGroup.RootPart)
|
||||||
{
|
{
|
||||||
position = part.OffsetPosition + presence.OffsetPosition * part.RotationOffset;
|
position = part.OffsetPosition + presence.OffsetPosition * part.RotationOffset;
|
||||||
rotation = presence.Rotation * part.RotationOffset;
|
rotation = part.RotationOffset * presence.Rotation;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4966,7 +4974,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
if (part != null && part != part.ParentGroup.RootPart)
|
if (part != null && part != part.ParentGroup.RootPart)
|
||||||
{
|
{
|
||||||
offsetPosition = part.OffsetPosition + data.OffsetPosition * part.RotationOffset;
|
offsetPosition = part.OffsetPosition + data.OffsetPosition * part.RotationOffset;
|
||||||
rotation = data.Rotation * part.RotationOffset;
|
rotation = part.RotationOffset * data.Rotation;
|
||||||
parentID = part.ParentGroup.RootPart.LocalId;
|
parentID = part.ParentGroup.RootPart.LocalId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5472,7 +5472,7 @@ Environment.Exit(1);
|
||||||
// presence.Name, presence.AbsolutePosition, presence.MoveToPositionTarget);
|
// presence.Name, presence.AbsolutePosition, presence.MoveToPositionTarget);
|
||||||
|
|
||||||
Vector3 agent_control_v3 = new Vector3();
|
Vector3 agent_control_v3 = new Vector3();
|
||||||
presence.HandleMoveToTargetUpdate(ref agent_control_v3);
|
presence.HandleMoveToTargetUpdate(1, ref agent_control_v3);
|
||||||
presence.AddNewMovement(agent_control_v3);
|
presence.AddNewMovement(agent_control_v3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -582,7 +582,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
foreach (ScenePresence av in m_linkedAvatars)
|
foreach (ScenePresence av in m_linkedAvatars)
|
||||||
{
|
{
|
||||||
SceneObjectPart p = m_scene.GetSceneObjectPart(av.ParentID);
|
SceneObjectPart p = m_scene.GetSceneObjectPart(av.ParentID);
|
||||||
if (m_parts.TryGetValue(p.UUID, out p))
|
if (p != null && m_parts.TryGetValue(p.UUID, out p))
|
||||||
{
|
{
|
||||||
Vector3 offset = p.GetWorldPosition() - av.ParentPosition;
|
Vector3 offset = p.GetWorldPosition() - av.ParentPosition;
|
||||||
av.AbsolutePosition += offset;
|
av.AbsolutePosition += offset;
|
||||||
|
|
|
@ -874,6 +874,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
"[SCENE]: Upgrading child to root agent for {0} in {1}",
|
"[SCENE]: Upgrading child to root agent for {0} in {1}",
|
||||||
Name, m_scene.RegionInfo.RegionName);
|
Name, m_scene.RegionInfo.RegionName);
|
||||||
|
|
||||||
|
bool wasChild = IsChildAgent;
|
||||||
|
|
||||||
if (ParentUUID != UUID.Zero)
|
if (ParentUUID != UUID.Zero)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[SCENE PRESENCE]: Sitting avatar back on prim {0}", ParentUUID);
|
m_log.DebugFormat("[SCENE PRESENCE]: Sitting avatar back on prim {0}", ParentUUID);
|
||||||
|
@ -893,10 +895,16 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
pos = ParentPosition;
|
pos = ParentPosition;
|
||||||
}
|
}
|
||||||
ParentUUID = UUID.Zero;
|
ParentUUID = UUID.Zero;
|
||||||
|
|
||||||
|
IsChildAgent = false;
|
||||||
|
|
||||||
|
Animator.TrySetMovementAnimation("SIT");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
IsChildAgent = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wasChild = IsChildAgent;
|
|
||||||
IsChildAgent = false;
|
|
||||||
|
|
||||||
IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>();
|
IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>();
|
||||||
if (gm != null)
|
if (gm != null)
|
||||||
|
@ -984,6 +992,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
Util.FireAndForget(delegate(object x) {
|
Util.FireAndForget(delegate(object x) {
|
||||||
foreach (SceneObjectGroup sog in m_attachments)
|
foreach (SceneObjectGroup sog in m_attachments)
|
||||||
{
|
{
|
||||||
|
sog.ScheduleGroupForFullUpdate();
|
||||||
sog.RootPart.ParentGroup.CreateScriptInstances(0, false, m_scene.DefaultScriptEngine, GetStateSource());
|
sog.RootPart.ParentGroup.CreateScriptInstances(0, false, m_scene.DefaultScriptEngine, GetStateSource());
|
||||||
sog.ResumeScripts();
|
sog.ResumeScripts();
|
||||||
}
|
}
|
||||||
|
@ -991,6 +1000,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SendAvatarDataToAllAgents();
|
||||||
|
|
||||||
// send the animations of the other presences to me
|
// send the animations of the other presences to me
|
||||||
m_scene.ForEachRootScenePresence(delegate(ScenePresence presence)
|
m_scene.ForEachRootScenePresence(delegate(ScenePresence presence)
|
||||||
{
|
{
|
||||||
|
@ -1084,7 +1095,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
/// Do not call this directly. Call Scene.RequestTeleportLocation() instead.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="pos"></param>
|
/// <param name="pos"></param>
|
||||||
public void Teleport(Vector3 pos)
|
public void Teleport(Vector3 pos)
|
||||||
|
@ -1558,7 +1569,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
else if (bAllowUpdateMoveToPosition)
|
else if (bAllowUpdateMoveToPosition)
|
||||||
{
|
{
|
||||||
if (HandleMoveToTargetUpdate(ref agent_control_v3))
|
// The UseClientAgentPosition is set if parcel ban is forcing the avatar to move to a
|
||||||
|
// certain position. It's only check for tolerance on returning to that position is 0.2
|
||||||
|
// rather than 1, at which point it removes its force target.
|
||||||
|
if (HandleMoveToTargetUpdate(agentData.UseClientAgentPosition ? 0.2 : 1, ref agent_control_v3))
|
||||||
update_movementflag = true;
|
update_movementflag = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1620,7 +1634,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
/// <param value="agent_control_v3">Cumulative agent movement that this method will update.</param>
|
/// <param value="agent_control_v3">Cumulative agent movement that this method will update.</param>
|
||||||
/// <returns>True if movement has been updated in some way. False otherwise.</returns>
|
/// <returns>True if movement has been updated in some way. False otherwise.</returns>
|
||||||
public bool HandleMoveToTargetUpdate(ref Vector3 agent_control_v3)
|
public bool HandleMoveToTargetUpdate(double tolerance, ref Vector3 agent_control_v3)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[SCENE PRESENCE]: Called HandleMoveToTargetUpdate() for {0}", Name);
|
// m_log.DebugFormat("[SCENE PRESENCE]: Called HandleMoveToTargetUpdate() for {0}", Name);
|
||||||
|
|
||||||
|
@ -1637,7 +1651,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// Name, AbsolutePosition, MoveToPositionTarget, distanceToTarget);
|
// Name, AbsolutePosition, MoveToPositionTarget, distanceToTarget);
|
||||||
|
|
||||||
// Check the error term of the current position in relation to the target position
|
// Check the error term of the current position in relation to the target position
|
||||||
if (distanceToTarget <= 1)
|
if (distanceToTarget <= tolerance)
|
||||||
{
|
{
|
||||||
// We are close enough to the target
|
// We are close enough to the target
|
||||||
AbsolutePosition = MoveToPositionTarget;
|
AbsolutePosition = MoveToPositionTarget;
|
||||||
|
@ -1813,7 +1827,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// m_log.DebugFormat("[SCENE PRESENCE]: Body rot for {0} set to {1}", Name, Rotation);
|
// m_log.DebugFormat("[SCENE PRESENCE]: Body rot for {0} set to {1}", Name, Rotation);
|
||||||
|
|
||||||
Vector3 agent_control_v3 = new Vector3();
|
Vector3 agent_control_v3 = new Vector3();
|
||||||
HandleMoveToTargetUpdate(ref agent_control_v3);
|
HandleMoveToTargetUpdate(1, ref agent_control_v3);
|
||||||
AddNewMovement(agent_control_v3);
|
AddNewMovement(agent_control_v3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue