add 'offset', 'bits' properties & fix is_solid_at

This commit is contained in:
MihailRis
2025-07-14 00:20:49 +03:00
parent 29021d1178
commit 7e0b58d96b
3 changed files with 22 additions and 5 deletions
+7 -3
View File
@@ -161,6 +161,8 @@ struct Variant {
};
struct Variants {
uint8_t offset;
uint8_t mask;
/// First variant is copy of Block::defaults
util::stack_vector<Variant, BLOCK_MAX_VARIANTS> variants {};
};
@@ -292,10 +294,12 @@ public:
void cloneTo(Block& dst);
constexpr const Variant& getVariant(uint8_t bits) const {
if (bits == 0 || variants == nullptr)
constexpr const Variant& getVariant(uint8_t userbits) const {
if (userbits == 0 || variants == nullptr)
return defaults;
return variants->variants[bits % BLOCK_MAX_VARIANTS];
return variants->variants[
(userbits >> variants->offset) & variants->mask
];
}
constexpr const BlockModel& getModel(uint8_t bits) const {