From d99eb0ab24c86704d32f4b547f4431783b39a6d2 Mon Sep 17 00:00:00 2001 From: Jan Date: Sun, 21 Mar 2021 21:29:02 +0100 Subject: [PATCH] Use asset identified by name and type when writing asset dependency to make sure that the pointer always matches one that would have been written to the zone already even when using an asset from another loaded zone --- .../Generating/Templates/ZoneWriteTemplate.cpp | 6 +++++- src/ZoneWriting/Writing/AssetWriter.h | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp index 7ceda1e9..d027ebec 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneWriteTemplate.cpp @@ -865,9 +865,13 @@ class ZoneWriteTemplate::Internal final : BaseTemplate m_intendation++; LINE("assert(pAsset != nullptr);") + LINE("assert(m_asset != nullptr);") + LINE("assert(m_asset->m_ptr != nullptr);") LINE("") - LINE(MakeTypePtrVarName(m_env.m_asset->m_definition) << " = pAsset;") + LINE("auto* zoneAsset = static_cast<"<m_definition->GetFullName()<<"*>(m_asset->m_ptr);") + LINE(MakeTypePtrVarName(m_env.m_asset->m_definition) << " = &zoneAsset;") LINE("WritePtr_" << MakeSafeTypeName(m_env.m_asset->m_definition) << "(false);") + LINE("*pAsset = zoneAsset;") m_intendation--; LINE("}") diff --git a/src/ZoneWriting/Writing/AssetWriter.h b/src/ZoneWriting/Writing/AssetWriter.h index 8dafb3a2..6442c878 100644 --- a/src/ZoneWriting/Writing/AssetWriter.h +++ b/src/ZoneWriting/Writing/AssetWriter.h @@ -8,9 +8,9 @@ class AssetWriter : public ContentWriterBase { +protected: XAssetInfoGeneric* m_asset; -protected: scr_string_t* varScriptString; AssetWriter(XAssetInfoGeneric* asset, Zone* zone, IZoneOutputStream* stream);