Fix custom materials
This commit is contained in:
parent
cea4d720be
commit
f6fd11d662
@ -27,6 +27,8 @@ namespace materials
|
||||
std::unordered_map<std::string, std::string> images;
|
||||
};
|
||||
|
||||
char constant_table[0x20] = {};
|
||||
|
||||
utils::concurrency::container<material_data_t> material_data;
|
||||
|
||||
game::GfxImage* setup_image(game::GfxImage* image, const utils::image& raw_image)
|
||||
@ -57,6 +59,7 @@ namespace materials
|
||||
std::memcpy(texture_table, white->textureTable, sizeof(game::MaterialTextureDef));
|
||||
std::memcpy(image, white->textureTable->u.image, sizeof(game::GfxImage));
|
||||
|
||||
material->constantTable = &constant_table;
|
||||
material->name = utils::memory::get_allocator()->duplicate_string(name);
|
||||
image->name = material->name;
|
||||
|
||||
@ -85,6 +88,7 @@ namespace materials
|
||||
&& !utils::io::read_file(utils::string::va("h1-mod/materials/%s.png", name.data()), &data)
|
||||
&& !utils::io::read_file(utils::string::va("data/materials/%s.png", name.data()), &data))
|
||||
{
|
||||
data_.materials[name] = nullptr;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@ -124,24 +128,14 @@ namespace materials
|
||||
return result;
|
||||
}
|
||||
|
||||
bool db_material_streaming_fail_stub(game::Material* material)
|
||||
int db_material_streaming_fail_stub(game::Material* material)
|
||||
{
|
||||
const auto found = material_data.access<bool>([material](material_data_t& data_)
|
||||
if (material->constantTable == &constant_table)
|
||||
{
|
||||
if (data_.materials.find(material->name) != data_.materials.end())
|
||||
{
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
if (found)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return db_material_streaming_fail_hook.invoke<bool>(material);
|
||||
return db_material_streaming_fail_hook.invoke<int>(material);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1175,7 +1175,12 @@ namespace game
|
||||
const char* name;
|
||||
char __pad0[0x118];
|
||||
char textureCount;
|
||||
char __pad1[7];
|
||||
char constantCount;
|
||||
char stateBitsCount;
|
||||
char stateFlags;
|
||||
char cameraRegion;
|
||||
char materialType;
|
||||
char assetFlags;
|
||||
MaterialTechniqueSet* techniqueSet;
|
||||
MaterialTextureDef* textureTable;
|
||||
void* constantTable;
|
||||
|
Loading…
Reference in New Issue
Block a user