Skip to content

Commit 7fd54f2

Browse files
committed
fix voxel uint counts
1 parent ef82398 commit 7fd54f2

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

storage.h

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -301,9 +301,17 @@ class continuous_voxel_storage : public regular_voxel_storage {
301301

302302
void calculate_count_() {
303303
count_ = 0;
304-
for (size_t i = 0; i < size(); ++i) {
305-
count_ += std::bitset<8>(data_[i]).count();
306-
}
304+
if (T::size_in_bits >= 8U) {
305+
BEGIN_LOOP(size_t(0), dimx_, 0U, dimy_, 0U, dimz_)
306+
if (Get(ijk)) {
307+
count_ += 1;
308+
}
309+
END_LOOP;
310+
} else {
311+
for (size_t i = 0; i < size(); ++i) {
312+
count_ += std::bitset<8>(data_[i]).count();
313+
}
314+
}
307315
}
308316

309317
void calculate_bounds_() {
@@ -408,8 +416,10 @@ class continuous_voxel_storage : public regular_voxel_storage {
408416
bool updated = false;
409417
if (T::size_in_bits >= 8U) {
410418
auto& is_set = data_[x + y * dimx_ + z * dimx_ * dimy_];
411-
if (is_set != v) {
419+
if (!is_set) {
412420
count_ += 1;
421+
}
422+
if (is_set != v) {
413423
is_set = v;
414424
updated = true;
415425
}

0 commit comments

Comments
 (0)