This basically solved the problem, although I have no idea why the problem started in the first place… My location values aren’t out of the ordinary. Here’s the code i’m using that works.
bool ACrossStampede::StableNormalize2D(FVector& _v)
{
const float size = _v.Size();
if (size == 0.0f)
{
_v = FVector::ZeroVector;
}
else
{
_v = _v / size;
_v.Z = 0.0f;
}
return size == 0.0f;
}