fix variant indexing

This commit is contained in:
MihailRis
2025-07-17 00:10:45 +03:00
parent d321085192
commit 6dfabe9ff3
3 changed files with 21 additions and 9 deletions
+14 -2
View File
@@ -294,7 +294,13 @@ public:
void cloneTo(Block& dst);
constexpr const Variant& getVariant(uint8_t userbits) const {
constexpr uint8_t getVariantIndex(uint8_t userbits) const {
if (variants == nullptr)
return 0;
return (userbits >> variants->offset) & variants->mask;
}
constexpr const Variant& getVariantByBits(uint8_t userbits) const {
if (userbits == 0 || variants == nullptr)
return defaults;
return variants->variants[
@@ -302,8 +308,14 @@ public:
];
}
constexpr const Variant& getVariant(uint8_t index) const {
if (index == 0)
return defaults;
return variants->variants[index];
}
constexpr const BlockModel& getModel(uint8_t bits) const {
return getVariant(bits).model;
return getVariantByBits(bits).model;
}
static bool isReservedBlockField(std::string_view view);