Prevent avatar from walking along z-axis
Thanks mirceakitsune for a patch that prevents the avatar from trying to walk along the Z-axis in mouselook mode (or left-click the avatar and walk) while looking up or down. Fixes Mantis #946.GenericGridServerConcept
parent
08c76989a7
commit
05bbfd57f1
|
@ -637,6 +637,19 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
Dir_Vectors[5] = new Vector3(0, 0, -0.5f); //DOWN_Nudge
|
Dir_Vectors[5] = new Vector3(0, 0, -0.5f); //DOWN_Nudge
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Vector3[] GetWalkDirectionVectors()
|
||||||
|
{
|
||||||
|
Vector3[] vector = new Vector3[6];
|
||||||
|
vector[0] = new Vector3(m_CameraUpAxis.Z, 0, -m_CameraAtAxis.Z); //FORWARD
|
||||||
|
vector[1] = new Vector3(-m_CameraUpAxis.Z, 0, m_CameraAtAxis.Z); //BACK
|
||||||
|
vector[2] = new Vector3(0, 1, 0); //LEFT
|
||||||
|
vector[3] = new Vector3(0, -1, 0); //RIGHT
|
||||||
|
vector[4] = new Vector3(m_CameraAtAxis.Z, 0, m_CameraUpAxis.Z); //UP
|
||||||
|
vector[5] = new Vector3(-m_CameraAtAxis.Z, 0, -m_CameraUpAxis.Z); //DOWN
|
||||||
|
vector[5] = new Vector3(-m_CameraAtAxis.Z, 0, -m_CameraUpAxis.Z); //DOWN_Nudge
|
||||||
|
return vector;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1192,6 +1205,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
bool bAllowUpdateMoveToPosition = false;
|
bool bAllowUpdateMoveToPosition = false;
|
||||||
bool bResetMoveToPosition = false;
|
bool bResetMoveToPosition = false;
|
||||||
|
|
||||||
|
Vector3[] dirVectors;
|
||||||
|
if (m_physicsActor.Flying) dirVectors = Dir_Vectors;
|
||||||
|
else dirVectors = GetWalkDirectionVectors();
|
||||||
|
|
||||||
foreach (Dir_ControlFlags DCF in Enum.GetValues(typeof (Dir_ControlFlags)))
|
foreach (Dir_ControlFlags DCF in Enum.GetValues(typeof (Dir_ControlFlags)))
|
||||||
{
|
{
|
||||||
if ((flags & (uint) DCF) != 0)
|
if ((flags & (uint) DCF) != 0)
|
||||||
|
@ -1200,7 +1218,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
DCFlagKeyPressed = true;
|
DCFlagKeyPressed = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
agent_control_v3 += Dir_Vectors[i];
|
agent_control_v3 += dirVectors[i];
|
||||||
}
|
}
|
||||||
catch (IndexOutOfRangeException)
|
catch (IndexOutOfRangeException)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue