Allow Vector2/Vector3 iterators to have non-integer values

This commit is contained in:
Aaron Franke 2020-03-13 05:03:40 -04:00
parent f7b50992b5
commit 38a0ff2249
No known key found for this signature in database
GPG key ID: 40A1750B977E56BF

View file

@ -3458,8 +3458,8 @@ bool Variant::iter_init(Variant &r_iter, bool &valid) const {
return _data._float > 0.0;
} break;
case VECTOR2: {
int64_t from = reinterpret_cast<const Vector2 *>(_data._mem)->x;
int64_t to = reinterpret_cast<const Vector2 *>(_data._mem)->y;
double from = reinterpret_cast<const Vector2 *>(_data._mem)->x;
double to = reinterpret_cast<const Vector2 *>(_data._mem)->y;
r_iter = from;
@ -3474,9 +3474,9 @@ bool Variant::iter_init(Variant &r_iter, bool &valid) const {
return from < to;
} break;
case VECTOR3: {
int64_t from = reinterpret_cast<const Vector3 *>(_data._mem)->x;
int64_t to = reinterpret_cast<const Vector3 *>(_data._mem)->y;
int64_t step = reinterpret_cast<const Vector3 *>(_data._mem)->z;
double from = reinterpret_cast<const Vector3 *>(_data._mem)->x;
double to = reinterpret_cast<const Vector3 *>(_data._mem)->y;
double step = reinterpret_cast<const Vector3 *>(_data._mem)->z;
r_iter = from;
@ -3660,9 +3660,9 @@ bool Variant::iter_next(Variant &r_iter, bool &valid) const {
return true;
} break;
case VECTOR2: {
int64_t to = reinterpret_cast<const Vector2 *>(_data._mem)->y;
double to = reinterpret_cast<const Vector2 *>(_data._mem)->y;
int64_t idx = r_iter;
double idx = r_iter;
idx++;
if (idx >= to)
@ -3684,10 +3684,10 @@ bool Variant::iter_next(Variant &r_iter, bool &valid) const {
return true;
} break;
case VECTOR3: {
int64_t to = reinterpret_cast<const Vector3 *>(_data._mem)->y;
int64_t step = reinterpret_cast<const Vector3 *>(_data._mem)->z;
double to = reinterpret_cast<const Vector3 *>(_data._mem)->y;
double step = reinterpret_cast<const Vector3 *>(_data._mem)->z;
int64_t idx = r_iter;
double idx = r_iter;
idx += step;
if (step < 0 && idx <= to)