Fix indexing and smaller improvements to MLPPMatrix.

This commit is contained in:
Relintai 2023-02-05 09:49:50 +01:00
parent cfe5336a86
commit 8269406991

View File

@ -133,7 +133,6 @@ public:
_FORCE_INLINE_ void clear() { resize(Size2i()); } _FORCE_INLINE_ void clear() { resize(Size2i()); }
_FORCE_INLINE_ void reset() { _FORCE_INLINE_ void reset() {
clear();
if (_data) { if (_data) {
memfree(_data); memfree(_data);
_data = NULL; _data = NULL;
@ -151,8 +150,11 @@ public:
int ds = data_size(); int ds = data_size();
if (ds == 0) { if (ds == 0) {
memfree(_data); if (_data) {
_data = NULL; memfree(_data);
_data = NULL;
}
return; return;
} }
@ -161,7 +163,7 @@ public:
} }
_FORCE_INLINE_ int calculate_index(int p_index_y, int p_index_x) const { _FORCE_INLINE_ int calculate_index(int p_index_y, int p_index_x) const {
return p_index_y * _size.y + p_index_x; return p_index_y * _size.x + p_index_x;
} }
_FORCE_INLINE_ const real_t &operator[](int p_index) const { _FORCE_INLINE_ const real_t &operator[](int p_index) const {
@ -177,34 +179,34 @@ public:
ERR_FAIL_INDEX_V(p_index_x, _size.x, 0); ERR_FAIL_INDEX_V(p_index_x, _size.x, 0);
ERR_FAIL_INDEX_V(p_index_y, _size.y, 0); ERR_FAIL_INDEX_V(p_index_y, _size.y, 0);
return _data[p_index_y * _size.y + p_index_x]; return _data[p_index_y * _size.x + p_index_x];
} }
_FORCE_INLINE_ real_t get_element(int p_index_y, int p_index_x) { _FORCE_INLINE_ real_t get_element(int p_index_y, int p_index_x) {
ERR_FAIL_INDEX_V(p_index_x, _size.x, 0); ERR_FAIL_INDEX_V(p_index_x, _size.x, 0);
ERR_FAIL_INDEX_V(p_index_y, _size.y, 0); ERR_FAIL_INDEX_V(p_index_y, _size.y, 0);
return _data[p_index_y * _size.y + p_index_x]; return _data[p_index_y * _size.x + p_index_x];
} }
_FORCE_INLINE_ real_t get_element_bind(int p_index_y, int p_index_x) const { _FORCE_INLINE_ real_t get_element_bind(int p_index_y, int p_index_x) const {
ERR_FAIL_INDEX_V(p_index_x, _size.x, 0); ERR_FAIL_INDEX_V(p_index_x, _size.x, 0);
ERR_FAIL_INDEX_V(p_index_y, _size.y, 0); ERR_FAIL_INDEX_V(p_index_y, _size.y, 0);
return static_cast<real_t>(_data[p_index_y * _size.y + p_index_x]); return static_cast<real_t>(_data[p_index_y * _size.x + p_index_x]);
} }
_FORCE_INLINE_ void set_element(int p_index_y, int p_index_x, real_t p_val) { _FORCE_INLINE_ void set_element(int p_index_y, int p_index_x, real_t p_val) {
ERR_FAIL_INDEX(p_index_x, _size.x); ERR_FAIL_INDEX(p_index_x, _size.x);
ERR_FAIL_INDEX(p_index_y, _size.y); ERR_FAIL_INDEX(p_index_y, _size.y);
_data[p_index_y * _size.y + p_index_x] = p_val; _data[p_index_y * _size.x + p_index_x] = p_val;
} }
_FORCE_INLINE_ void set_element_bind(int p_index_y, int p_index_x, real_t p_val) { _FORCE_INLINE_ void set_element_bind(int p_index_y, int p_index_x, real_t p_val) {
ERR_FAIL_INDEX(p_index_x, _size.x); ERR_FAIL_INDEX(p_index_x, _size.x);
ERR_FAIL_INDEX(p_index_y, _size.y); ERR_FAIL_INDEX(p_index_y, _size.y);
_data[p_index_y * _size.y + p_index_x] = p_val; _data[p_index_y * _size.x + p_index_x] = p_val;
} }
_FORCE_INLINE_ Vector<real_t> get_row_vector(int p_index_y) { _FORCE_INLINE_ Vector<real_t> get_row_vector(int p_index_y) {
@ -328,8 +330,12 @@ public:
} }
void fill(real_t p_val) { void fill(real_t p_val) {
if (!_data) {
return;
}
int ds = data_size(); int ds = data_size();
for (int i = 0; i < ds; i++) { for (int i = 0; i < ds; ++i) {
_data[i] = p_val; _data[i] = p_val;
} }
} }