From d9f75c7c408e1913f793d9edf52f361e70e2d4d7 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 19 Nov 2025 17:40:17 +0300 Subject: [PATCH] add test optimization --- src/voxels/voxel.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/voxels/voxel.hpp b/src/voxels/voxel.hpp index dcff106f..a54f5015 100644 --- a/src/voxels/voxel.hpp +++ b/src/voxels/voxel.hpp @@ -16,22 +16,34 @@ struct blockstate { uint8_t userbits : 8; // bits for use in block script }; static_assert(sizeof(blockstate) == 2); +static_assert(alignof(blockstate) == 1); +static_assert(sizeof(blockstate) == sizeof(blockstate_t)); /// @brief blockstate cast to an integer (optimized out in most cases) +#ifdef _WIN32 +inline blockstate_t blockstate2int(blockstate b) { + return *reinterpret_cast(&b); +#else inline constexpr blockstate_t blockstate2int(blockstate b) { return static_cast(b.rotation) | static_cast(b.segment) << 3 | static_cast(b.reserved) << 6 | static_cast(b.userbits) << 8; +#endif } /// @brief integer cast to a blockstate (optimized out in most cases) +#ifdef _WIN32 +inline blockstate int2blockstate(blockstate_t i) { + return *reinterpret_cast(&i); +#else inline constexpr blockstate int2blockstate(blockstate_t i) { return { static_cast(i & 0b111), static_cast((i >> 3) & 0b111), static_cast((i >> 6) & 0b11), static_cast((i >> 8) & 0xFF)}; +#endif } struct voxel {