2027: Distance can't be negative r=def- a=fokkonaut

This removes code duplication and D can never be negative:

```template<typename T>
inline T distance(const vector2_base<T> &a, const vector2_base<T> &b)
{
	return length(a-b);
}
inline float length(const vector2_base<float> &a)
{
	return sqrtf(a.x*a.x + a.y*a.y);
}```

Co-authored-by: fokkonaut <35420825+fokkonaut@users.noreply.github.com>
This commit is contained in:
bors[bot] 2020-01-04 22:42:32 +00:00 committed by GitHub
commit 19779ccf94
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -494,15 +494,7 @@ void CCharacterCore::Move()
if((!(pCharCore->m_Super || m_Super) && (m_Solo || pCharCore->m_Solo || !pCharCore->m_Collision || pCharCore->m_NoCollision || (m_Id != -1 && !m_pTeams->CanCollide(m_Id, p))))) if((!(pCharCore->m_Super || m_Super) && (m_Solo || pCharCore->m_Solo || !pCharCore->m_Collision || pCharCore->m_NoCollision || (m_Id != -1 && !m_pTeams->CanCollide(m_Id, p)))))
continue; continue;
float D = distance(Pos, pCharCore->m_Pos); float D = distance(Pos, pCharCore->m_Pos);
if(D < 28.0f && D > 0.0f) if((D < 28.0f && D > 0.0f) || (D <= 0.001f && D >= 0.f))
{
if(a > 0.0f)
m_Pos = LastPos;
else if(distance(NewPos, pCharCore->m_Pos) > D)
m_Pos = NewPos;
return;
}
else if(D <= 0.001f && D >= -0.001f)
{ {
if(a > 0.0f) if(a > 0.0f)
m_Pos = LastPos; m_Pos = LastPos;