refactor: make LoadDependency and LoadIndirectAssetReference functions work with Asset template types

This commit is contained in:
Jan
2024-04-22 23:36:21 +02:00
parent 0b61fc6e81
commit eb0cec1d81
16 changed files with 106 additions and 90 deletions

View File

@ -52,7 +52,7 @@ bool AssetLoaderGfxLightDef::LoadFromRaw(
file.m_stream->read(&imageName[0], static_cast<size_t>(imageNameSize));
file.m_stream->read(reinterpret_cast<char*>(&lmapLookupStart), sizeof(int8_t));
auto* imageDependency = reinterpret_cast<XAssetInfo<GfxImage>*>(manager->LoadDependency(ASSET_TYPE_IMAGE, imageName));
auto* imageDependency = manager->LoadDependency<AssetImage>(imageName);
if (!imageDependency)
{

View File

@ -808,7 +808,7 @@ namespace IW4
void SetTechniqueSet(const std::string& techsetName)
{
auto* techset = reinterpret_cast<XAssetInfo<MaterialTechniqueSet>*>(m_manager->LoadDependency(ASSET_TYPE_TECHNIQUE_SET, techsetName));
auto* techset = m_manager->LoadDependency<AssetTechniqueSet>(techsetName);
if (techset == nullptr)
{
@ -994,7 +994,7 @@ namespace IW4
break;
}
auto* image = reinterpret_cast<XAssetInfo<GfxImage>*>(m_manager->LoadDependency(ASSET_TYPE_IMAGE, textureName));
auto* image = m_manager->LoadDependency<AssetImage>(textureName);
if (image == nullptr)
{

View File

@ -391,7 +391,7 @@ namespace IW4
ss << materialStreamSourceAbbreviation[stream.source] << materialStreamDestinationAbbreviation[stream.dest];
}
pass.m_vertex_decl_asset = reinterpret_cast<XAssetInfo<MaterialVertexDeclaration>*>(m_manager->LoadDependency(ASSET_TYPE_VERTEXDECL, ss.str()));
pass.m_vertex_decl_asset = m_manager->LoadDependency<AssetVertexDecl>(ss.str());
}
bool AcceptEndPass(std::string& errorMessage) override
@ -461,7 +461,7 @@ namespace IW4
bool AcceptVertexShader(const std::string& vertexShaderName, std::string& errorMessage) override
{
auto* vertexShaderDependency = m_manager->LoadDependency(ASSET_TYPE_VERTEXSHADER, vertexShaderName);
auto* vertexShaderDependency = m_manager->LoadDependency<AssetVertexShader>(vertexShaderName);
if (vertexShaderDependency == nullptr)
{
std::ostringstream ss;
@ -472,7 +472,7 @@ namespace IW4
assert(!m_passes.empty());
auto& pass = m_passes.at(m_passes.size() - 1);
pass.m_vertex_shader = reinterpret_cast<XAssetInfo<MaterialVertexShader>*>(vertexShaderDependency);
pass.m_vertex_shader = vertexShaderDependency;
if (pass.m_vertex_shader->Asset()->name && pass.m_vertex_shader->Asset()->name[0] == ',')
{
@ -501,7 +501,7 @@ namespace IW4
bool AcceptPixelShader(const std::string& pixelShaderName, std::string& errorMessage) override
{
auto* pixelShaderDependency = m_manager->LoadDependency(ASSET_TYPE_PIXELSHADER, pixelShaderName);
auto* pixelShaderDependency = m_manager->LoadDependency<AssetPixelShader>(pixelShaderName);
if (pixelShaderDependency == nullptr)
{
std::ostringstream ss;
@ -512,7 +512,7 @@ namespace IW4
assert(!m_passes.empty());
auto& pass = m_passes.at(m_passes.size() - 1);
pass.m_pixel_shader = reinterpret_cast<XAssetInfo<MaterialPixelShader>*>(pixelShaderDependency);
pass.m_pixel_shader = pixelShaderDependency;
if (pass.m_pixel_shader->Asset()->name && pass.m_pixel_shader->Asset()->name[0] == ',')
{

View File

@ -137,7 +137,7 @@ namespace
if (ConvertString(value, field.iOffset))
{
if (!value.empty())
m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference(ASSET_TYPE_XANIMPARTS, value));
m_indirect_asset_references.emplace(m_loading_manager->LoadIndirectAssetReference<AssetXAnim>(value));
return true;
}