Use .Yaw.Facing in Missile.
This commit is contained in:
@@ -308,7 +308,7 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
{
|
{
|
||||||
// Set vertical facing so that the missile faces its target
|
// Set vertical facing so that the missile faces its target
|
||||||
var vDist = new WVec(-tarDistVec.Z, -relTarHorDist, 0);
|
var vDist = new WVec(-tarDistVec.Z, -relTarHorDist, 0);
|
||||||
vFacing = (sbyte)OpenRA.Traits.Util.GetFacing(vDist, 0);
|
vFacing = (sbyte)vDist.Yaw.Facing;
|
||||||
|
|
||||||
// Do not accept -1 as valid vertical facing since it is usually a numerical error
|
// Do not accept -1 as valid vertical facing since it is usually a numerical error
|
||||||
// and will lead to premature descent and crashing into the ground
|
// and will lead to premature descent and crashing into the ground
|
||||||
@@ -546,7 +546,7 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
{
|
{
|
||||||
// Aim for the target
|
// Aim for the target
|
||||||
var vDist = new WVec(-relTarHgt, -relTarHorDist, 0);
|
var vDist = new WVec(-relTarHgt, -relTarHorDist, 0);
|
||||||
desiredVFacing = (sbyte)OpenRA.Traits.Util.GetFacing(vDist, vFacing);
|
desiredVFacing = (sbyte)vDist.HorizontalLengthSquared != 0 ? vDist.Yaw.Facing : vFacing;
|
||||||
|
|
||||||
// Do not accept -1 as valid vertical facing since it is usually a numerical error
|
// Do not accept -1 as valid vertical facing since it is usually a numerical error
|
||||||
// and will lead to premature descent and crashing into the ground
|
// and will lead to premature descent and crashing into the ground
|
||||||
@@ -639,7 +639,7 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
{
|
{
|
||||||
// Aim for the target
|
// Aim for the target
|
||||||
var vDist = new WVec(-relTarHgt, -relTarHorDist * (targetPassedBy ? -1 : 1), 0);
|
var vDist = new WVec(-relTarHgt, -relTarHorDist * (targetPassedBy ? -1 : 1), 0);
|
||||||
desiredVFacing = (sbyte)OpenRA.Traits.Util.GetFacing(vDist, vFacing);
|
desiredVFacing = (sbyte)vDist.HorizontalLengthSquared != 0 ? vDist.Yaw.Facing : vFacing;
|
||||||
if (desiredVFacing < 0 && info.VerticalRateOfTurn < (sbyte)vFacing)
|
if (desiredVFacing < 0 && info.VerticalRateOfTurn < (sbyte)vFacing)
|
||||||
desiredVFacing = 0;
|
desiredVFacing = 0;
|
||||||
}
|
}
|
||||||
@@ -649,7 +649,7 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
{
|
{
|
||||||
// Aim for the target
|
// Aim for the target
|
||||||
var vDist = new WVec(-relTarHgt, -relTarHorDist * (targetPassedBy ? -1 : 1), 0);
|
var vDist = new WVec(-relTarHgt, -relTarHorDist * (targetPassedBy ? -1 : 1), 0);
|
||||||
desiredVFacing = (sbyte)OpenRA.Traits.Util.GetFacing(vDist, vFacing);
|
desiredVFacing = (sbyte)vDist.HorizontalLengthSquared != 0 ? vDist.Yaw.Facing : vFacing;
|
||||||
if (desiredVFacing < 0 && info.VerticalRateOfTurn < (sbyte)vFacing)
|
if (desiredVFacing < 0 && info.VerticalRateOfTurn < (sbyte)vFacing)
|
||||||
desiredVFacing = 0;
|
desiredVFacing = 0;
|
||||||
}
|
}
|
||||||
@@ -659,7 +659,7 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
// Aim to attain cruise altitude as soon as possible while having the absolute value
|
// Aim to attain cruise altitude as soon as possible while having the absolute value
|
||||||
// of vertical facing bound by the maximum vertical rate of turn
|
// of vertical facing bound by the maximum vertical rate of turn
|
||||||
var vDist = new WVec(-diffClfMslHgt - info.CruiseAltitude.Length, -speed, 0);
|
var vDist = new WVec(-diffClfMslHgt - info.CruiseAltitude.Length, -speed, 0);
|
||||||
desiredVFacing = (sbyte)OpenRA.Traits.Util.GetFacing(vDist, vFacing);
|
desiredVFacing = (sbyte)vDist.HorizontalLengthSquared != 0 ? vDist.Yaw.Facing : vFacing;
|
||||||
desiredVFacing = desiredVFacing.Clamp(-info.VerticalRateOfTurn, info.VerticalRateOfTurn);
|
desiredVFacing = desiredVFacing.Clamp(-info.VerticalRateOfTurn, info.VerticalRateOfTurn);
|
||||||
|
|
||||||
ChangeSpeed();
|
ChangeSpeed();
|
||||||
@@ -670,7 +670,7 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
// Aim to attain cruise altitude as soon as possible while having the absolute value
|
// Aim to attain cruise altitude as soon as possible while having the absolute value
|
||||||
// of vertical facing bound by the maximum vertical rate of turn
|
// of vertical facing bound by the maximum vertical rate of turn
|
||||||
var vDist = new WVec(-diffClfMslHgt - info.CruiseAltitude.Length, -speed, 0);
|
var vDist = new WVec(-diffClfMslHgt - info.CruiseAltitude.Length, -speed, 0);
|
||||||
desiredVFacing = (sbyte)OpenRA.Traits.Util.GetFacing(vDist, vFacing);
|
desiredVFacing = (sbyte)vDist.HorizontalLengthSquared != 0 ? vDist.Yaw.Facing : vFacing;
|
||||||
desiredVFacing = desiredVFacing.Clamp(-info.VerticalRateOfTurn, info.VerticalRateOfTurn);
|
desiredVFacing = desiredVFacing.Clamp(-info.VerticalRateOfTurn, info.VerticalRateOfTurn);
|
||||||
|
|
||||||
ChangeSpeed();
|
ChangeSpeed();
|
||||||
@@ -694,7 +694,8 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
var relTarHgt = tarDistVec.Z;
|
var relTarHgt = tarDistVec.Z;
|
||||||
|
|
||||||
// Compute which direction the projectile should be facing
|
// Compute which direction the projectile should be facing
|
||||||
var desiredHFacing = OpenRA.Traits.Util.GetFacing(tarDistVec + predVel, hFacing);
|
var velVec = tarDistVec + predVel;
|
||||||
|
var desiredHFacing = velVec.HorizontalLengthSquared != 0 ? velVec.Yaw.Facing : hFacing;
|
||||||
|
|
||||||
if (allowPassBy && System.Math.Abs(desiredHFacing - hFacing) >= System.Math.Abs(desiredHFacing + 128 - hFacing))
|
if (allowPassBy && System.Math.Abs(desiredHFacing - hFacing) >= System.Math.Abs(desiredHFacing + 128 - hFacing))
|
||||||
{
|
{
|
||||||
@@ -764,10 +765,10 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
+ new WVec(WDist.Zero, WDist.Zero, info.AirburstAltitude);
|
+ new WVec(WDist.Zero, WDist.Zero, info.AirburstAltitude);
|
||||||
|
|
||||||
// Compute target's predicted velocity vector (assuming uniform circular motion)
|
// Compute target's predicted velocity vector (assuming uniform circular motion)
|
||||||
var fac1 = OpenRA.Traits.Util.GetFacing(tarVel, hFacing);
|
var yaw1 = tarVel.HorizontalLengthSquared != 0 ? tarVel.Yaw : WAngle.FromFacing(hFacing);
|
||||||
tarVel = newTarPos - targetPosition;
|
tarVel = newTarPos - targetPosition;
|
||||||
var fac2 = OpenRA.Traits.Util.GetFacing(tarVel, hFacing);
|
var yaw2 = tarVel.HorizontalLengthSquared != 0 ? tarVel.Yaw : WAngle.FromFacing(hFacing);
|
||||||
predVel = tarVel.Rotate(WRot.FromFacing(fac2 - fac1));
|
predVel = tarVel.Rotate(WRot.FromYaw(yaw2 - yaw1));
|
||||||
targetPosition = newTarPos;
|
targetPosition = newTarPos;
|
||||||
|
|
||||||
// Compute current distance from target position
|
// Compute current distance from target position
|
||||||
@@ -781,7 +782,7 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
else
|
else
|
||||||
move = HomingTick(world, tarDistVec, relTarHorDist);
|
move = HomingTick(world, tarDistVec, relTarHorDist);
|
||||||
|
|
||||||
renderFacing = WAngle.ArcTan(move.Z - move.Y, move.X).Angle / 4 - 64;
|
renderFacing = new WVec(move.X, move.Y - move.Z, 0).Yaw.Facing;
|
||||||
|
|
||||||
// Move the missile
|
// Move the missile
|
||||||
var lastPos = pos;
|
var lastPos = pos;
|
||||||
|
|||||||
Reference in New Issue
Block a user