work
parent
17955ef486
commit
c91e8b3cb7
|
@ -136,7 +136,11 @@ public:
|
|||
return sqlite3_bind_null(statement, col);
|
||||
} else if constexpr (std::is_same_v<Decay, std::string> || std::is_same_v<Decay, std::string_view>)
|
||||
{
|
||||
return sqlite3_bind_text(statement, col, type.data(), type.size(), nullptr);
|
||||
auto str_copy = new char[type.size()];
|
||||
std::memcpy(str_copy, type.data(), type.size());
|
||||
return sqlite3_bind_text(statement, col, str_copy, type.size(), [](void* ptr) {
|
||||
delete[] static_cast<char*>(ptr);
|
||||
});
|
||||
} else if constexpr (std::is_same_v<Decay, char*> || std::is_same_v<Decay, const char*>)
|
||||
{
|
||||
return sqlite3_bind_text(statement, col, type, -1, nullptr);
|
||||
|
|
|
@ -25,9 +25,10 @@ asset_loader_t::asset_loader_t(std::string folder, std::string name): db{name
|
|||
{
|
||||
if (!std::filesystem::exists(folder))
|
||||
throw std::runtime_error("Folder does not exist!");
|
||||
if (!std::filesystem::exists(folder + "minecraft/models/block/"))
|
||||
throw std::runtime_error("Required Minecraft folder does not exist!");
|
||||
|
||||
/*
|
||||
* Tables
|
||||
*/
|
||||
auto texture_table = db.builder().create_table("textures");
|
||||
texture_table.with_column<std::string>("name").primary_key();
|
||||
texture_table.with_column<blt::u32>("width").not_null();
|
||||
|
@ -35,9 +36,27 @@ asset_loader_t::asset_loader_t(std::string folder, std::string name): db{name
|
|||
texture_table.with_column<std::byte*>("data").not_null();
|
||||
texture_table.build().execute();
|
||||
|
||||
std::optional<std::filesystem::path> model_folder;
|
||||
std::optional<std::filesystem::path> texture_folder;
|
||||
|
||||
auto block_model_folder = folder + "minecraft/models/block/";
|
||||
for (const auto& entry : std::filesystem::directory_iterator(block_model_folder))
|
||||
{
|
||||
if (entry.path().extension() != ".json")
|
||||
if (!entry.is_directory())
|
||||
continue;
|
||||
if (entry.path().string().find("models") != std::string::npos)
|
||||
{
|
||||
model_folder = entry.path();
|
||||
}
|
||||
if (entry.path().string().find("textures") != std::string::npos)
|
||||
{
|
||||
texture_folder = entry.path();
|
||||
}
|
||||
}
|
||||
|
||||
if (!model_folder)
|
||||
throw std::runtime_error("Could not find model folder!");
|
||||
if (!texture_folder)
|
||||
throw std::runtime_error("Could not find texture folder!");
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue