mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 16:15:43 +00:00
chore: get Iwd and Ipak creators in constructor for post processors
This commit is contained in:
parent
416823c6cd
commit
3c3161448f
@ -68,7 +68,7 @@ namespace zone_creator
|
||||
AssetCreationContext creationContext(*zone, &creatorCollection, &ignoredAssetLookup);
|
||||
|
||||
objCompiler->ConfigureCreatorCollection(
|
||||
creatorCollection, *zone, zoneDefinitionContext, *context.m_asset_search_path, lookup, context.m_out_dir, context.m_cache_dir);
|
||||
creatorCollection, *zone, zoneDefinitionContext, *context.m_asset_search_path, lookup, creationContext, context.m_out_dir, context.m_cache_dir);
|
||||
objLoader->ConfigureCreatorCollection(creatorCollection, *zone, *context.m_asset_search_path, lookup);
|
||||
|
||||
for (const auto& assetEntry : context.m_definition->m_assets)
|
||||
|
@ -17,13 +17,17 @@ namespace
|
||||
// No compilers yet
|
||||
}
|
||||
|
||||
void ConfigurePostProcessors(
|
||||
AssetCreatorCollection& collection, Zone& zone, const ZoneDefinitionContext& zoneDefinition, ISearchPath& searchPath, const fs::path& outDir)
|
||||
void ConfigurePostProcessors(AssetCreatorCollection& collection,
|
||||
Zone& zone,
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const fs::path& outDir)
|
||||
{
|
||||
auto& memory = *zone.GetMemory();
|
||||
|
||||
if (ImageIwdPostProcessor<AssetImage>::AppliesToZoneDefinition(zoneDefinition))
|
||||
collection.AddAssetPostProcessor(std::make_unique<ImageIwdPostProcessor<AssetImage>>(zoneDefinition, searchPath, outDir));
|
||||
collection.AddAssetPostProcessor(std::make_unique<ImageIwdPostProcessor<AssetImage>>(zoneDefinition, searchPath, zoneStates, outDir));
|
||||
}
|
||||
} // namespace
|
||||
|
||||
@ -32,8 +36,9 @@ void ObjCompiler::ConfigureCreatorCollection(AssetCreatorCollection& collection,
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
IGdtQueryable& gdt,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const fs::path& outDir,
|
||||
const fs::path& cacheDir) const
|
||||
{
|
||||
ConfigurePostProcessors(collection, zone, zoneDefinition, searchPath, outDir);
|
||||
ConfigurePostProcessors(collection, zone, zoneDefinition, searchPath, zoneStates, outDir);
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ namespace IW3
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
IGdtQueryable& gdt,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const std::filesystem::path& outDir,
|
||||
const std::filesystem::path& cacheDir) const override;
|
||||
};
|
||||
|
@ -17,13 +17,17 @@ namespace
|
||||
// No compilers yet
|
||||
}
|
||||
|
||||
void ConfigurePostProcessors(
|
||||
AssetCreatorCollection& collection, Zone& zone, const ZoneDefinitionContext& zoneDefinition, ISearchPath& searchPath, const fs::path& outDir)
|
||||
void ConfigurePostProcessors(AssetCreatorCollection& collection,
|
||||
Zone& zone,
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const fs::path& outDir)
|
||||
{
|
||||
auto& memory = *zone.GetMemory();
|
||||
|
||||
if (ImageIwdPostProcessor<AssetImage>::AppliesToZoneDefinition(zoneDefinition))
|
||||
collection.AddAssetPostProcessor(std::make_unique<ImageIwdPostProcessor<AssetImage>>(zoneDefinition, searchPath, outDir));
|
||||
collection.AddAssetPostProcessor(std::make_unique<ImageIwdPostProcessor<AssetImage>>(zoneDefinition, searchPath, zoneStates, outDir));
|
||||
}
|
||||
} // namespace
|
||||
|
||||
@ -32,8 +36,9 @@ void ObjCompiler::ConfigureCreatorCollection(AssetCreatorCollection& collection,
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
IGdtQueryable& gdt,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const fs::path& outDir,
|
||||
const fs::path& cacheDir) const
|
||||
{
|
||||
ConfigurePostProcessors(collection, zone, zoneDefinition, searchPath, outDir);
|
||||
ConfigurePostProcessors(collection, zone, zoneDefinition, searchPath, zoneStates, outDir);
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ namespace IW4
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
IGdtQueryable& gdt,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const std::filesystem::path& outDir,
|
||||
const std::filesystem::path& cacheDir) const override;
|
||||
};
|
||||
|
@ -17,13 +17,17 @@ namespace
|
||||
// No compilers yet
|
||||
}
|
||||
|
||||
void ConfigurePostProcessors(
|
||||
AssetCreatorCollection& collection, Zone& zone, const ZoneDefinitionContext& zoneDefinition, ISearchPath& searchPath, const fs::path& outDir)
|
||||
void ConfigurePostProcessors(AssetCreatorCollection& collection,
|
||||
Zone& zone,
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const fs::path& outDir)
|
||||
{
|
||||
auto& memory = *zone.GetMemory();
|
||||
|
||||
if (ImageIwdPostProcessor<AssetImage>::AppliesToZoneDefinition(zoneDefinition))
|
||||
collection.AddAssetPostProcessor(std::make_unique<ImageIwdPostProcessor<AssetImage>>(zoneDefinition, searchPath, outDir));
|
||||
collection.AddAssetPostProcessor(std::make_unique<ImageIwdPostProcessor<AssetImage>>(zoneDefinition, searchPath, zoneStates, outDir));
|
||||
}
|
||||
} // namespace
|
||||
|
||||
@ -32,8 +36,9 @@ void ObjCompiler::ConfigureCreatorCollection(AssetCreatorCollection& collection,
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
IGdtQueryable& gdt,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const fs::path& outDir,
|
||||
const fs::path& cacheDir) const
|
||||
{
|
||||
ConfigurePostProcessors(collection, zone, zoneDefinition, searchPath, outDir);
|
||||
ConfigurePostProcessors(collection, zone, zoneDefinition, searchPath, zoneStates, outDir);
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ namespace IW5
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
IGdtQueryable& gdt,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const std::filesystem::path& outDir,
|
||||
const std::filesystem::path& cacheDir) const override;
|
||||
};
|
||||
|
@ -17,13 +17,17 @@ namespace
|
||||
// No compilers yet
|
||||
}
|
||||
|
||||
void ConfigurePostProcessors(
|
||||
AssetCreatorCollection& collection, Zone& zone, const ZoneDefinitionContext& zoneDefinition, ISearchPath& searchPath, const fs::path& outDir)
|
||||
void ConfigurePostProcessors(AssetCreatorCollection& collection,
|
||||
Zone& zone,
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const fs::path& outDir)
|
||||
{
|
||||
auto& memory = *zone.GetMemory();
|
||||
|
||||
if (ImageIwdPostProcessor<AssetImage>::AppliesToZoneDefinition(zoneDefinition))
|
||||
collection.AddAssetPostProcessor(std::make_unique<ImageIwdPostProcessor<AssetImage>>(zoneDefinition, searchPath, outDir));
|
||||
collection.AddAssetPostProcessor(std::make_unique<ImageIwdPostProcessor<AssetImage>>(zoneDefinition, searchPath, zoneStates, outDir));
|
||||
}
|
||||
} // namespace
|
||||
|
||||
@ -32,8 +36,9 @@ void ObjCompiler::ConfigureCreatorCollection(AssetCreatorCollection& collection,
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
IGdtQueryable& gdt,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const fs::path& outDir,
|
||||
const fs::path& cacheDir) const
|
||||
{
|
||||
ConfigurePostProcessors(collection, zone, zoneDefinition, searchPath, outDir);
|
||||
ConfigurePostProcessors(collection, zone, zoneDefinition, searchPath, zoneStates, outDir);
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ namespace T5
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
IGdtQueryable& gdt,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const std::filesystem::path& outDir,
|
||||
const std::filesystem::path& cacheDir) const override;
|
||||
};
|
||||
|
@ -19,16 +19,20 @@ namespace
|
||||
collection.AddAssetCreator(std::make_unique<KeyValuePairsCompiler>(zone, zoneDefinition.m_zone_definition));
|
||||
}
|
||||
|
||||
void ConfigurePostProcessors(
|
||||
AssetCreatorCollection& collection, Zone& zone, const ZoneDefinitionContext& zoneDefinition, ISearchPath& searchPath, const fs::path& outDir)
|
||||
void ConfigurePostProcessors(AssetCreatorCollection& collection,
|
||||
Zone& zone,
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const fs::path& outDir)
|
||||
{
|
||||
auto& memory = *zone.GetMemory();
|
||||
|
||||
if (ImageIPakPostProcessor<AssetImage>::AppliesToZoneDefinition(zoneDefinition))
|
||||
collection.AddAssetPostProcessor(std::make_unique<ImageIPakPostProcessor<AssetImage>>(zoneDefinition, searchPath, outDir));
|
||||
collection.AddAssetPostProcessor(std::make_unique<ImageIPakPostProcessor<AssetImage>>(zoneDefinition, searchPath, zoneStates, outDir));
|
||||
|
||||
if (ImageIwdPostProcessor<AssetImage>::AppliesToZoneDefinition(zoneDefinition))
|
||||
collection.AddAssetPostProcessor(std::make_unique<ImageIwdPostProcessor<AssetImage>>(zoneDefinition, searchPath, outDir));
|
||||
collection.AddAssetPostProcessor(std::make_unique<ImageIwdPostProcessor<AssetImage>>(zoneDefinition, searchPath, zoneStates, outDir));
|
||||
}
|
||||
} // namespace
|
||||
|
||||
@ -37,9 +41,10 @@ void ObjCompiler::ConfigureCreatorCollection(AssetCreatorCollection& collection,
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
IGdtQueryable& gdt,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const fs::path& outDir,
|
||||
const fs::path& cacheDir) const
|
||||
{
|
||||
ConfigureCompilers(collection, zone, zoneDefinition, searchPath);
|
||||
ConfigurePostProcessors(collection, zone, zoneDefinition, searchPath, outDir);
|
||||
ConfigurePostProcessors(collection, zone, zoneDefinition, searchPath, zoneStates, outDir);
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ namespace T6
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
IGdtQueryable& gdt,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const std::filesystem::path& outDir,
|
||||
const std::filesystem::path& cacheDir) const override;
|
||||
};
|
||||
|
@ -27,6 +27,7 @@ public:
|
||||
const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
IGdtQueryable& gdt,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const std::filesystem::path& outDir,
|
||||
const std::filesystem::path& cacheDir) const = 0;
|
||||
|
||||
|
@ -6,9 +6,11 @@
|
||||
|
||||
AbstractImageIPakPostProcessor::AbstractImageIPakPostProcessor(const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const std::filesystem::path& outDir)
|
||||
: m_zone_definition(zoneDefinition),
|
||||
m_search_path(searchPath),
|
||||
m_ipak_creator(zoneStates.GetZoneAssetCreationState<IPakCreator>()),
|
||||
m_out_dir(outDir),
|
||||
m_initialized(false),
|
||||
m_obj_container_index(0u),
|
||||
@ -39,8 +41,7 @@ void AbstractImageIPakPostProcessor::FindNextObjContainer(AssetCreationContext&
|
||||
if (objContainer.m_type != ZoneDefinitionObjContainerType::IPAK)
|
||||
continue;
|
||||
|
||||
auto& ipakCreator = context.GetZoneAssetCreationState<IPakCreator>();
|
||||
m_current_ipak = ipakCreator.GetOrAddIPak(objContainer.m_name);
|
||||
m_current_ipak = m_ipak_creator.GetOrAddIPak(objContainer.m_name);
|
||||
m_current_ipak_start_index = objContainer.m_asset_start;
|
||||
m_current_ipak_end_index = objContainer.m_asset_end;
|
||||
return;
|
||||
@ -70,5 +71,5 @@ void AbstractImageIPakPostProcessor::PostProcessAsset(XAssetInfoGeneric& assetIn
|
||||
|
||||
void AbstractImageIPakPostProcessor::FinalizeZone(AssetCreationContext& context)
|
||||
{
|
||||
context.GetZoneAssetCreationState<IPakCreator>().Finalize(m_search_path, m_out_dir);
|
||||
m_ipak_creator.Finalize(m_search_path, m_out_dir);
|
||||
}
|
||||
|
@ -9,7 +9,10 @@
|
||||
class AbstractImageIPakPostProcessor : public IAssetPostProcessor
|
||||
{
|
||||
public:
|
||||
AbstractImageIPakPostProcessor(const ZoneDefinitionContext& zoneDefinition, ISearchPath& searchPath, const std::filesystem::path& outDir);
|
||||
AbstractImageIPakPostProcessor(const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const std::filesystem::path& outDir);
|
||||
|
||||
static bool AppliesToZoneDefinition(const ZoneDefinitionContext& zoneDefinition);
|
||||
|
||||
@ -21,6 +24,7 @@ private:
|
||||
|
||||
const ZoneDefinitionContext& m_zone_definition;
|
||||
ISearchPath& m_search_path;
|
||||
IPakCreator& m_ipak_creator;
|
||||
const std::filesystem::path& m_out_dir;
|
||||
|
||||
bool m_initialized;
|
||||
@ -35,8 +39,11 @@ template<typename AssetType> class ImageIPakPostProcessor final : public Abstrac
|
||||
public:
|
||||
static_assert(std::is_base_of_v<IAssetBase, AssetType>);
|
||||
|
||||
ImageIPakPostProcessor(const ZoneDefinitionContext& zoneDefinition, ISearchPath& searchPath, const std::filesystem::path& outDir)
|
||||
: AbstractImageIPakPostProcessor(zoneDefinition, searchPath, outDir)
|
||||
ImageIPakPostProcessor(const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const std::filesystem::path& outDir)
|
||||
: AbstractImageIPakPostProcessor(zoneDefinition, searchPath, zoneStates, outDir)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -7,9 +7,11 @@
|
||||
|
||||
AbstractImageIwdPostProcessor::AbstractImageIwdPostProcessor(const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const std::filesystem::path& outDir)
|
||||
: m_zone_definition(zoneDefinition),
|
||||
m_search_path(searchPath),
|
||||
m_iwd_creator(zoneStates.GetZoneAssetCreationState<IwdCreator>()),
|
||||
m_out_dir(outDir),
|
||||
m_initialized(false),
|
||||
m_obj_container_index(0u),
|
||||
@ -40,8 +42,7 @@ void AbstractImageIwdPostProcessor::FindNextObjContainer(AssetCreationContext& c
|
||||
if (objContainer.m_type != ZoneDefinitionObjContainerType::IWD)
|
||||
continue;
|
||||
|
||||
auto& iwdCreator = context.GetZoneAssetCreationState<IwdCreator>();
|
||||
m_current_iwd = iwdCreator.GetOrAddIwd(objContainer.m_name);
|
||||
m_current_iwd = m_iwd_creator.GetOrAddIwd(objContainer.m_name);
|
||||
m_current_iwd_start_index = objContainer.m_asset_start;
|
||||
m_current_iwd_end_index = objContainer.m_asset_end;
|
||||
return;
|
||||
@ -71,5 +72,5 @@ void AbstractImageIwdPostProcessor::PostProcessAsset(XAssetInfoGeneric& assetInf
|
||||
|
||||
void AbstractImageIwdPostProcessor::FinalizeZone(AssetCreationContext& context)
|
||||
{
|
||||
context.GetZoneAssetCreationState<IwdCreator>().Finalize(m_search_path, m_out_dir);
|
||||
m_iwd_creator.Finalize(m_search_path, m_out_dir);
|
||||
}
|
||||
|
@ -9,7 +9,10 @@
|
||||
class AbstractImageIwdPostProcessor : public IAssetPostProcessor
|
||||
{
|
||||
public:
|
||||
AbstractImageIwdPostProcessor(const ZoneDefinitionContext& zoneDefinition, ISearchPath& searchPath, const std::filesystem::path& outDir);
|
||||
AbstractImageIwdPostProcessor(const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const std::filesystem::path& outDir);
|
||||
|
||||
static bool AppliesToZoneDefinition(const ZoneDefinitionContext& zoneDefinition);
|
||||
|
||||
@ -21,6 +24,7 @@ private:
|
||||
|
||||
const ZoneDefinitionContext& m_zone_definition;
|
||||
ISearchPath& m_search_path;
|
||||
IwdCreator& m_iwd_creator;
|
||||
const std::filesystem::path& m_out_dir;
|
||||
|
||||
bool m_initialized;
|
||||
@ -35,8 +39,11 @@ template<typename AssetType> class ImageIwdPostProcessor final : public Abstract
|
||||
public:
|
||||
static_assert(std::is_base_of_v<IAssetBase, AssetType>);
|
||||
|
||||
ImageIwdPostProcessor(const ZoneDefinitionContext& zoneDefinition, ISearchPath& searchPath, const std::filesystem::path& outDir)
|
||||
: AbstractImageIwdPostProcessor(zoneDefinition, searchPath, outDir)
|
||||
ImageIwdPostProcessor(const ZoneDefinitionContext& zoneDefinition,
|
||||
ISearchPath& searchPath,
|
||||
ZoneAssetCreationStateContainer& zoneStates,
|
||||
const std::filesystem::path& outDir)
|
||||
: AbstractImageIwdPostProcessor(zoneDefinition, searchPath, zoneStates, outDir)
|
||||
{
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user