instead of setting avatar rotation twice in SP.HandleAgentUpdate(), eliminate the second setting in AddNewMovement()
parent
29093df1a7
commit
36f7d36fa1
|
@ -1298,7 +1298,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
#region Inputs
|
#region Inputs
|
||||||
|
|
||||||
AgentManager.ControlFlags flags = (AgentManager.ControlFlags)agentData.ControlFlags;
|
AgentManager.ControlFlags flags = (AgentManager.ControlFlags)agentData.ControlFlags;
|
||||||
Quaternion bodyRotation = agentData.BodyRotation;
|
|
||||||
|
|
||||||
// Camera location in world. We'll need to raytrace
|
// Camera location in world. We'll need to raytrace
|
||||||
// from this location from time to time.
|
// from this location from time to time.
|
||||||
|
@ -1384,6 +1383,15 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
if (m_allowMovement && !SitGround)
|
if (m_allowMovement && !SitGround)
|
||||||
{
|
{
|
||||||
|
Quaternion bodyRotation = agentData.BodyRotation;
|
||||||
|
bool update_rotation = false;
|
||||||
|
|
||||||
|
if (bodyRotation != m_bodyRot)
|
||||||
|
{
|
||||||
|
Rotation = bodyRotation;
|
||||||
|
update_rotation = true;
|
||||||
|
}
|
||||||
|
|
||||||
bool update_movementflag = false;
|
bool update_movementflag = false;
|
||||||
|
|
||||||
if (agentData.UseClientAgentPosition)
|
if (agentData.UseClientAgentPosition)
|
||||||
|
@ -1393,8 +1401,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
bool update_rotation = false;
|
|
||||||
bool DCFlagKeyPressed = false;
|
bool DCFlagKeyPressed = false;
|
||||||
Vector3 agent_control_v3 = Vector3.Zero;
|
Vector3 agent_control_v3 = Vector3.Zero;
|
||||||
|
|
||||||
|
@ -1410,12 +1416,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (actor.Flying != oldflying)
|
if (actor.Flying != oldflying)
|
||||||
update_movementflag = true;
|
update_movementflag = true;
|
||||||
|
|
||||||
if (bodyRotation != m_bodyRot)
|
|
||||||
{
|
|
||||||
m_bodyRot = bodyRotation;
|
|
||||||
update_rotation = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_parentID == 0)
|
if (m_parentID == 0)
|
||||||
{
|
{
|
||||||
bool bAllowUpdateMoveToPosition = false;
|
bool bAllowUpdateMoveToPosition = false;
|
||||||
|
@ -1467,8 +1467,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
) // This or is for Nudge forward
|
) // This or is for Nudge forward
|
||||||
{
|
{
|
||||||
m_movementflag -= ((byte)(uint)DCF);
|
m_movementflag -= ((byte)(uint)DCF);
|
||||||
|
|
||||||
update_movementflag = true;
|
update_movementflag = true;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if ((DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE)
|
if ((DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE)
|
||||||
&& ((m_movementflag & (byte)nudgehack) == nudgehack))
|
&& ((m_movementflag & (byte)nudgehack) == nudgehack))
|
||||||
|
@ -1534,7 +1534,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// m_log.DebugFormat(
|
// m_log.DebugFormat(
|
||||||
// "In {0} adding velocity to {1} of {2}", m_scene.RegionInfo.RegionName, Name, agent_control_v3);
|
// "In {0} adding velocity to {1} of {2}", m_scene.RegionInfo.RegionName, Name, agent_control_v3);
|
||||||
|
|
||||||
AddNewMovement(agent_control_v3, bodyRotation);
|
AddNewMovement(agent_control_v3);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (update_movementflag
|
if (update_movementflag
|
||||||
|
@ -1732,7 +1732,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
Vector3 agent_control_v3 = new Vector3();
|
Vector3 agent_control_v3 = new Vector3();
|
||||||
HandleMoveToTargetUpdate(ref agent_control_v3, Rotation);
|
HandleMoveToTargetUpdate(ref agent_control_v3, Rotation);
|
||||||
AddNewMovement(agent_control_v3, Rotation);
|
AddNewMovement(agent_control_v3);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -2311,13 +2311,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// Rotate the avatar to the given rotation and apply a movement in the given relative vector
|
/// Rotate the avatar to the given rotation and apply a movement in the given relative vector
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="vec">The vector in which to move. This is relative to the rotation argument</param>
|
/// <param name="vec">The vector in which to move. This is relative to the rotation argument</param>
|
||||||
/// <param name="rotation">The direction in which this avatar should now face.
|
public void AddNewMovement(Vector3 vec)
|
||||||
public void AddNewMovement(Vector3 vec, Quaternion rotation)
|
|
||||||
{
|
{
|
||||||
m_perfMonMS = Util.EnvironmentTickCount();
|
m_perfMonMS = Util.EnvironmentTickCount();
|
||||||
|
|
||||||
Rotation = rotation;
|
Vector3 direc = vec * Rotation;
|
||||||
Vector3 direc = vec * rotation;
|
|
||||||
direc.Normalize();
|
direc.Normalize();
|
||||||
|
|
||||||
direc *= 0.03f * 128f * m_speedModifier;
|
direc *= 0.03f * 128f * m_speedModifier;
|
||||||
|
|
|
@ -107,7 +107,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
|
|
||||||
Vector3 agent_control_v3 = new Vector3();
|
Vector3 agent_control_v3 = new Vector3();
|
||||||
presence.HandleMoveToTargetUpdate(ref agent_control_v3, presence.Rotation);
|
presence.HandleMoveToTargetUpdate(ref agent_control_v3, presence.Rotation);
|
||||||
presence.AddNewMovement(agent_control_v3, presence.Rotation);
|
presence.AddNewMovement(agent_control_v3);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
//// presence.DoMoveToPositionUpdate((0, presence.MoveToPositionTarget, null);
|
//// presence.DoMoveToPositionUpdate((0, presence.MoveToPositionTarget, null);
|
||||||
|
|
Loading…
Reference in New Issue