Initial size handling

This commit is contained in:
IlyaShurupov 2024-10-10 11:17:03 +03:00 committed by Ilya Shurupov
parent 9f9dcd5882
commit 0b73f8037b
28 changed files with 543 additions and 135 deletions

39
Math/public/Range.hpp Normal file
View file

@ -0,0 +1,39 @@
#pragma once
#include "Common.hpp"
namespace tp {
template <typename Type>
class Range {
public:
Range() = default;
Range(Type v1, Type v2) : start(v1), end(v2) {}
Type mid() const { return (start + end) / 2.f; }
Type size() const { return (end - start); }
void resizeFromCenter(Type newSize) {
const auto middle = mid();
const auto len = newSize / 2;
start = middle - len;
end = middle + len;
}
void clamp(const Range& inside, const Range& outside) {
start = tp::clamp(start, outside.start, inside.start);
end = tp::clamp(end, inside.end, outside.end);
}
void clamp(const Range& outside) {
start = tp::clamp(start, outside.start, outside.end);
end = tp::clamp(end, outside.start, outside.end);
}
public:
Type start{};
Type end{};
};
using RangeF = Range<halnf>;
}