From 4e696520b6cdaafbfd2849fd8cfad637d4ea2860 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 9 Jun 2024 16:30:01 +0300 Subject: [PATCH] refactor: PlayerController --- res/content/base/blocks/door.json | 4 +- src/content/ContentLoader.cpp | 21 +-- src/frontend/debug_panel.cpp | 32 +--- src/graphics/render/WorldRenderer.cpp | 13 +- src/logic/PlayerController.cpp | 240 +++++++++++++------------- src/logic/PlayerController.hpp | 8 +- src/logic/scripting/lua/libplayer.cpp | 4 +- src/logic/scripting/scripting.cpp | 6 +- src/logic/scripting/scripting.hpp | 2 +- src/objects/Player.hpp | 12 +- src/voxels/Block.hpp | 3 + src/voxels/Chunks.cpp | 45 ++++- src/voxels/Chunks.hpp | 3 +- 13 files changed, 207 insertions(+), 186 deletions(-) diff --git a/res/content/base/blocks/door.json b/res/content/base/blocks/door.json index db12e660..2cc23144 100644 --- a/res/content/base/blocks/door.json +++ b/res/content/base/blocks/door.json @@ -11,5 +11,7 @@ "light-passing": true, "sky-light-passing": true, "size": [1, 2, 1], - "rotation": "pipe" + "rotation": "pipe", + "model": "aabb", + "hitbox": [0.0, 0.0, 0.8, 1.0, 2.0, 0.2] } diff --git a/src/content/ContentLoader.cpp b/src/content/ContentLoader.cpp index 50f07dac..68cb44d7 100644 --- a/src/content/ContentLoader.cpp +++ b/src/content/ContentLoader.cpp @@ -137,16 +137,14 @@ void ContentLoader::loadBlock(Block& def, const std::string& name, const fs::pat def.model = BlockModel::custom; if (root->has("model-primitives")) { loadCustomBlockModel(def, root->map("model-primitives")); - } - else { - std::cerr << "ERROR occured while block " - << name << " parsed: no \"model-primitives\" found" << std::endl; + } else { + logger.error() << name << ": no 'model-primitives' found"; } } else if (model == "X") def.model = BlockModel::xsprite; else if (model == "none") def.model = BlockModel::none; else { - std::cerr << "unknown model " << model << std::endl; + logger.error() << "unknown model " << model; def.model = BlockModel::none; } @@ -156,12 +154,12 @@ void ContentLoader::loadBlock(Block& def, const std::string& name, const fs::pat std::string profile = "none"; root->str("rotation", profile); def.rotatable = profile != "none"; - if (profile == "pipe") { + if (profile == BlockRotProfile::PIPE_NAME) { def.rotations = BlockRotProfile::PIPE; - } else if (profile == "pane") { + } else if (profile == BlockRotProfile::PANE_NAME) { def.rotations = BlockRotProfile::PANE; } else if (profile != "none") { - std::cerr << "unknown rotation profile " << profile << std::endl; + logger.error() << "unknown rotation profile " << profile; def.rotatable = false; } @@ -187,7 +185,6 @@ void ContentLoader::loadBlock(Block& def, const std::string& name, const fs::pat def.hitboxes = { AABB() }; } - // block light emission [r, g, b] where r,g,b in range [0..15] if (auto emissionarr = root->list("emission")) { def.emission[0] = emissionarr->num(0); @@ -263,8 +260,8 @@ void ContentLoader::loadCustomBlockModel(Block& def, dynamic::Map* primitives) { /* Parse tetragon to points */ auto tgonobj = modeltetragons->list(i); glm::vec3 p1(tgonobj->num(0), tgonobj->num(1), tgonobj->num(2)), - xw(tgonobj->num(3), tgonobj->num(4), tgonobj->num(5)), - yh(tgonobj->num(6), tgonobj->num(7), tgonobj->num(8)); + xw(tgonobj->num(3), tgonobj->num(4), tgonobj->num(5)), + yh(tgonobj->num(6), tgonobj->num(7), tgonobj->num(8)); def.modelExtraPoints.push_back(p1); def.modelExtraPoints.push_back(p1+xw); def.modelExtraPoints.push_back(p1+xw+yh); @@ -288,7 +285,7 @@ void ContentLoader::loadItem(ItemDef& def, const std::string& name, const fs::pa } else if (iconTypeStr == "sprite") { def.iconType = item_icon_type::sprite; } else if (iconTypeStr.length()){ - std::cerr << "unknown icon type" << iconTypeStr << std::endl; + logger.error() << name << ": unknown icon type" << iconTypeStr; } root->str("icon", def.icon); root->str("placing-block", def.placingBlock); diff --git a/src/frontend/debug_panel.cpp b/src/frontend/debug_panel.cpp index 91067211..24caea8d 100644 --- a/src/frontend/debug_panel.cpp +++ b/src/frontend/debug_panel.cpp @@ -31,13 +31,6 @@ static std::shared_ptr