1 #ifndef RAYLIB_CPP_INCLUDE_VECTOR2_HPP_
2 #define RAYLIB_CPP_INCLUDE_VECTOR2_HPP_
4 #ifndef RAYLIB_CPP_NO_MATH
8 #include "./raylib.hpp"
9 #include "./raymath.hpp"
10 #include "./raylib-cpp-utils.hpp"
26 GETTERSETTER(
float, X, x)
27 GETTERSETTER(
float, Y, y)
34 bool operator==(const ::Vector2& other) {
39 bool operator!=(const ::Vector2& other) {
40 return !(*
this == other);
43 #ifndef RAYLIB_CPP_NO_MATH
44 Vector2 Add(const ::Vector2& vector2)
const {
45 return Vector2Add(*
this, vector2);
48 Vector2 operator+(const ::Vector2& vector2)
const {
49 return Vector2Add(*
this, vector2);
52 Vector2 Subtract(const ::Vector2& vector2)
const {
53 return Vector2Subtract(*
this, vector2);
56 Vector2 operator-(const ::Vector2& vector2)
const {
57 return Vector2Subtract(*
this, vector2);
60 Vector2 Negate()
const {
61 return Vector2Negate(*
this);
64 Vector2 operator-()
const {
65 return Vector2Negate(*
this);
68 Vector2 Multiply(const ::Vector2& vector2)
const {
69 return Vector2Multiply(*
this, vector2);
72 Vector2 operator*(const ::Vector2& vector2)
const {
73 return Vector2Multiply(*
this, vector2);
76 Vector2 Scale(
const float scale)
const {
77 return Vector2Scale(*
this, scale);
80 Vector2 operator*(
const float scale)
const {
81 return Vector2Scale(*
this, scale);
84 Vector2 Divide(const ::Vector2& vector2)
const {
85 return Vector2Divide(*
this, vector2);
88 Vector2 operator/(const ::Vector2& vector2)
const {
89 return Vector2Divide(*
this, vector2);
92 Vector2 Divide(
const float div)
const {
93 return ::Vector2{x / div, y / div};
96 Vector2 operator/(
const float div)
const {
100 Vector2& operator+=(const ::Vector2& vector2) {
101 set(Vector2Add(*
this, vector2));
106 Vector2& operator-=(const ::Vector2& vector2) {
107 set(Vector2Subtract(*
this, vector2));
113 Vector2& operator*=(const ::Vector2& vector2) {
114 set(Vector2Multiply(*
this, vector2));
119 Vector2& operator*=(
const float scale) {
120 set(Vector2Scale(*
this, scale));
125 Vector2& operator/=(const ::Vector2& vector2) {
126 set(Vector2Divide(*
this, vector2));
131 Vector2& operator/=(
const float div) {
142 return Vector2Length(*
this);
149 return Vector2LengthSqr(*
this);
156 return Vector2Normalize(*
this);
163 return Vector2DotProduct(*
this, vector2);
169 float Angle(const ::Vector2& vector2)
const {
170 return Vector2Angle(*
this, vector2);
177 return Vector2Distance(*
this, vector2);
184 return Vector2Lerp(*
this, vector2, amount);
191 return Vector2Reflect(*
this, normal);
198 return Vector2Rotate(*
this, degrees);
205 return Vector2MoveTowards(*
this, target, maxDistance);
212 return Vector2Zero();
224 ::DrawPixelV(*
this, color);
228 inline Vector2& DrawLine(::Vector2 endPos, ::Color color) {
229 ::DrawLineV(*
this, endPos, color);
233 inline Vector2& DrawLine(::Vector2 endPos,
float thick, ::Color color) {
234 ::DrawLineEx(*
this, endPos, thick, color);
238 inline Vector2& DrawLineBezier(::Vector2 endPos,
float thick, ::Color color) {
239 ::DrawLineBezier(*
this, endPos, thick, color);
259 ::DrawCircleV(*
this, radius, color);
264 ::DrawRectangleV(*
this, size, color);
268 inline Vector2& DrawPoly(
int sides,
float radius,
float rotation, ::Color color) {
269 ::DrawPoly(*
this, sides, radius, rotation, color);
277 return ::CheckCollisionCircles(*
this, radius1, center2, radius2);
284 return ::CheckCollisionCircleRec(*
this, radius, rec);
291 return ::CheckCollisionPointRec(*
this, rec);
298 return ::CheckCollisionPointCircle(*
this, center, radius);
305 return ::CheckCollisionPointTriangle(*
this, p1, p2, p3);
314 ::
Vector2 *collisionPoint)
const {
315 return ::CheckCollisionLines(*
this, endPos1, startPos2, endPos2, collisionPoint);
319 inline void set(const ::Vector2& vec) {
327 #endif // RAYLIB_CPP_INCLUDE_VECTOR2_HPP_