From 66e436d0f2cf3c33105d8a5bce43bf64d5e72255 Mon Sep 17 00:00:00 2001 From: Mel Date: Thu, 25 Jan 2024 11:25:29 +0100 Subject: Mostly functioning world collisions --- src/World/BlockType.hpp | 12 +++++++++++- src/World/ChunkIndex.hpp | 8 ++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'src/World') diff --git a/src/World/BlockType.hpp b/src/World/BlockType.hpp index 2a9a652..cfac43b 100644 --- a/src/World/BlockType.hpp +++ b/src/World/BlockType.hpp @@ -26,6 +26,16 @@ public: operator Value() const { return m_block; } + Bool is_solid() const { + switch (m_block) { + case Air: + case Water: + return false; + default: + return true; + } + } + Bool is_translucent() const { return opacity() != 1.0; } Real opacity() const { @@ -58,4 +68,4 @@ private: Value m_block; }; -} \ No newline at end of file +} diff --git a/src/World/ChunkIndex.hpp b/src/World/ChunkIndex.hpp index bc61f3d..da23e3d 100644 --- a/src/World/ChunkIndex.hpp +++ b/src/World/ChunkIndex.hpp @@ -31,6 +31,14 @@ struct ChunkIndex { return {chunk_x, chunk_y}; } + static ChunkIndex from_position(Position::World pos) { + return from_position(pos.round_to_block()); + } + + Bool operator==(const ChunkIndex& other) const { + return x == other.x && y == other.y; + } + I32 x, y; }; -- cgit 1.4.1