Add plane repulsion logic

This commit is contained in:
ScottNZ
2014-07-27 22:06:30 +12:00
parent a57c9c5cf3
commit 16a30fd6b1
3 changed files with 77 additions and 41 deletions

View File

@@ -50,6 +50,21 @@ namespace OpenRA.Mods.RA.Air
self.QueueActivity(new TakeOff());
}
Repulse();
}
public override WVec GetRepulsionForce()
{
var repulsionForce = base.GetRepulsionForce();
if (repulsionForce == WVec.Zero)
return WVec.Zero;
var currentDir = FlyStep(Facing);
var dot = WVec.Dot(currentDir, repulsionForce) / (currentDir.HorizontalLength * repulsionForce.HorizontalLength);
// avoid stalling the plane
return dot >= 0 ? repulsionForce : WVec.Zero;
}
public void ResolveOrder(Actor self, Order order)