diff options
Diffstat (limited to 'src/crepe/api/Vector2.cpp')
-rw-r--r-- | src/crepe/api/Vector2.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/crepe/api/Vector2.cpp b/src/crepe/api/Vector2.cpp new file mode 100644 index 0000000..8cbd9ad --- /dev/null +++ b/src/crepe/api/Vector2.cpp @@ -0,0 +1,59 @@ +#include "Vector2.h" + +namespace crepe { + + // Constructor with initial values + Vector2::Vector2(float x, float y) : x(x), y(y) {} + + // Subtracts another vector from this vector and returns the result. + Vector2 Vector2::operator-(const Vector2& other) const { + return {x - other.x, y - other.y}; + } + + // Adds another vector to this vector and returns the result. + Vector2 Vector2::operator+(const Vector2& other) const { + return {x + other.x, y + other.y}; + } + + // Multiplies this vector by a scalar and returns the result. + Vector2 Vector2::operator*(float scalar) const { + return {x * scalar, y * scalar}; + } + + // Multiplies this vector by another vector element-wise and updates this vector. + Vector2& Vector2::operator*=(const Vector2& other) { + x *= other.x; + y *= other.y; + return *this; + } + + // Adds another vector to this vector and updates this vector. + Vector2& Vector2::operator+=(const Vector2& other) { + x += other.x; + y += other.y; + return *this; + } + + // Adds a scalar value to both components of this vector and updates this vector. + Vector2& Vector2::operator+=(float other) { + x += other; + y += other; + return *this; + } + + // Returns the negation of this vector. + Vector2 Vector2::operator-() const { + return {-x, -y}; + } + + // Checks if this vector is equal to another vector. + bool Vector2::operator==(const Vector2& other) const { + return x == other.x && y == other.y; + } + + // Checks if this vector is not equal to another vector. + bool Vector2::operator!=(const Vector2& other) const { + return !(*this == other); + } + +} // namespace crepe |