From 6cd00aacfa22fed6a54a9b812f6b069ad16feec0 Mon Sep 17 00:00:00 2001 From: untodesu Date: Sun, 29 Jun 2025 22:24:42 +0500 Subject: Move game sources into src subdirectory --- src/game/client/chunk_quad.hh | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/game/client/chunk_quad.hh (limited to 'src/game/client/chunk_quad.hh') diff --git a/src/game/client/chunk_quad.hh b/src/game/client/chunk_quad.hh new file mode 100644 index 0000000..337bb1e --- /dev/null +++ b/src/game/client/chunk_quad.hh @@ -0,0 +1,39 @@ +#ifndef CLIENT_CHUNK_QUAD_HH +#define CLIENT_CHUNK_QUAD_HH 1 +#pragma once + +#include "core/constexpr.hh" + +#include "shared/voxel_registry.hh" + +// [0] XXXXXXXXYYYYYYYYZZZZZZZZWWWWHHHH +// [1] FFFFTTTTTTTTTTTAAAAA------------ +using ChunkQuad = std::array; + +constexpr inline static ChunkQuad make_chunk_quad( + const glm::fvec3& position, const glm::fvec2& size, voxel_facing facing, std::size_t texture, std::size_t frames) +{ + ChunkQuad result = {}; + result[0] = 0x00000000; + result[1] = 0x00000000; + + // [0] XXXXXXXXYYYYYYYYZZZZZZZZ-------- + result[0] |= (0x000000FFU & static_cast(position.x * 16.0f)) << 24U; + result[0] |= (0x000000FFU & static_cast(position.y * 16.0f)) << 16U; + result[0] |= (0x000000FFU & static_cast(position.z * 16.0f)) << 8U; + + // [0] ------------------------WWWWHHHH + result[0] |= (0x0000000FU & static_cast(size.x * 16.0f - 1.0f)) << 4U; + result[0] |= (0x0000000FU & static_cast(size.y * 16.0f - 1.0f)); + + // [1] FFFF---------------------------- + result[1] |= (0x0000000FU & static_cast(facing)) << 28U; + + // [1] ----TTTTTTTTTTTAAAAA------------ + result[1] |= (0x000007FFU & static_cast(texture)) << 17U; + result[1] |= (0x0000001FU & static_cast(frames)) << 12U; + + return result; +} + +#endif /* CLIENT_CHUNK_QUAD_HH */ -- cgit