As with prim sitting avatars, make an avatar phantom when it sits on the ground and solid again when it stands.
This is to avoid http://opensimulator.org/mantis/view.php?id=5783 when a collision with a ground sitting avatar causes that avatar to automatically stand and sometimes not be able to move A better solution may be to keep gound sitting avatars solid but remove their collision status. However, this requires some physics code work.0.7.2-post-fixes
parent
3c9654d5d6
commit
b527901556
|
@ -1351,6 +1351,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// to use. Or we could add a m_isSitting variable.
|
// to use. Or we could add a m_isSitting variable.
|
||||||
//Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED");
|
//Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED");
|
||||||
SitGround = true;
|
SitGround = true;
|
||||||
|
RemoveFromPhysicalScene();
|
||||||
}
|
}
|
||||||
|
|
||||||
// In the future, these values might need to go global.
|
// In the future, these values might need to go global.
|
||||||
|
@ -1811,12 +1812,16 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void StandUp()
|
public void StandUp()
|
||||||
{
|
{
|
||||||
|
// m_log.DebugFormat("[SCENE PRESENCE]: StandUp() for {0}", Name);
|
||||||
|
|
||||||
SitGround = false;
|
SitGround = false;
|
||||||
|
if (PhysicsActor == null)
|
||||||
|
AddToPhysicalScene(false);
|
||||||
|
|
||||||
if (m_parentID != 0)
|
if (m_parentID != 0)
|
||||||
{
|
{
|
||||||
m_log.Debug("StandupCode Executed");
|
SceneObjectPart part = m_scene.GetSceneObjectPart(ParentID);
|
||||||
SceneObjectPart part = m_scene.GetSceneObjectPart(m_parentID);
|
|
||||||
if (part != null)
|
if (part != null)
|
||||||
{
|
{
|
||||||
TaskInventoryDictionary taskIDict = part.TaskInventory;
|
TaskInventoryDictionary taskIDict = part.TaskInventory;
|
||||||
|
@ -1844,13 +1849,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
ControllingClient.SendClearFollowCamProperties(part.ParentUUID);
|
ControllingClient.SendClearFollowCamProperties(part.ParentUUID);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_physicsActor == null)
|
m_pos += ParentPosition + new Vector3(0.0f, 0.0f, 2.0f * m_sitAvatarHeight);
|
||||||
{
|
ParentPosition = Vector3.Zero;
|
||||||
AddToPhysicalScene(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_pos += m_parentPosition + new Vector3(0.0f, 0.0f, 2.0f*m_sitAvatarHeight);
|
|
||||||
m_parentPosition = Vector3.Zero;
|
|
||||||
|
|
||||||
m_parentID = 0;
|
m_parentID = 0;
|
||||||
SendAvatarDataToAllAgents();
|
SendAvatarDataToAllAgents();
|
||||||
|
|
Loading…
Reference in New Issue