struct HS_POINT2_NAME {
    HS_POINT2_TYPE  fX, fY;

    HS_POINT2_NAME& Set(HS_POINT2_TYPE x, HS_POINT2_TYPE y)
    {
        fX = x;
        fY = y;
        return *this;
    }
    HS_POINT2_NAME& operator+=(const HS_POINT2_NAME& s)
    {
        this->fX += s.fX;
        this->fY += s.fY;
        return *this;
    }
    HS_POINT2_NAME& operator-=(const HS_POINT2_NAME& s)
    {
        this->fX -= s.fX;
        this->fY -= s.fY;
        return *this;
    }

#if 0 // Havok reeks
    friend int operator==(const HS_POINT2_NAME& s, const HS_POINT2_NAME& t)
    {
        return (s.fX == t.fX && s.fY == t.fY);
    }
    friend int operator!=(const HS_POINT2_NAME& s, const HS_POINT2_NAME& t)
    {
        return !(s == t);
    }
#else // Havok reeks
    int operator==(const HS_POINT2_NAME& ss) const
    {
        return (ss.fX == fX && ss.fY == fY);
    }
    int operator!=(const HS_POINT2_NAME& ss)
    {
        return !(ss == *this);
    }
#endif // Havok reeks
    friend HS_POINT2_NAME operator+(const HS_POINT2_NAME& s, const HS_POINT2_NAME& t)
    {
        HS_POINT2_NAME  result;
        result.Set(s.fX + t.fX, s.fY + t.fY);
        return result;
    }
    friend HS_POINT2_NAME operator-(const HS_POINT2_NAME& s, const HS_POINT2_NAME& t)
    {
        HS_POINT2_NAME  result;
        result.Set(s.fX - t.fX, s.fY - t.fY);
        return result;
    }
    friend HS_POINT2_NAME operator-(const HS_POINT2_NAME& s)
    {
        HS_POINT2_NAME  result = { -s.fX, -s.fY };
        return result;
    }

#undef HS_POINT2_NAME
#undef HS_POINT2_TYPE