Fix collecting referenced asses from Animation asset

#3013
This commit is contained in:
Wojtek Figat
2024-10-25 19:02:31 +02:00
parent 12af7f6cc9
commit 9f9564895e
2 changed files with 33 additions and 0 deletions

View File

@@ -12,6 +12,8 @@
#include "Engine/Serialization/MemoryReadStream.h"
#if USE_EDITOR
#include "Engine/Serialization/MemoryWriteStream.h"
#include "Engine/Serialization/JsonWriters.h"
#include "Engine/Content/JsonAsset.h"
#include "Engine/Level/Level.h"
#endif
@@ -486,6 +488,34 @@ bool Animation::Save(const StringView& path)
return false;
}
void Animation::GetReferences(Array<Guid>& assets, Array<String>& files) const
{
BinaryAsset::GetReferences(assets, files);
for (const auto& e : Events)
{
for (const auto& k : e.Second.GetKeyframes())
{
if (k.Value.Instance)
{
// Collect refs from Anim Event data (as Json)
rapidjson_flax::StringBuffer buffer;
CompactJsonWriter writer(buffer);
writer.StartObject();
k.Value.Instance->Serialize(writer, nullptr);
writer.EndObject();
JsonAssetBase::GetReferences(StringAnsiView((char*)buffer.GetString(), buffer.GetSize()), assets);
}
}
}
// Add nested animations
for (const auto& e : NestedAnims)
{
assets.Add(e.Second.Anim.GetID());
}
}
#endif
uint64 Animation::GetMemoryUsage() const

View File

@@ -153,6 +153,9 @@ public:
public:
// [BinaryAsset]
#if USE_EDITOR
void GetReferences(Array<Guid>& assets, Array<String>& files) const override;
#endif
uint64 GetMemoryUsage() const override;
void OnScriptingDispose() override;