Skip to content

Commit 9de4e17

Browse files
committed
Fix Vector2 multiplication operator behavior
1 parent bf2cb77 commit 9de4e17

File tree

5 files changed

+58
-47
lines changed

5 files changed

+58
-47
lines changed

CHANGELOG.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111
- `Sound::IsLoaded()`
1212
- `Music::IsLoaded()`
1313
- Shader example
14-
- `raylib::DrawText()` for `std::string` support
15-
- `raylib::DrawTextEx()` for `std::string` support
16-
- `raylib::DrawTextPro()` for `std::string` support
14+
- Function overrides for `std::string` support
15+
- `raylib::DrawText()`
16+
- `raylib::DrawTextEx()`
17+
- `raylib::DrawTextPro()`
18+
- `raylib::TextSubtext()`
19+
- `raylib::TextReplace()`
20+
- `raylib::TextInsert()`
21+
- `raylib::TextAppend()`
22+
- `raylib::TextFindIndex()`
23+
- `raylib::TextToUpper()`
24+
- `raylib::TextToLower()`
25+
- `raylib::TextToPascal()`
26+
- `raylib::TextToInteger()`
1727

1828
### Fixed
1929
- Shader constructor
30+
- Vector2 muliplication operator behavior ([#155](https://github.com/RobLoach/raylib-cpp/issues/155))
2031

2132
### Changed
2233
- Merged `Text.hpp` into `Functions.hpp`

include/Vector2.hpp

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,62 +41,56 @@ class Vector2 : public ::Vector2 {
4141
return Vector2Add(*this, vector2);
4242
}
4343

44-
Vector2 operator+(const ::Vector2& vector2) {
44+
Vector2 operator+(const ::Vector2& vector2) const {
4545
return Vector2Add(*this, vector2);
4646
}
4747

4848
Vector2 Subtract(const ::Vector2& vector2) const {
4949
return Vector2Subtract(*this, vector2);
5050
}
5151

52-
Vector2 operator-(const ::Vector2& vector2) {
52+
Vector2 operator-(const ::Vector2& vector2) const {
5353
return Vector2Subtract(*this, vector2);
5454
}
5555

5656
Vector2 Negate() const {
5757
return Vector2Negate(*this);
5858
}
5959

60-
Vector2 operator-() {
60+
Vector2 operator-() const {
6161
return Vector2Negate(*this);
6262
}
6363

6464
Vector2 Multiply(const ::Vector2& vector2) const {
6565
return Vector2Multiply(*this, vector2);
6666
}
6767

68-
Vector2 operator*(const ::Vector2& vector2) {
68+
Vector2 operator*(const ::Vector2& vector2) const {
6969
return Vector2Multiply(*this, vector2);
7070
}
7171

7272
Vector2 Scale(const float scale) const {
7373
return Vector2Scale(*this, scale);
7474
}
7575

76-
Vector2 operator*(const float scale) {
76+
Vector2 operator*(const float scale) const {
7777
return Vector2Scale(*this, scale);
7878
}
7979

8080
Vector2 Divide(const ::Vector2& vector2) const {
8181
return Vector2Divide(*this, vector2);
8282
}
8383

84-
Vector2 operator/(const ::Vector2& vector2) {
84+
Vector2 operator/(const ::Vector2& vector2) const {
8585
return Vector2Divide(*this, vector2);
8686
}
8787

88-
Vector2& Divide(const float div) {
89-
x /= div;
90-
y /= div;
91-
92-
return *this;
88+
Vector2 Divide(const float div) const {
89+
return ::Vector2{x / div, y / div};
9390
}
9491

95-
Vector2& operator/(const float div) {
96-
x /= div;
97-
y /= div;
98-
99-
return *this;
92+
Vector2 operator/(const float div) const {
93+
return Divide(div);
10094
}
10195

10296
Vector2& operator+=(const ::Vector2& vector2) {

include/Vector3.hpp

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -68,39 +68,35 @@ class Vector3 : public ::Vector3 {
6868
return Vector3Negate(*this);
6969
}
7070

71-
Vector3 Multiply(const ::Vector3& vector3) {
71+
Vector3 Multiply(const ::Vector3& vector3) const {
7272
return Vector3Multiply(*this, vector3);
7373
}
7474

75-
Vector3 operator*(const ::Vector3& vector3) {
75+
Vector3 operator*(const ::Vector3& vector3) const {
7676
return Vector3Multiply(*this, vector3);
7777
}
7878

79-
Vector3 Scale(const float scale) {
79+
Vector3 Scale(const float scale) const {
8080
return Vector3Scale(*this, scale);
8181
}
8282

83-
Vector3 operator*(const float scale) {
83+
Vector3 operator*(const float scale) const {
8484
return Vector3Scale(*this, scale);
8585
}
8686

87-
Vector3 Divide(const ::Vector3& vector3) {
87+
Vector3 Divide(const ::Vector3& vector3) const {
8888
return Vector3Divide(*this, vector3);
8989
}
9090

91-
Vector3 operator/(const ::Vector3& vector3) {
91+
Vector3 operator/(const ::Vector3& vector3) const {
9292
return Vector3Divide(*this, vector3);
9393
}
9494

95-
Vector3& Divide(const float div) {
96-
x /= div;
97-
y /= div;
98-
z /= div;
99-
100-
return *this;
95+
Vector3 Divide(const float div) const {
96+
return ::Vector3{x / div, y / div, z / div};
10197
}
10298

103-
Vector3 operator/(const float div) {
99+
Vector3 operator/(const float div) const {
104100
return Divide(div);
105101
}
106102

@@ -149,43 +145,43 @@ class Vector3 : public ::Vector3 {
149145
return Vector3Length(*this);
150146
}
151147

152-
Vector3 Normalize() {
148+
Vector3 Normalize() const {
153149
return Vector3Normalize(*this);
154150
}
155151

156152
float DotProduct(const ::Vector3& vector3) {
157153
return Vector3DotProduct(*this, vector3);
158154
}
159155

160-
float Distance(const ::Vector3& vector3) {
156+
float Distance(const ::Vector3& vector3) const {
161157
return Vector3Distance(*this, vector3);
162158
}
163159

164-
Vector3 Lerp(const ::Vector3& vector3, const float amount) {
160+
Vector3 Lerp(const ::Vector3& vector3, const float amount) const {
165161
return Vector3Lerp(*this, vector3, amount);
166162
}
167163

168-
Vector3 CrossProduct(const ::Vector3& vector3) {
164+
Vector3 CrossProduct(const ::Vector3& vector3) const {
169165
return Vector3CrossProduct(*this, vector3);
170166
}
171167

172-
Vector3 Perpendicular() {
168+
Vector3 Perpendicular() const {
173169
return Vector3Perpendicular(*this);
174170
}
175171

176172
void OrthoNormalize(::Vector3* vector3) {
177173
Vector3OrthoNormalize(this, vector3);
178174
}
179175

180-
Vector3 Transform(const ::Matrix& matrix) {
176+
Vector3 Transform(const ::Matrix& matrix) const {
181177
return Vector3Transform(*this, matrix);
182178
}
183179

184180
Vector3 RotateByQuaternion(const ::Quaternion& quaternion) {
185181
return Vector3RotateByQuaternion(*this, quaternion);
186182
}
187183

188-
Vector3 Reflect(const ::Vector3& normal) {
184+
Vector3 Reflect(const ::Vector3& normal) const {
189185
return Vector3Reflect(*this, normal);
190186
}
191187

include/Vector4.hpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,39 +57,39 @@ class Vector4 : public ::Vector4 {
5757
}
5858

5959
#ifndef RAYLIB_CPP_NO_MATH
60-
Vector4 Multiply(const ::Vector4& vector4) {
60+
Vector4 Multiply(const ::Vector4& vector4) const {
6161
return QuaternionMultiply(*this, vector4);
6262
}
6363

64-
Vector4 operator*(const ::Vector4& vector4) {
64+
Vector4 operator*(const ::Vector4& vector4) const {
6565
return QuaternionMultiply(*this, vector4);
6666
}
6767

68-
Vector4 Lerp(const ::Vector4& vector4, float amount) {
68+
Vector4 Lerp(const ::Vector4& vector4, float amount) const {
6969
return QuaternionLerp(*this, vector4, amount);
7070
}
7171

72-
Vector4 Nlerp(const ::Vector4& vector4, float amount) {
72+
Vector4 Nlerp(const ::Vector4& vector4, float amount) const {
7373
return QuaternionNlerp(*this, vector4, amount);
7474
}
7575

76-
Vector4 Slerp(const ::Vector4& vector4, float amount) {
76+
Vector4 Slerp(const ::Vector4& vector4, float amount) const {
7777
return QuaternionSlerp(*this, vector4, amount);
7878
}
7979

80-
Matrix ToMatrix() {
80+
Matrix ToMatrix() const {
8181
return QuaternionToMatrix(*this);
8282
}
8383

8484
float Length() const {
8585
return QuaternionLength(*this);
8686
}
8787

88-
Vector4 Normalize() {
88+
Vector4 Normalize() const {
8989
return QuaternionNormalize(*this);
9090
}
9191

92-
Vector4 Invert() {
92+
Vector4 Invert() const {
9393
return QuaternionInvert(*this);
9494
}
9595

tests/raylib_test.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,16 @@ int main(int argc, char *argv[]) {
2525
position += speed;
2626
assert(position.x == 310);
2727
assert(raylib::Window::IsReady() == false);
28+
29+
raylib::Vector2 size{50,50};
30+
raylib::Vector2 halfsize = size / 2.0f;
31+
32+
assert(size.x == 50);
33+
assert(halfsize.x == 25);
34+
35+
raylib::Vector2 doublesize = size * 2.0f;
36+
assert(size.x == 50);
37+
assert(doublesize.x == 100);
2838
}
2939

3040
// Color

0 commit comments

Comments
 (0)