mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-07-01 00:57:56 -05:00
feat: add templated iw4 material loading
This commit is contained in:
@ -1,9 +1,22 @@
|
||||
#include "AssetDumperMaterial.h"
|
||||
|
||||
#include "DecompilingMaterialDumperIW4.h"
|
||||
#include "Game/IW4/Material/JsonMaterialWriterIW4.h"
|
||||
#include "Game/IW4/Material/MaterialConstantZoneState.h"
|
||||
#include "Material/MaterialCommon.h"
|
||||
|
||||
// #define EXPERIMENTAL_DECOMPILE_MATERIAL 1
|
||||
|
||||
using namespace IW4;
|
||||
|
||||
void AssetDumperMaterial::DumpPool(AssetDumpingContext& context, AssetPool<Material>* pool)
|
||||
{
|
||||
auto* materialConstantState = context.GetZoneAssetDumperState<MaterialConstantZoneState>();
|
||||
materialConstantState->ExtractNamesFromZone();
|
||||
|
||||
AbstractAssetDumper::DumpPool(context, pool);
|
||||
}
|
||||
|
||||
bool AssetDumperMaterial::ShouldDump(XAssetInfo<Material>* asset)
|
||||
{
|
||||
return true;
|
||||
@ -11,10 +24,17 @@ bool AssetDumperMaterial::ShouldDump(XAssetInfo<Material>* asset)
|
||||
|
||||
void AssetDumperMaterial::DumpAsset(AssetDumpingContext& context, XAssetInfo<Material>* asset)
|
||||
{
|
||||
const auto* material = asset->Asset();
|
||||
|
||||
#ifdef EXPERIMENTAL_DECOMPILE_MATERIAL
|
||||
if (context.m_gdt)
|
||||
{
|
||||
DecompileMaterialToGdt(*context.m_gdt, *material, context);
|
||||
DecompileMaterialToGdt(*context.m_gdt, *asset->Asset(), context);
|
||||
}
|
||||
#else
|
||||
const auto assetFile = context.OpenAssetFile(material::GetFileNameForAssetName(asset->m_name));
|
||||
|
||||
if (!assetFile)
|
||||
return;
|
||||
|
||||
DumpMaterialAsJson(*assetFile, *asset->Asset(), context);
|
||||
#endif
|
||||
}
|
||||
|
Reference in New Issue
Block a user