diff options
author | Gone2Daly <71726742+Gone2Daly@users.noreply.github.com> | 2023-07-22 21:05:42 +0200 |
---|---|---|
committer | Gone2Daly <71726742+Gone2Daly@users.noreply.github.com> | 2023-07-22 21:05:42 +0200 |
commit | 71b3cd829f80de4c2cd3972d8bfd5ee470a5d180 (patch) | |
tree | b4280fde6eef2ae6987648bc7bf8e00e9011bb7f /game/addons/zylann.hterrain/native/src/int_range_2d.h | |
parent | ce9022d0df74d6c33db3686622be2050d873ab0b (diff) |
init_testtest3d
Diffstat (limited to 'game/addons/zylann.hterrain/native/src/int_range_2d.h')
-rw-r--r-- | game/addons/zylann.hterrain/native/src/int_range_2d.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/game/addons/zylann.hterrain/native/src/int_range_2d.h b/game/addons/zylann.hterrain/native/src/int_range_2d.h new file mode 100644 index 0000000..8072bea --- /dev/null +++ b/game/addons/zylann.hterrain/native/src/int_range_2d.h @@ -0,0 +1,59 @@ +#ifndef INT_RANGE_2D_H +#define INT_RANGE_2D_H + +#include "math_funcs.h" +#include "vector2i.h" +#include <core/Rect2.hpp> + +struct IntRange2D { + int min_x; + int min_y; + int max_x; + int max_y; + + static inline IntRange2D from_min_max(godot::Vector2 min_pos, godot::Vector2 max_pos) { + return IntRange2D(godot::Rect2(min_pos, max_pos)); + } + + static inline IntRange2D from_pos_size(godot::Vector2 min_pos, godot::Vector2 size) { + return IntRange2D(godot::Rect2(min_pos, size)); + } + + IntRange2D(godot::Rect2 rect) { + min_x = static_cast<int>(rect.position.x); + min_y = static_cast<int>(rect.position.y); + max_x = static_cast<int>(rect.position.x + rect.size.x); + max_y = static_cast<int>(rect.position.y + rect.size.y); + } + + inline bool is_inside(Vector2i size) const { + return min_x >= size.x && + min_y >= size.y && + max_x <= size.x && + max_y <= size.y; + } + + inline void clip(Vector2i size) { + min_x = Math::clamp(min_x, 0, size.x); + min_y = Math::clamp(min_y, 0, size.y); + max_x = Math::clamp(max_x, 0, size.x); + max_y = Math::clamp(max_y, 0, size.y); + } + + inline void pad(int p) { + min_x -= p; + min_y -= p; + max_x += p; + max_y += p; + } + + inline int get_width() const { + return max_x - min_x; + } + + inline int get_height() const { + return max_y - min_y; + } +}; + +#endif // INT_RANGE_2D_H |