#pragma once #include /** * A 2D Vector. */ class Vector2 { public: /** * Creates a 2D vector. * * @param x A X coordinate * @param y A Y coordinate */ Vector2(unsigned int x, unsigned int y); /** * Returns the X coordinate. */ unsigned int x() const; /** * Sets the X coordinate. * * @param x A new X coordinate */ void x(unsigned int x); /** * Returns the Y coordinate. */ unsigned int y() const; /** * Sets the Y coordinate. * * @param Y A new Y coordinate */ void y(unsigned int y); /** * Creates a copy of the 2D vector. * * @returns A identical 2D vector. */ std::shared_ptr copy(); Vector2 operator+(const Vector2 vector2); Vector2 operator-(const Vector2 vector2); Vector2 &operator+=(const Vector2 &vector2); Vector2 &operator-=(const Vector2 &vector2); private: unsigned int _x; unsigned int _y; };