mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 00:02:55 +00:00
fix: consider asset references when looking for assets of zone
This commit is contained in:
parent
e7a9e4b528
commit
fc18f81302
@ -59,7 +59,7 @@ XAssetInfoGeneric* AssetLoadingManager::AddAsset(std::unique_ptr<XAssetInfoGener
|
|||||||
|
|
||||||
XAssetInfoGeneric* AssetLoadingManager::LoadIgnoredDependency(const asset_type_t assetType, const std::string& assetName, IAssetLoader* loader)
|
XAssetInfoGeneric* AssetLoadingManager::LoadIgnoredDependency(const asset_type_t assetType, const std::string& assetName, IAssetLoader* loader)
|
||||||
{
|
{
|
||||||
auto* alreadyLoadedAsset = m_context.m_zone->m_pools->GetAsset(assetType, assetName);
|
auto* alreadyLoadedAsset = m_context.m_zone->m_pools->GetAssetOrAssetReference(assetType, assetName);
|
||||||
if (alreadyLoadedAsset)
|
if (alreadyLoadedAsset)
|
||||||
return alreadyLoadedAsset;
|
return alreadyLoadedAsset;
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ XAssetInfoGeneric* AssetLoadingManager::LoadAssetDependency(const asset_type_t a
|
|||||||
|
|
||||||
XAssetInfoGeneric* AssetLoadingManager::LoadDependency(const asset_type_t assetType, const std::string& assetName)
|
XAssetInfoGeneric* AssetLoadingManager::LoadDependency(const asset_type_t assetType, const std::string& assetName)
|
||||||
{
|
{
|
||||||
auto* alreadyLoadedAsset = m_context.m_zone->m_pools->GetAsset(assetType, assetName);
|
auto* alreadyLoadedAsset = m_context.m_zone->m_pools->GetAssetOrAssetReference(assetType, assetName);
|
||||||
if (alreadyLoadedAsset)
|
if (alreadyLoadedAsset)
|
||||||
return alreadyLoadedAsset;
|
return alreadyLoadedAsset;
|
||||||
|
|
||||||
@ -171,7 +171,7 @@ XAssetInfoGeneric* AssetLoadingManager::LoadDependency(const asset_type_t assetT
|
|||||||
|
|
||||||
IndirectAssetReference AssetLoadingManager::LoadIndirectAssetReference(const asset_type_t assetType, const std::string& assetName)
|
IndirectAssetReference AssetLoadingManager::LoadIndirectAssetReference(const asset_type_t assetType, const std::string& assetName)
|
||||||
{
|
{
|
||||||
const auto* alreadyLoadedAsset = m_context.m_zone->m_pools->GetAsset(assetType, assetName);
|
const auto* alreadyLoadedAsset = m_context.m_zone->m_pools->GetAssetOrAssetReference(assetType, assetName);
|
||||||
if (alreadyLoadedAsset)
|
if (alreadyLoadedAsset)
|
||||||
return IndirectAssetReference(assetType, assetName);
|
return IndirectAssetReference(assetType, assetName);
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
|||||||
<< "* asset, Zone* zone, IZoneOutputStream* stream)")
|
<< "* asset, Zone* zone, IZoneOutputStream* stream)")
|
||||||
|
|
||||||
m_intendation++;
|
m_intendation++;
|
||||||
LINE_START(": AssetWriter(zone->m_pools->GetAsset(" << m_env.m_asset->m_asset_enum_entry->m_name << ", GetAssetName(asset))"
|
LINE_START(": AssetWriter(zone->m_pools->GetAssetOrAssetReference(" << m_env.m_asset->m_asset_enum_entry->m_name << ", GetAssetName(asset))"
|
||||||
<< ", zone, stream)")
|
<< ", zone, stream)")
|
||||||
LINE_END("")
|
LINE_END("")
|
||||||
m_intendation--;
|
m_intendation--;
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#include "ZoneAssetPools.h"
|
#include "ZoneAssetPools.h"
|
||||||
|
|
||||||
|
#include <format>
|
||||||
|
|
||||||
ZoneAssetPools::ZoneAssetPools(Zone* zone)
|
ZoneAssetPools::ZoneAssetPools(Zone* zone)
|
||||||
: m_zone(zone)
|
: m_zone(zone)
|
||||||
{
|
{
|
||||||
@ -25,6 +27,17 @@ XAssetInfoGeneric* ZoneAssetPools::AddAsset(std::unique_ptr<XAssetInfoGeneric> x
|
|||||||
return assetInfo;
|
return assetInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XAssetInfoGeneric* ZoneAssetPools::GetAssetOrAssetReference(const asset_type_t type, const std::string& name) const
|
||||||
|
{
|
||||||
|
auto* result = GetAsset(type, name);
|
||||||
|
|
||||||
|
if (result != nullptr || (!name.empty() && name[0] == ','))
|
||||||
|
return result;
|
||||||
|
|
||||||
|
result = GetAsset(type, std::format(",{}", name));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
size_t ZoneAssetPools::GetTotalAssetCount() const
|
size_t ZoneAssetPools::GetTotalAssetCount() const
|
||||||
{
|
{
|
||||||
return m_assets_in_order.size();
|
return m_assets_in_order.size();
|
||||||
|
@ -39,6 +39,8 @@ public:
|
|||||||
std::vector<scr_string_t> usedScriptStrings,
|
std::vector<scr_string_t> usedScriptStrings,
|
||||||
std::vector<IndirectAssetReference> indirectAssetReferences);
|
std::vector<IndirectAssetReference> indirectAssetReferences);
|
||||||
_NODISCARD virtual XAssetInfoGeneric* GetAsset(asset_type_t type, const std::string& name) const = 0;
|
_NODISCARD virtual XAssetInfoGeneric* GetAsset(asset_type_t type, const std::string& name) const = 0;
|
||||||
|
_NODISCARD virtual XAssetInfoGeneric* GetAssetOrAssetReference(asset_type_t type, const std::string& name) const;
|
||||||
|
|
||||||
_NODISCARD virtual asset_type_t GetAssetTypeCount() const = 0;
|
_NODISCARD virtual asset_type_t GetAssetTypeCount() const = 0;
|
||||||
_NODISCARD virtual const char* GetAssetTypeName(asset_type_t assetType) const = 0;
|
_NODISCARD virtual const char* GetAssetTypeName(asset_type_t assetType) const = 0;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user