Fix orientation of textures on block models

master
Nicole Collings 2020-02-03 12:08:25 -08:00
parent 3bbae8a371
commit b7641e466c
12 changed files with 180 additions and 200 deletions

View File

@ -6,8 +6,8 @@
#include <glm/glm.hpp>
#include "ServerWorld.h"
const static int MB_GEN_H = 2;
const static int MB_GEN_V = 2;
const static int MB_GEN_H = 3;
const static int MB_GEN_V = 3;
ServerWorld::ServerWorld(unsigned int seed, ServerDefs& defs, ServerClients& clients) :
clientList(clients),
@ -33,8 +33,7 @@ ServerWorld::ServerWorld(unsigned int seed, ServerDefs& defs, ServerClients& cli
}
void ServerWorld::init() {
delete genStream;
genStream = new WorldGenStream(seed, defs);
genStream = std::make_unique<WorldGenStream>(seed, defs);
}
void ServerWorld::update(double delta) {
@ -165,26 +164,6 @@ void ServerWorld::sendMapBlock(const glm::ivec3& pos, ServerClient &peer) {
}
}
//void ServerWorld::sendMapBlock(const glm::vec3& pos, ServerClient &peer) {
// unsigned long long mapBlockIntegrity = dimension.getMapBlockIntegrity(pos);
// if (peer.getPlayer().getMapBlockIntegrity(pos) < mapBlockIntegrity) {
// Packet r(PacketType::MAPBLOCK);
//
// auto mapBlock = dimension.getMapBlock(pos);
// assert(mapBlock != nullptr);
//
// for (unsigned short i = 0; i < 64; i++) {
// auto chunk = (*mapBlock)[i];
// auto serialized = chunk->serialize();
//
// OLDSerializer::encodeIntVec3(r.data, chunk->pos);
// OLDSerializer::encodeString(r.data, serialized);
// }
//
// r.sendTo(peer.getPeer(), PacketChannel::CHUNK);
// }
//}
unsigned int ServerWorld::getBlock(glm::ivec3 pos) {
return dimension.getBlock(pos);
}
@ -247,8 +226,4 @@ bool ServerWorld::isInBounds(glm::ivec3 cPos, std::pair<glm::ivec3, glm::ivec3>
return (cPos.x >= bounds.first.x && cPos.x <= bounds.second.x
&& cPos.y >= bounds.first.y && cPos.y <= bounds.second.y
&& cPos.z >= bounds.first.z && cPos.z <= bounds.second.z);
}
ServerWorld::~ServerWorld() {
delete genStream;
}
}

View File

@ -26,8 +26,6 @@ public:
unsigned int getBlock(glm::ivec3 pos) override;
void setBlock(glm::ivec3 pos, unsigned int block) override;
~ServerWorld();
ServerDimension dimension {};
private:
void changedChunks(ServerClient& client);
@ -37,9 +35,9 @@ private:
void sendChunk(const std::shared_ptr<BlockChunk>& chunk, ServerClient& client);
void sendMapBlock(const glm::ivec3& pos, ServerClient& client);
bool isInBounds(glm::ivec3 pos, std::pair<glm::ivec3, glm::ivec3>& bounds);
static bool isInBounds(glm::ivec3 pos, std::pair<glm::ivec3, glm::ivec3>& bounds);
WorldGenStream* genStream = nullptr;
std::unique_ptr<WorldGenStream> genStream = nullptr;
std::unordered_set<glm::vec3, Vec::vec3> generateQueueMap;
std::vector<glm::vec3> generateQueueList;

View File

@ -5,5 +5,6 @@ zepha.set_gui([[
text[name]
position: 4px 4px
content: "Minimal Subgame Base"
end
end
]])

View File

@ -5,5 +5,6 @@ zepha.set_gui([[
text[name]
position: 4px 4px
content: "Parentheses"
end
end
]])

View File

@ -33,6 +33,7 @@ zepha.set_gui([[
end
]], {
buttonPlay = {
-- TODO: Change left/right notation to primary/secondary.
left = function()
zepha.start_game_local()
end

View File

@ -18,10 +18,10 @@ zepha.register_blockmodel("base:block", {
face = "right",
tex = 4,
points = {
1, 1, 1, 1, 0,
1, 0, 1, 1, 1,
1, 0, 0, 0, 1,
1, 1, 0, 0, 0
1, 1, 1, 0, 0,
1, 0, 1, 0, 1,
1, 0, 0, 1, 1,
1, 1, 0, 1, 0
}
}, {
face = "top",
@ -54,10 +54,10 @@ zepha.register_blockmodel("base:block", {
face = "back",
tex = 6,
points = {
0, 0, 0, 0, 1,
0, 1, 0, 0, 0,
1, 1, 0, 1, 0,
1, 0, 0, 1, 1
0, 0, 0, 1, 1,
0, 1, 0, 1, 0,
1, 1, 0, 0, 0,
1, 0, 0, 0, 1
}
}
}

View File

@ -21,10 +21,10 @@ zepha.register_blockmodel("base:block_foliage", {
face = "right",
tex = 3,
points = {
1, 1, 1, 1, 0,
1, 0, 1, 1, 1,
1, 0, 0, 0, 1,
1, 1, 0, 0, 0
1, 1, 1, 0, 0,
1, 0, 1, 0, 1,
1, 0, 0, 1, 1,
1, 1, 0, 1, 0
}
}, {
face = "top",
@ -57,10 +57,10 @@ zepha.register_blockmodel("base:block_foliage", {
face = "back",
tex = 3,
points = {
0, 0, 0, 0, 1,
0, 1, 0, 0, 0,
1, 1, 0, 1, 0,
1, 0, 0, 1, 1
0, 0, 0, 1, 1,
0, 1, 0, 1, 0,
1, 1, 0, 0, 0,
1, 0, 0, 0, 1
}
}, {
-- Hovered faces for biome tinting begin here
@ -76,10 +76,10 @@ zepha.register_blockmodel("base:block_foliage", {
face = "right",
tex = 4,
points = {
1.003, 1, 1, 1, 0,
1.003, 0, 1, 1, 1,
1.003, 0, 0, 0, 1,
1.003, 1, 0, 0, 0
1.003, 1, 1, 0, 0,
1.003, 0, 1, 0, 1,
1.003, 0, 0, 1, 1,
1.003, 1, 0, 1, 0
}
}, {
face = "front",
@ -94,10 +94,10 @@ zepha.register_blockmodel("base:block_foliage", {
face = "back",
tex = 4,
points = {
0, 0, -0.003, 0, 1,
0, 1, -0.003, 0, 0,
1, 1, -0.003, 1, 0,
1, 0, -0.003, 1, 1
0, 0, -0.003, 1, 1,
0, 1, -0.003, 1, 0,
1, 1, -0.003, 0, 0,
1, 0, -0.003, 0, 1
}
}, {
--Floats begin here
@ -117,10 +117,10 @@ zepha.register_blockmodel("base:block_foliage", {
face = "back",
tex = 5,
points = {
1.005, 0.2, -0.2, 1, 1,
0.005, 0.2, -0.2, 0, 1,
0, 1, 0, 0, 0,
1, 1, 0, 1, 0
1.005, 0.2, -0.2, 0, 1,
0.005, 0.2, -0.2, 1, 1,
0, 1, 0, 1, 0,
1, 1, 0, 0, 0
},
shader_mod = {
type = "sway_attached",
@ -130,10 +130,10 @@ zepha.register_blockmodel("base:block_foliage", {
face = "right",
tex = 5,
points = {
1.2, 0.2, 1.005, 1, 1,
1.2, 0.2, 0.005, 0, 1,
1, 1, 0, 0, 0,
1, 1, 1, 1, 0
1.2, 0.2, 1.005, 0, 1,
1.2, 0.2, 0.005, 1, 1,
1, 1, 0, 1, 0,
1, 1, 1, 0, 0
},
shader_mod = {
type = "sway_attached",

View File

@ -18,10 +18,10 @@ zepha.register_blockmodel("base:block_slab", {
face = "right",
tex = 4,
points = {
1, 0.5, 1, 1, 0,
1, 0, 1, 1, 0.5,
1, 0, 0, 0, 0.5,
1, 0.5, 0, 0, 0
1, 0.5, 1, 0, 0,
1, 0, 1, 0, 0.5,
1, 0, 0, 1, 0.5,
1, 0.5, 1, 0, 0
}
}, {
face = "nocull",
@ -54,10 +54,10 @@ zepha.register_blockmodel("base:block_slab", {
face = "back",
tex = 6,
points = {
0, 0, 0, 0, 0.5,
0, 0.5, 0, 0, 0,
1, 0.5, 0, 1, 0,
1, 0, 0, 1, 0.5
0, 0, 0, 1, 0.5,
0, 0.5, 0, 1, 0,
1, 0.5, 0, 0, 0,
1, 0, 0, 0, 0.5
}
}
}

View File

@ -18,10 +18,10 @@ zepha.register_blockmodel("base:block_slab_foliage", {
face = "right",
tex = 4,
points = {
1, 0.5, 1, 1, 0,
1, 0, 1, 1, 0.5,
1, 0, 0, 0, 0.5,
1, 0.5, 0, 0, 0
1, 0.5, 1, 0, 0,
1, 0, 1, 0, 0.5,
1, 0, 0, 1, 0.5,
1, 0.5, 0, 1, 0
}
}, {
face = "nocull",
@ -54,10 +54,10 @@ zepha.register_blockmodel("base:block_slab_foliage", {
face = "back",
tex = 6,
points = {
0, 0, 0, 0, 0.5,
0, 0.5, 0, 0, 0,
1, 0.5, 0, 1, 0,
1, 0, 0, 1, 0.5
0, 0, 0, 1, 0.5,
0, 0.5, 0, 1, 0,
1, 0.5, 0, 0, 0,
1, 0, 0, 0, 0.5
}
}, {
--Floats begin here
@ -73,19 +73,19 @@ zepha.register_blockmodel("base:block_slab_foliage", {
face = "back",
tex = 7,
points = {
1, -0.3, -0.2, 1, 1,
0, -0.3, -0.2, 0, 1,
0, 0.5, 0, 0, 0,
1, 0.5, 0, 1, 0
1, -0.3, -0.2, 0, 1,
0, -0.3, -0.2, 1, 1,
0, 0.5, 0, 1, 0,
1, 0.5, 0, 0, 0
}
}, {
face = "right",
tex = 7,
points = {
1.2, -0.3, 1, 1, 1,
1.2, -0.3, 0, 0, 1,
1, 0.5, 0, 0, 0,
1, 0.5, 1, 1, 0
1.2, -0.3, 1, 0, 1,
1.2, -0.3, 0, 1, 1,
1, 0.5, 0, 1, 0,
1, 0.5, 1, 0, 0
}
}, {
face = "left",

View File

@ -25,10 +25,10 @@ zepha.register_blockmodel("base:leaf_like", {
face = "right",
tex = 1,
points = {
1, 1, 1, 1, 0,
1, 0, 1, 1, 1,
1, 0, 0, 0, 1,
1, 1, 0, 0, 0
1, 1, 1, 0, 0,
1, 0, 1, 0, 1,
1, 0, 0, 1, 1,
1, 1, 0, 1, 0
},
shader_mod = {
type = "sway_full_block",
@ -77,10 +77,10 @@ zepha.register_blockmodel("base:leaf_like", {
face = "back",
tex = 1,
points = {
0, 0, 0, 0, 1,
0, 1, 0, 0, 0,
1, 1, 0, 1, 0,
1, 0, 0, 1, 1
0, 0, 0, 1, 1,
0, 1, 0, 1, 0,
1, 1, 0, 0, 0,
1, 0, 0, 0, 1
},
shader_mod = {
type = "sway_full_block",

View File

@ -25,7 +25,11 @@ TEST_CASE("Serialization", "[net]") {
glm::vec3 v3;
std::string str;
d.read<int>(i).read<unsigned short>(s).read<float>(f).read<glm::vec3>(v3).read<std::string>(str);
d.read<int>(i)
.read<unsigned short>(s)
.read<float>(f)
.read<glm::vec3>(v3)
.read<std::string>(str);
REQUIRE(i == 32);
REQUIRE(s == 16);
@ -181,7 +185,7 @@ TEST_CASE("Serialization", "[net]") {
REQUIRE(vec[2] == 5.7f);
}
SECTION("Vector<String") {
SECTION("Vector<String>") {
s.append<std::vector<std::string>>({
"hi",
"hello",

View File

@ -13,39 +13,39 @@ TEST_CASE("Space", "[math]") {
SECTION("Region") {
SECTION("World") {
SECTION("From Map Block") {
REQUIRE(Region::world::fromMapBlock({0, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(Region::world::fromMapBlock({1, 1, 1}) == vec3 {0, 0, 0});
REQUIRE(Region::world::fromMapBlock({3, 1, 1}) == vec3 {0, 0, 0});
REQUIRE(Region::world::fromMapBlock({1, 5, 1}) == vec3 {0, 1, 0});
REQUIRE(Region::world::fromMapBlock({1, 1, 10}) == vec3 {0, 0, 2});
REQUIRE(Region::world::fromMapBlock({0, -1, 0}) == vec3 {0, -1, 0});
REQUIRE(Region::world::fromMapBlock({-3, -5, -4}) == vec3 {-1, -2, -1});
REQUIRE(Region::world::fromMapBlock({-8, -9, -15}) == vec3 {-2, -3, -4});
REQUIRE(Region::world::fromMapBlock({13, 60, -4}) == vec3 {3, 15, -1});
REQUIRE(Region::world::fromMapBlock({0, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(Region::world::fromMapBlock({1, 1, 1}) == ivec3 {0, 0, 0});
REQUIRE(Region::world::fromMapBlock({3, 1, 1}) == ivec3 {0, 0, 0});
REQUIRE(Region::world::fromMapBlock({1, 5, 1}) == ivec3 {0, 1, 0});
REQUIRE(Region::world::fromMapBlock({1, 1, 10}) == ivec3 {0, 0, 2});
REQUIRE(Region::world::fromMapBlock({0, -1, 0}) == ivec3 {0, -1, 0});
REQUIRE(Region::world::fromMapBlock({-3, -5, -4}) == ivec3 {-1, -2, -1});
REQUIRE(Region::world::fromMapBlock({-8, -9, -15}) == ivec3 {-2, -3, -4});
REQUIRE(Region::world::fromMapBlock({13, 60, -4}) == ivec3 {3, 15, -1});
}
SECTION("From Chunk") {
REQUIRE(Region::world::fromChunk(vec3 {0, 0, 0} * static_cast<float>(MAPBLOCK_SIZE)) == vec3 {0, 0, 0});
REQUIRE(Region::world::fromChunk(vec3 {1, 1, 1} * static_cast<float>(MAPBLOCK_SIZE)) == vec3 {0, 0, 0});
REQUIRE(Region::world::fromChunk(vec3 {3, 1, 1} * static_cast<float>(MAPBLOCK_SIZE)) == vec3 {0, 0, 0});
REQUIRE(Region::world::fromChunk(vec3 {1, 5, 1} * static_cast<float>(MAPBLOCK_SIZE)) == vec3 {0, 1, 0});
REQUIRE(Region::world::fromChunk(vec3 {1, 1, 10} * static_cast<float>(MAPBLOCK_SIZE)) == vec3 {0, 0, 2});
REQUIRE(Region::world::fromChunk(vec3 {0, -1, 0} * static_cast<float>(MAPBLOCK_SIZE)) == vec3 {0, -1, 0});
REQUIRE(Region::world::fromChunk(vec3 {-3, -5, -4} * static_cast<float>(MAPBLOCK_SIZE)) == vec3 {-1, -2, -1});
REQUIRE(Region::world::fromChunk(vec3 {-8, -9, -15} * static_cast<float>(MAPBLOCK_SIZE)) == vec3 {-2, -3, -4});
REQUIRE(Region::world::fromChunk(vec3 {13, 60, -4} * static_cast<float>(MAPBLOCK_SIZE)) == vec3 {3, 15, -1});
REQUIRE(Region::world::fromChunk(vec3 {0, 0, 0} * static_cast<float>(MAPBLOCK_SIZE)) == ivec3 {0, 0, 0});
REQUIRE(Region::world::fromChunk(vec3 {1, 1, 1} * static_cast<float>(MAPBLOCK_SIZE)) == ivec3 {0, 0, 0});
REQUIRE(Region::world::fromChunk(vec3 {3, 1, 1} * static_cast<float>(MAPBLOCK_SIZE)) == ivec3 {0, 0, 0});
REQUIRE(Region::world::fromChunk(vec3 {1, 5, 1} * static_cast<float>(MAPBLOCK_SIZE)) == ivec3 {0, 1, 0});
REQUIRE(Region::world::fromChunk(vec3 {1, 1, 10} * static_cast<float>(MAPBLOCK_SIZE)) == ivec3 {0, 0, 2});
REQUIRE(Region::world::fromChunk(vec3 {0, -1, 0} * static_cast<float>(MAPBLOCK_SIZE)) == ivec3 {0, -1, 0});
REQUIRE(Region::world::fromChunk(vec3 {-3, -5, -4} * static_cast<float>(MAPBLOCK_SIZE)) == ivec3 {-1, -2, -1});
REQUIRE(Region::world::fromChunk(vec3 {-8, -9, -15} * static_cast<float>(MAPBLOCK_SIZE)) == ivec3 {-2, -3, -4});
REQUIRE(Region::world::fromChunk(vec3 {13, 60, -4} * static_cast<float>(MAPBLOCK_SIZE)) == ivec3 {3, 15, -1});
}
SECTION("From Block") {
REQUIRE(Region::world::fromChunk(vec3 {0, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(Region::world::fromChunk(vec3 {4, 4, 4}) == vec3 {0, 0, 0});
REQUIRE(Region::world::fromChunk(vec3 {12, 4, 4}) == vec3 {0, 0, 0});
REQUIRE(Region::world::fromChunk(vec3 {4, 20, 4}) == vec3 {0, 1, 0});
REQUIRE(Region::world::fromChunk(vec3 {4, 4, 40}) == vec3 {0, 0, 2});
REQUIRE(Region::world::fromChunk(vec3 {0, -4, 0}) == vec3 {0, -1, 0});
REQUIRE(Region::world::fromChunk(vec3 {-12, -20, -16}) == vec3 {-1, -2, -1});
REQUIRE(Region::world::fromChunk(vec3 {-32, -36, -60}) == vec3 {-2, -3, -4});
REQUIRE(Region::world::fromChunk(vec3 {52, 240, -16}) == vec3 {3, 15, -1});
REQUIRE(Region::world::fromChunk(vec3 {0, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(Region::world::fromChunk(vec3 {4, 4, 4}) == ivec3 {0, 0, 0});
REQUIRE(Region::world::fromChunk(vec3 {12, 4, 4}) == ivec3 {0, 0, 0});
REQUIRE(Region::world::fromChunk(vec3 {4, 20, 4}) == ivec3 {0, 1, 0});
REQUIRE(Region::world::fromChunk(vec3 {4, 4, 40}) == ivec3 {0, 0, 2});
REQUIRE(Region::world::fromChunk(vec3 {0, -4, 0}) == ivec3 {0, -1, 0});
REQUIRE(Region::world::fromChunk(vec3 {-12, -20, -16}) == ivec3 {-1, -2, -1});
REQUIRE(Region::world::fromChunk(vec3 {-32, -36, -60}) == ivec3 {-2, -3, -4});
REQUIRE(Region::world::fromChunk(vec3 {52, 240, -16}) == ivec3 {3, 15, -1});
}
}
}
@ -53,40 +53,40 @@ TEST_CASE("Space", "[math]") {
SECTION("MapBlock") {
SECTION("Relative") {
SECTION("To Region") {
REQUIRE(MapBlock::relative::toRegion({0, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(MapBlock::relative::toRegion({0, 5, 0}) == vec3 {0, 1, 0});
REQUIRE(MapBlock::relative::toRegion({5, 20, 0}) == vec3 {1, 0, 0});
REQUIRE(MapBlock::relative::toRegion({40, 20, 30}) == vec3 {0, 0, 2});
REQUIRE(MapBlock::relative::toRegion({0, -5, 0}) == vec3 {0, 3, 0});
REQUIRE(MapBlock::relative::toRegion({-10, -7, -3}) == vec3 {2, 1, 1});
REQUIRE(MapBlock::relative::toRegion({-16, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(MapBlock::relative::toRegion({-17, -18, -19}) == vec3 {3, 2, 1});
REQUIRE(MapBlock::relative::toRegion({0, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(MapBlock::relative::toRegion({0, 5, 0}) == ivec3 {0, 1, 0});
REQUIRE(MapBlock::relative::toRegion({5, 20, 0}) == ivec3 {1, 0, 0});
REQUIRE(MapBlock::relative::toRegion({40, 20, 30}) == ivec3 {0, 0, 2});
REQUIRE(MapBlock::relative::toRegion({0, -5, 0}) == ivec3 {0, 3, 0});
REQUIRE(MapBlock::relative::toRegion({-10, -7, -3}) == ivec3 {2, 1, 1});
REQUIRE(MapBlock::relative::toRegion({-16, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(MapBlock::relative::toRegion({-17, -18, -19}) == ivec3 {3, 2, 1});
}
}
SECTION("World") {
SECTION("From Chunk") {
REQUIRE(MapBlock::world::fromChunk({0, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(MapBlock::world::fromChunk({1, 1, 1}) == vec3 {0, 0, 0});
REQUIRE(MapBlock::world::fromChunk({3, 1, 1}) == vec3 {0, 0, 0});
REQUIRE(MapBlock::world::fromChunk({1, 5, 1}) == vec3 {0, 1, 0});
REQUIRE(MapBlock::world::fromChunk({1, 1, 10}) == vec3 {0, 0, 2});
REQUIRE(MapBlock::world::fromChunk({0, -1, 0}) == vec3 {0, -1, 0});
REQUIRE(MapBlock::world::fromChunk({-3, -5, -4}) == vec3 {-1, -2, -1});
REQUIRE(MapBlock::world::fromChunk({-8, -9, -15}) == vec3 {-2, -3, -4});
REQUIRE(MapBlock::world::fromChunk({13, 60, -4}) == vec3 {3, 15, -1});
REQUIRE(MapBlock::world::fromChunk({0, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(MapBlock::world::fromChunk({1, 1, 1}) == ivec3 {0, 0, 0});
REQUIRE(MapBlock::world::fromChunk({3, 1, 1}) == ivec3 {0, 0, 0});
REQUIRE(MapBlock::world::fromChunk({1, 5, 1}) == ivec3 {0, 1, 0});
REQUIRE(MapBlock::world::fromChunk({1, 1, 10}) == ivec3 {0, 0, 2});
REQUIRE(MapBlock::world::fromChunk({0, -1, 0}) == ivec3 {0, -1, 0});
REQUIRE(MapBlock::world::fromChunk({-3, -5, -4}) == ivec3 {-1, -2, -1});
REQUIRE(MapBlock::world::fromChunk({-8, -9, -15}) == ivec3 {-2, -3, -4});
REQUIRE(MapBlock::world::fromChunk({13, 60, -4}) == ivec3 {3, 15, -1});
}
SECTION("From Block") {
REQUIRE(MapBlock::world::fromBlock({0, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(MapBlock::world::fromBlock({16, 16, 16}) == vec3 {0, 0, 0});
REQUIRE(MapBlock::world::fromBlock({48, 16, 16}) == vec3 {0, 0, 0});
REQUIRE(MapBlock::world::fromBlock({16, 80, 16}) == vec3 {0, 1, 0});
REQUIRE(MapBlock::world::fromBlock({16, 16, 160}) == vec3 {0, 0, 2});
REQUIRE(MapBlock::world::fromBlock({0, -16, 0}) == vec3 {0, -1, 0});
REQUIRE(MapBlock::world::fromBlock({-48, -80, -64}) == vec3 {-1, -2, -1});
REQUIRE(MapBlock::world::fromBlock({-128, -144, -240}) == vec3 {-2, -3, -4});
REQUIRE(MapBlock::world::fromBlock({208, 960, -64}) == vec3 {3, 15, -1});
REQUIRE(MapBlock::world::fromBlock({0, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(MapBlock::world::fromBlock({16, 16, 16}) == ivec3 {0, 0, 0});
REQUIRE(MapBlock::world::fromBlock({48, 16, 16}) == ivec3 {0, 0, 0});
REQUIRE(MapBlock::world::fromBlock({16, 80, 16}) == ivec3 {0, 1, 0});
REQUIRE(MapBlock::world::fromBlock({16, 16, 160}) == ivec3 {0, 0, 2});
REQUIRE(MapBlock::world::fromBlock({0, -16, 0}) == ivec3 {0, -1, 0});
REQUIRE(MapBlock::world::fromBlock({-48, -80, -64}) == ivec3 {-1, -2, -1});
REQUIRE(MapBlock::world::fromBlock({-128, -144, -240}) == ivec3 {-2, -3, -4});
REQUIRE(MapBlock::world::fromBlock({208, 960, -64}) == ivec3 {3, 15, -1});
}
}
@ -114,38 +114,38 @@ TEST_CASE("Space", "[math]") {
SECTION("Chunk") {
SECTION("Relative") {
SECTION("To Map Block") {
REQUIRE(Chunk::relative::toMapBlock({0, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(Chunk::relative::toMapBlock({0, 5, 0}) == vec3 {0, 1, 0});
REQUIRE(Chunk::relative::toMapBlock({5, 20, 0}) == vec3 {1, 0, 0});
REQUIRE(Chunk::relative::toMapBlock({40, 20, 30}) == vec3 {0, 0, 2});
REQUIRE(Chunk::relative::toMapBlock({0, -5, 0}) == vec3 {0, 3, 0});
REQUIRE(Chunk::relative::toMapBlock({-10, -7, -3}) == vec3 {2, 1, 1});
REQUIRE(Chunk::relative::toMapBlock({-16, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(Chunk::relative::toMapBlock({-17, -18, -19}) == vec3 {3, 2, 1});
REQUIRE(Chunk::relative::toMapBlock({0, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(Chunk::relative::toMapBlock({0, 5, 0}) == ivec3 {0, 1, 0});
REQUIRE(Chunk::relative::toMapBlock({5, 20, 0}) == ivec3 {1, 0, 0});
REQUIRE(Chunk::relative::toMapBlock({40, 20, 30}) == ivec3 {0, 0, 2});
REQUIRE(Chunk::relative::toMapBlock({0, -5, 0}) == ivec3 {0, 3, 0});
REQUIRE(Chunk::relative::toMapBlock({-10, -7, -3}) == ivec3 {2, 1, 1});
REQUIRE(Chunk::relative::toMapBlock({-16, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(Chunk::relative::toMapBlock({-17, -18, -19}) == ivec3 {3, 2, 1});
}
SECTION("To Region") {
REQUIRE(Chunk::relative::toRegion({0, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(Chunk::relative::toRegion({0, 5, 0}) == vec3 {0, 5, 0});
REQUIRE(Chunk::relative::toRegion({5, 20, 0}) == vec3 {5, 4, 0});
REQUIRE(Chunk::relative::toRegion({40, 20, 30}) == vec3 {8, 4, 14});
REQUIRE(Chunk::relative::toRegion({0, -5, 0}) == vec3 {0, 11, 0});
REQUIRE(Chunk::relative::toRegion({-10, -7, -3}) == vec3 {6, 9, 13});
REQUIRE(Chunk::relative::toRegion({-16, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(Chunk::relative::toRegion({-17, -18, -19}) == vec3 {15, 14, 13});
REQUIRE(Chunk::relative::toRegion({0, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(Chunk::relative::toRegion({0, 5, 0}) == ivec3 {0, 5, 0});
REQUIRE(Chunk::relative::toRegion({5, 20, 0}) == ivec3 {5, 4, 0});
REQUIRE(Chunk::relative::toRegion({40, 20, 30}) == ivec3 {8, 4, 14});
REQUIRE(Chunk::relative::toRegion({0, -5, 0}) == ivec3 {0, 11, 0});
REQUIRE(Chunk::relative::toRegion({-10, -7, -3}) == ivec3 {6, 9, 13});
REQUIRE(Chunk::relative::toRegion({-16, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(Chunk::relative::toRegion({-17, -18, -19}) == ivec3 {15, 14, 13});
}
}
SECTION("World") {
SECTION("From Block") {
REQUIRE(Chunk::world::fromBlock({0, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(Chunk::world::fromBlock({5, 17, 8}) == vec3 {0, 1, 0});
REQUIRE(Chunk::world::fromBlock({23, 0, 3}) == vec3 {1, 0, 0});
REQUIRE(Chunk::world::fromBlock({0, 0, 32}) == vec3 {0, 0, 2});
REQUIRE(Chunk::world::fromBlock({-4, 40, 0}) == vec3 {-1, 2, 0});
REQUIRE(Chunk::world::fromBlock({-17, -16, -15}) == vec3 {-2, -1, -1});
REQUIRE(Chunk::world::fromBlock({-35, -30, -64}) == vec3 {-3, -2, -4});
REQUIRE(Chunk::world::fromBlock({36, 64, -12}) == vec3 {2, 4, -1});
REQUIRE(Chunk::world::fromBlock({0, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(Chunk::world::fromBlock({5, 17, 8}) == ivec3 {0, 1, 0});
REQUIRE(Chunk::world::fromBlock({23, 0, 3}) == ivec3 {1, 0, 0});
REQUIRE(Chunk::world::fromBlock({0, 0, 32}) == ivec3 {0, 0, 2});
REQUIRE(Chunk::world::fromBlock({-4, 40, 0}) == ivec3 {-1, 2, 0});
REQUIRE(Chunk::world::fromBlock({-17, -16, -15}) == ivec3 {-2, -1, -1});
REQUIRE(Chunk::world::fromBlock({-35, -30, -64}) == ivec3 {-3, -2, -4});
REQUIRE(Chunk::world::fromBlock({36, 64, -12}) == ivec3 {2, 4, -1});
}
}
@ -173,36 +173,36 @@ TEST_CASE("Space", "[math]") {
SECTION("Block") {
SECTION("Relative") {
SECTION("To Chunk") {
REQUIRE(Block::relative::toChunk({0, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(Block::relative::toChunk({0, 5, 0}) == vec3 {0, 5, 0});
REQUIRE(Block::relative::toChunk({5, 20, 0}) == vec3 {5, 4, 0});
REQUIRE(Block::relative::toChunk({40, 20, 30}) == vec3 {8, 4, 14});
REQUIRE(Block::relative::toChunk({0, -5, 0}) == vec3 {0, 11, 0});
REQUIRE(Block::relative::toChunk({-10, -7, -3}) == vec3 {6, 9, 13});
REQUIRE(Block::relative::toChunk({-16, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(Block::relative::toChunk({-17, -18, -19}) == vec3 {15, 14, 13});
REQUIRE(Block::relative::toChunk({0, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(Block::relative::toChunk({0, 5, 0}) == ivec3 {0, 5, 0});
REQUIRE(Block::relative::toChunk({5, 20, 0}) == ivec3 {5, 4, 0});
REQUIRE(Block::relative::toChunk({40, 20, 30}) == ivec3 {8, 4, 14});
REQUIRE(Block::relative::toChunk({0, -5, 0}) == ivec3 {0, 11, 0});
REQUIRE(Block::relative::toChunk({-10, -7, -3}) == ivec3 {6, 9, 13});
REQUIRE(Block::relative::toChunk({-16, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(Block::relative::toChunk({-17, -18, -19}) == ivec3 {15, 14, 13});
}
SECTION("To Map Block") {
REQUIRE(Block::relative::toMapBlock({0, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(Block::relative::toMapBlock({0, 5, 0}) == vec3 {0, 5, 0});
REQUIRE(Block::relative::toMapBlock({5, 20, 0}) == vec3 {5, 20, 0});
REQUIRE(Block::relative::toMapBlock({40, 20, 30}) == vec3 {40, 20, 30});
REQUIRE(Block::relative::toMapBlock({0, -5, 0}) == vec3 {0, 59, 0});
REQUIRE(Block::relative::toMapBlock({-10, -7, -3}) == vec3 {54, 57, 61});
REQUIRE(Block::relative::toMapBlock({-16, 0, 0}) == vec3 {48, 0, 0});
REQUIRE(Block::relative::toMapBlock({-17, -18, -19}) == vec3 {47, 46, 45});
REQUIRE(Block::relative::toMapBlock({0, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(Block::relative::toMapBlock({0, 5, 0}) == ivec3 {0, 5, 0});
REQUIRE(Block::relative::toMapBlock({5, 20, 0}) == ivec3 {5, 20, 0});
REQUIRE(Block::relative::toMapBlock({40, 20, 30}) == ivec3 {40, 20, 30});
REQUIRE(Block::relative::toMapBlock({0, -5, 0}) == ivec3 {0, 59, 0});
REQUIRE(Block::relative::toMapBlock({-10, -7, -3}) == ivec3 {54, 57, 61});
REQUIRE(Block::relative::toMapBlock({-16, 0, 0}) == ivec3 {48, 0, 0});
REQUIRE(Block::relative::toMapBlock({-17, -18, -19}) == ivec3 {47, 46, 45});
}
SECTION("To Region") {
REQUIRE(Block::relative::toRegion({0, 0, 0}) == vec3 {0, 0, 0});
REQUIRE(Block::relative::toRegion({0, 5, 0}) == vec3 {0, 5, 0});
REQUIRE(Block::relative::toRegion({5, 256, 0}) == vec3 {5, 0, 0});
REQUIRE(Block::relative::toRegion({40, 20, 30}) == vec3 {40, 20, 30});
REQUIRE(Block::relative::toRegion({0, -5, 0}) == vec3 {0, 251, 0});
REQUIRE(Block::relative::toRegion({-10, -7, -3}) == vec3 {246, 249, 253});
REQUIRE(Block::relative::toRegion({-16, 0, 0}) == vec3 {240, 0, 0});
REQUIRE(Block::relative::toRegion({-17, -18, -19}) == vec3 {239, 238, 237});
REQUIRE(Block::relative::toRegion({0, 0, 0}) == ivec3 {0, 0, 0});
REQUIRE(Block::relative::toRegion({0, 5, 0}) == ivec3 {0, 5, 0});
REQUIRE(Block::relative::toRegion({5, 256, 0}) == ivec3 {5, 0, 0});
REQUIRE(Block::relative::toRegion({40, 20, 30}) == ivec3 {40, 20, 30});
REQUIRE(Block::relative::toRegion({0, -5, 0}) == ivec3 {0, 251, 0});
REQUIRE(Block::relative::toRegion({-10, -7, -3}) == ivec3 {246, 249, 253});
REQUIRE(Block::relative::toRegion({-16, 0, 0}) == ivec3 {240, 0, 0});
REQUIRE(Block::relative::toRegion({-17, -18, -19}) == ivec3 {239, 238, 237});
}
}