mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 16:15:43 +00:00
chore: initialize ipak and iwd post processors immediately in constructor
This commit is contained in:
parent
83833cb84e
commit
67fb11506c
@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
#include "IPak/IPakCreator.h"
|
#include "IPak/IPakCreator.h"
|
||||||
|
|
||||||
#include <format>
|
#include <algorithm>
|
||||||
|
#include <ranges>
|
||||||
|
|
||||||
AbstractImageIPakPostProcessor::AbstractImageIPakPostProcessor(const ZoneDefinitionContext& zoneDefinition,
|
AbstractImageIPakPostProcessor::AbstractImageIPakPostProcessor(const ZoneDefinitionContext& zoneDefinition,
|
||||||
ISearchPath& searchPath,
|
ISearchPath& searchPath,
|
||||||
@ -12,26 +13,24 @@ AbstractImageIPakPostProcessor::AbstractImageIPakPostProcessor(const ZoneDefinit
|
|||||||
m_search_path(searchPath),
|
m_search_path(searchPath),
|
||||||
m_ipak_creator(zoneStates.GetZoneAssetCreationState<IPakCreator>()),
|
m_ipak_creator(zoneStates.GetZoneAssetCreationState<IPakCreator>()),
|
||||||
m_out_dir(outDir),
|
m_out_dir(outDir),
|
||||||
m_initialized(false),
|
|
||||||
m_obj_container_index(0u),
|
m_obj_container_index(0u),
|
||||||
m_current_ipak(nullptr),
|
m_current_ipak(nullptr),
|
||||||
m_current_ipak_start_index(0u),
|
m_current_ipak_start_index(0u),
|
||||||
m_current_ipak_end_index(0u)
|
m_current_ipak_end_index(0u)
|
||||||
{
|
{
|
||||||
|
FindNextObjContainer();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AbstractImageIPakPostProcessor::AppliesToZoneDefinition(const ZoneDefinitionContext& zoneDefinition)
|
bool AbstractImageIPakPostProcessor::AppliesToZoneDefinition(const ZoneDefinitionContext& zoneDefinition)
|
||||||
{
|
{
|
||||||
for (const auto& objContainer : zoneDefinition.m_zone_definition.m_obj_containers)
|
return std::ranges::any_of(zoneDefinition.m_zone_definition.m_obj_containers,
|
||||||
{
|
[](const ZoneDefinitionObjContainer& objContainer)
|
||||||
if (objContainer.m_type == ZoneDefinitionObjContainerType::IPAK)
|
{
|
||||||
return true;
|
return objContainer.m_type == ZoneDefinitionObjContainerType::IPAK;
|
||||||
}
|
});
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AbstractImageIPakPostProcessor::FindNextObjContainer(AssetCreationContext& context)
|
void AbstractImageIPakPostProcessor::FindNextObjContainer()
|
||||||
{
|
{
|
||||||
const auto objContainerCount = m_zone_definition.m_zone_definition.m_obj_containers.size();
|
const auto objContainerCount = m_zone_definition.m_zone_definition.m_obj_containers.size();
|
||||||
while (m_obj_container_index < objContainerCount)
|
while (m_obj_container_index < objContainerCount)
|
||||||
@ -55,15 +54,8 @@ void AbstractImageIPakPostProcessor::PostProcessAsset(XAssetInfoGeneric& assetIn
|
|||||||
if (assetInfo.m_name.empty() || assetInfo.m_name[0] == ',')
|
if (assetInfo.m_name.empty() || assetInfo.m_name[0] == ',')
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Initialize on first image occurance
|
|
||||||
if (!m_initialized)
|
|
||||||
{
|
|
||||||
FindNextObjContainer(context);
|
|
||||||
m_initialized = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (m_current_ipak && m_zone_definition.m_asset_index_in_definition >= m_current_ipak_end_index)
|
while (m_current_ipak && m_zone_definition.m_asset_index_in_definition >= m_current_ipak_end_index)
|
||||||
FindNextObjContainer(context);
|
FindNextObjContainer();
|
||||||
|
|
||||||
if (m_current_ipak && m_zone_definition.m_asset_index_in_definition <= m_current_ipak_start_index)
|
if (m_current_ipak && m_zone_definition.m_asset_index_in_definition <= m_current_ipak_start_index)
|
||||||
m_current_ipak->AddImage(assetInfo.m_name);
|
m_current_ipak->AddImage(assetInfo.m_name);
|
||||||
|
@ -20,14 +20,13 @@ public:
|
|||||||
void FinalizeZone(AssetCreationContext& context) override;
|
void FinalizeZone(AssetCreationContext& context) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void FindNextObjContainer(AssetCreationContext& context);
|
void FindNextObjContainer();
|
||||||
|
|
||||||
const ZoneDefinitionContext& m_zone_definition;
|
const ZoneDefinitionContext& m_zone_definition;
|
||||||
ISearchPath& m_search_path;
|
ISearchPath& m_search_path;
|
||||||
IPakCreator& m_ipak_creator;
|
IPakCreator& m_ipak_creator;
|
||||||
const std::filesystem::path& m_out_dir;
|
const std::filesystem::path& m_out_dir;
|
||||||
|
|
||||||
bool m_initialized;
|
|
||||||
unsigned m_obj_container_index;
|
unsigned m_obj_container_index;
|
||||||
IPakToCreate* m_current_ipak;
|
IPakToCreate* m_current_ipak;
|
||||||
unsigned m_current_ipak_start_index;
|
unsigned m_current_ipak_start_index;
|
||||||
|
@ -2,8 +2,9 @@
|
|||||||
|
|
||||||
#include "Iwd/IwdCreator.h"
|
#include "Iwd/IwdCreator.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
#include <format>
|
#include <format>
|
||||||
#include <iostream>
|
#include <ranges>
|
||||||
|
|
||||||
AbstractImageIwdPostProcessor::AbstractImageIwdPostProcessor(const ZoneDefinitionContext& zoneDefinition,
|
AbstractImageIwdPostProcessor::AbstractImageIwdPostProcessor(const ZoneDefinitionContext& zoneDefinition,
|
||||||
ISearchPath& searchPath,
|
ISearchPath& searchPath,
|
||||||
@ -13,26 +14,24 @@ AbstractImageIwdPostProcessor::AbstractImageIwdPostProcessor(const ZoneDefinitio
|
|||||||
m_search_path(searchPath),
|
m_search_path(searchPath),
|
||||||
m_iwd_creator(zoneStates.GetZoneAssetCreationState<IwdCreator>()),
|
m_iwd_creator(zoneStates.GetZoneAssetCreationState<IwdCreator>()),
|
||||||
m_out_dir(outDir),
|
m_out_dir(outDir),
|
||||||
m_initialized(false),
|
|
||||||
m_obj_container_index(0u),
|
m_obj_container_index(0u),
|
||||||
m_current_iwd(nullptr),
|
m_current_iwd(nullptr),
|
||||||
m_current_iwd_start_index(0u),
|
m_current_iwd_start_index(0u),
|
||||||
m_current_iwd_end_index(0u)
|
m_current_iwd_end_index(0u)
|
||||||
{
|
{
|
||||||
|
FindNextObjContainer();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AbstractImageIwdPostProcessor::AppliesToZoneDefinition(const ZoneDefinitionContext& zoneDefinition)
|
bool AbstractImageIwdPostProcessor::AppliesToZoneDefinition(const ZoneDefinitionContext& zoneDefinition)
|
||||||
{
|
{
|
||||||
for (const auto& objContainer : zoneDefinition.m_zone_definition.m_obj_containers)
|
return std::ranges::any_of(zoneDefinition.m_zone_definition.m_obj_containers,
|
||||||
{
|
[](const ZoneDefinitionObjContainer& objContainer)
|
||||||
if (objContainer.m_type == ZoneDefinitionObjContainerType::IWD)
|
{
|
||||||
return true;
|
return objContainer.m_type == ZoneDefinitionObjContainerType::IWD;
|
||||||
}
|
});
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AbstractImageIwdPostProcessor::FindNextObjContainer(AssetCreationContext& context)
|
void AbstractImageIwdPostProcessor::FindNextObjContainer()
|
||||||
{
|
{
|
||||||
const auto objContainerCount = m_zone_definition.m_zone_definition.m_obj_containers.size();
|
const auto objContainerCount = m_zone_definition.m_zone_definition.m_obj_containers.size();
|
||||||
while (m_obj_container_index < objContainerCount)
|
while (m_obj_container_index < objContainerCount)
|
||||||
@ -56,15 +55,8 @@ void AbstractImageIwdPostProcessor::PostProcessAsset(XAssetInfoGeneric& assetInf
|
|||||||
if (assetInfo.m_name.empty() || assetInfo.m_name[0] == ',')
|
if (assetInfo.m_name.empty() || assetInfo.m_name[0] == ',')
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Initialize on first image occurance
|
|
||||||
if (!m_initialized)
|
|
||||||
{
|
|
||||||
FindNextObjContainer(context);
|
|
||||||
m_initialized = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (m_current_iwd && m_zone_definition.m_asset_index_in_definition >= m_current_iwd_end_index)
|
while (m_current_iwd && m_zone_definition.m_asset_index_in_definition >= m_current_iwd_end_index)
|
||||||
FindNextObjContainer(context);
|
FindNextObjContainer();
|
||||||
|
|
||||||
if (m_current_iwd && m_zone_definition.m_asset_index_in_definition <= m_current_iwd_start_index)
|
if (m_current_iwd && m_zone_definition.m_asset_index_in_definition <= m_current_iwd_start_index)
|
||||||
m_current_iwd->AddFile(std::format("images/{}.iwi", assetInfo.m_name));
|
m_current_iwd->AddFile(std::format("images/{}.iwi", assetInfo.m_name));
|
||||||
|
@ -20,14 +20,13 @@ public:
|
|||||||
void FinalizeZone(AssetCreationContext& context) override;
|
void FinalizeZone(AssetCreationContext& context) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void FindNextObjContainer(AssetCreationContext& context);
|
void FindNextObjContainer();
|
||||||
|
|
||||||
const ZoneDefinitionContext& m_zone_definition;
|
const ZoneDefinitionContext& m_zone_definition;
|
||||||
ISearchPath& m_search_path;
|
ISearchPath& m_search_path;
|
||||||
IwdCreator& m_iwd_creator;
|
IwdCreator& m_iwd_creator;
|
||||||
const std::filesystem::path& m_out_dir;
|
const std::filesystem::path& m_out_dir;
|
||||||
|
|
||||||
bool m_initialized;
|
|
||||||
unsigned m_obj_container_index;
|
unsigned m_obj_container_index;
|
||||||
IwdToCreate* m_current_iwd;
|
IwdToCreate* m_current_iwd;
|
||||||
unsigned m_current_iwd_start_index;
|
unsigned m_current_iwd_start_index;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user