add BlockModel struct

This commit is contained in:
MihailRis
2025-04-27 18:21:56 +03:00
parent 718f5d1089
commit 20e3a961f9
12 changed files with 46 additions and 39 deletions
+13 -10
View File
@@ -86,20 +86,23 @@ template<> void ContentUnitLoader<Block>::loadUnit(
}
// block model
std::string modelTypeName = BlockModelTypeMeta.getNameString(def.model);
auto& model = def.model;
std::string modelTypeName = BlockModelTypeMeta.getNameString(model.type);
root.at("model").get(modelTypeName);
root.at("model-name").get(def.modelName);
if (BlockModelTypeMeta.getItem(modelTypeName, def.model)) {
if (def.model == BlockModelType::CUSTOM && def.customModelRaw == nullptr) {
root.at("model-name").get(def.model.name);
if (BlockModelTypeMeta.getItem(modelTypeName, model.type)) {
if (model.type == BlockModelType::CUSTOM && def.model.customRaw == nullptr) {
if (root.has("model-primitives")) {
def.customModelRaw = root["model-primitives"];
} else if (def.modelName.empty()) {
throw std::runtime_error(name + ": no 'model-primitives' or 'model-name' found");
def.model.customRaw = root["model-primitives"];
} else if (def.model.name.empty()) {
throw std::runtime_error(
name + ": no 'model-primitives' or 'model-name' found"
);
}
}
} else if (!modelTypeName.empty()) {
logger.error() << "unknown model: " << modelTypeName;
def.model = BlockModelType::NONE;
model.type = BlockModelType::NONE;
}
std::string cullingModeName = CullingModeMeta.getNameString(def.culling);
@@ -171,9 +174,9 @@ template<> void ContentUnitLoader<Block>::loadUnit(
"block " + util::quote(def.name) + ": invalid block size"
);
}
if (def.model == BlockModelType::BLOCK &&
if (model.type == BlockModelType::BLOCK &&
(def.size.x != 1 || def.size.y != 1 || def.size.z != 1)) {
def.model = BlockModelType::AABB;
model.type = BlockModelType::AABB;
def.hitboxes = {AABB(def.size)};
}
}