Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
commit
f545d669de
|
@ -215,27 +215,9 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
if (sp.IsChildAgent)
|
||||
continue;
|
||||
|
||||
if (sp.ParentID != 0)
|
||||
{
|
||||
// sitting avatar
|
||||
SceneObjectPart sop = m_parentScene.GetSceneObjectPart(sp.ParentID);
|
||||
if (sop != null)
|
||||
{
|
||||
coarseLocations.Add(sop.AbsolutePosition + sp.OffsetPosition);
|
||||
avatarUUIDs.Add(sp.UUID);
|
||||
}
|
||||
else
|
||||
{
|
||||
// we can't find the parent.. ! arg!
|
||||
coarseLocations.Add(sp.AbsolutePosition);
|
||||
avatarUUIDs.Add(sp.UUID);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
coarseLocations.Add(sp.AbsolutePosition);
|
||||
avatarUUIDs.Add(sp.UUID);
|
||||
}
|
||||
coarseLocations.Add(sp.AbsolutePosition);
|
||||
|
||||
avatarUUIDs.Add(sp.UUID);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -432,7 +432,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
{
|
||||
get
|
||||
{
|
||||
if (PhysicsActor != null && m_parentID == 0)
|
||||
if (PhysicsActor != null)
|
||||
{
|
||||
m_pos = PhysicsActor.Position;
|
||||
|
||||
|
@ -477,7 +477,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
// Don't update while sitting
|
||||
// Don't update while sitting. The PhysicsActor above is null whilst sitting.
|
||||
if (ParentID == 0)
|
||||
{
|
||||
m_pos = value;
|
||||
|
@ -504,6 +504,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
// There is no offset position when not seated
|
||||
if (ParentID == 0)
|
||||
return;
|
||||
|
||||
m_pos = value;
|
||||
}
|
||||
}
|
||||
|
@ -562,19 +563,18 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
public bool IsChildAgent { get; set; }
|
||||
|
||||
public uint ParentID
|
||||
{
|
||||
get { return m_parentID; }
|
||||
set { m_parentID = value; }
|
||||
}
|
||||
private uint m_parentID;
|
||||
/// <summary>
|
||||
/// If the avatar is sitting, the local ID of the prim that it's sitting on. If not sitting then zero.
|
||||
/// </summary>
|
||||
public uint ParentID { get; set; }
|
||||
|
||||
public SceneObjectPart ParentPart
|
||||
{
|
||||
get { return m_parentPart; }
|
||||
set { m_parentPart = value; }
|
||||
}
|
||||
private SceneObjectPart m_parentPart = null;
|
||||
/// <summary>
|
||||
/// If the avatar is sitting, the prim that it's sitting on. If not sitting then null.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// If you use this property then you must take a reference since another thread could set it to null.
|
||||
/// </remarks>
|
||||
public SceneObjectPart ParentPart { get; set; }
|
||||
|
||||
public float Health
|
||||
{
|
||||
|
@ -2204,23 +2204,16 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
// "[SCENE PRESENCE]: Sitting {0} at position {1} ({2} + {3}) on part {4} {5} without sit target",
|
||||
// Name, part.AbsolutePosition, m_pos, ParentPosition, part.Name, part.LocalId);
|
||||
}
|
||||
|
||||
ParentPart = m_scene.GetSceneObjectPart(m_requestedSitTargetID);
|
||||
ParentID = m_requestedSitTargetID;
|
||||
|
||||
Velocity = Vector3.Zero;
|
||||
RemoveFromPhysicalScene();
|
||||
|
||||
Animator.TrySetMovementAnimation(sitAnimation);
|
||||
SendAvatarDataToAllAgents();
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ParentPart = m_scene.GetSceneObjectPart(m_requestedSitTargetID);
|
||||
if (ParentPart == null)
|
||||
return;
|
||||
|
||||
ParentID = m_requestedSitTargetID;
|
||||
|
||||
Velocity = Vector3.Zero;
|
||||
RemoveFromPhysicalScene();
|
||||
|
||||
Animator.TrySetMovementAnimation(sitAnimation);
|
||||
SendAvatarDataToAllAgents();
|
||||
}
|
||||
|
||||
public void HandleAgentSitOnGround()
|
||||
|
|
|
@ -712,33 +712,16 @@ namespace OpenSim.Region.RegionCombinerModule
|
|||
|
||||
List<Vector3> CoarseLocations = new List<Vector3>();
|
||||
List<UUID> AvatarUUIDs = new List<UUID>();
|
||||
|
||||
connectiondata.RegionScene.ForEachRootScenePresence(delegate(ScenePresence sp)
|
||||
{
|
||||
if (sp.UUID != presence.UUID)
|
||||
{
|
||||
if (sp.ParentID != 0)
|
||||
{
|
||||
// sitting avatar
|
||||
SceneObjectPart sop = connectiondata.RegionScene.GetSceneObjectPart(sp.ParentID);
|
||||
if (sop != null)
|
||||
{
|
||||
CoarseLocations.Add(sop.AbsolutePosition + sp.AbsolutePosition);
|
||||
AvatarUUIDs.Add(sp.UUID);
|
||||
}
|
||||
else
|
||||
{
|
||||
// we can't find the parent.. ! arg!
|
||||
CoarseLocations.Add(sp.AbsolutePosition);
|
||||
AvatarUUIDs.Add(sp.UUID);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CoarseLocations.Add(sp.AbsolutePosition);
|
||||
AvatarUUIDs.Add(sp.UUID);
|
||||
}
|
||||
CoarseLocations.Add(sp.AbsolutePosition);
|
||||
AvatarUUIDs.Add(sp.UUID);
|
||||
}
|
||||
});
|
||||
|
||||
DistributeCourseLocationUpdates(CoarseLocations, AvatarUUIDs, connectiondata, presence);
|
||||
}
|
||||
|
||||
|
|
|
@ -3825,7 +3825,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
List<String> nametable = new List<String>();
|
||||
World.ForEachRootScenePresence(delegate(ScenePresence presence)
|
||||
{
|
||||
if (presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID))
|
||||
SceneObjectPart sitPart = presence.ParentPart;
|
||||
if (sitPart != null && m_host.ParentGroup.HasChildPrim(sitPart.LocalId))
|
||||
nametable.Add(presence.ControllingClient.Name);
|
||||
});
|
||||
|
||||
|
@ -4393,22 +4394,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
// Find pushee position
|
||||
// Pushee Linked?
|
||||
if (pusheeav.ParentID != 0)
|
||||
{
|
||||
SceneObjectPart parentobj = World.GetSceneObjectPart(pusheeav.ParentID);
|
||||
if (parentobj != null)
|
||||
{
|
||||
PusheePos = parentobj.AbsolutePosition;
|
||||
}
|
||||
else
|
||||
{
|
||||
PusheePos = pusheeav.AbsolutePosition;
|
||||
}
|
||||
}
|
||||
SceneObjectPart sitPart = pusheeav.ParentPart;
|
||||
if (sitPart != null)
|
||||
PusheePos = sitPart.AbsolutePosition;
|
||||
else
|
||||
{
|
||||
PusheePos = pusheeav.AbsolutePosition;
|
||||
}
|
||||
}
|
||||
|
||||
if (!pusheeIsAvatar)
|
||||
|
@ -5603,7 +5593,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
flags |= ScriptBaseClass.AGENT_IN_AIR;
|
||||
}
|
||||
|
||||
if (agent.ParentID != 0)
|
||||
if (agent.ParentPart != null)
|
||||
{
|
||||
flags |= ScriptBaseClass.AGENT_ON_OBJECT;
|
||||
flags |= ScriptBaseClass.AGENT_SITTING;
|
||||
|
@ -7692,7 +7682,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
World.ForEachRootScenePresence(delegate(ScenePresence presence)
|
||||
{
|
||||
if (presence.ParentID != 0 && m_host.ParentGroup.HasChildPrim(presence.ParentID))
|
||||
avatarCount++;
|
||||
avatarCount++;
|
||||
});
|
||||
|
||||
return m_host.ParentGroup.PrimCount + avatarCount;
|
||||
|
|
Loading…
Reference in New Issue