aboutsummaryrefslogtreecommitdiff
path: root/azalea-world/src/bit_storage.rs
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2022-06-17 23:10:54 +0000
committerGitHub <noreply@github.com>2022-06-17 23:10:54 +0000
commitf414aa4d37e0c6a7adf55b772fa93714be6e9c9c (patch)
tree8cfb7d33114b9537b50477d5d6980995eec6cc5c /azalea-world/src/bit_storage.rs
parent56f98c1b243d1ba8906ac73a2f2d8eec5646183e (diff)
parent0a945e73ec43b3b0389e004e138c83f41cddc532 (diff)
downloadazalea-drasl-f414aa4d37e0c6a7adf55b772fa93714be6e9c9c.tar.xz
Merge pull request #9 from mat-1/azalea-block
azalea-block
Diffstat (limited to 'azalea-world/src/bit_storage.rs')
-rw-r--r--azalea-world/src/bit_storage.rs18
1 files changed, 12 insertions, 6 deletions
diff --git a/azalea-world/src/bit_storage.rs b/azalea-world/src/bit_storage.rs
index aba52aef..0dc81f9a 100644
--- a/azalea-world/src/bit_storage.rs
+++ b/azalea-world/src/bit_storage.rs
@@ -77,8 +77,8 @@ pub struct BitStorage {
mask: u64,
size: usize,
values_per_long: u8,
- divide_mul: i32,
- divide_add: i32,
+ divide_mul: u64,
+ divide_add: u64,
divide_shift: i32,
}
@@ -138,16 +138,16 @@ impl BitStorage {
mask,
size,
values_per_long: values_per_long as u8,
- divide_mul,
- divide_add,
+ divide_mul: divide_mul as u32 as u64,
+ divide_add: divide_add as u32 as u64,
divide_shift,
})
}
pub fn cell_index(&self, index: u64) -> usize {
// as unsigned wrap
- let first = self.divide_mul as u32 as u64;
- let second = self.divide_add as u64;
+ let first = self.divide_mul;
+ let second = self.divide_add;
(((index * first) + second) >> 32 >> self.divide_shift)
.try_into()
@@ -188,6 +188,12 @@ impl BitStorage {
let bit_index = (index - cell_index * self.values_per_long as usize) * self.bits;
*cell = *cell & !(self.mask << bit_index) | (value & self.mask) << bit_index;
}
+
+ /// The number of entries.
+ #[inline]
+ pub fn size(&self) -> usize {
+ self.size
+ }
}
#[cfg(test)]