#pragma once #include "domain/Project.h" #include namespace core { // 实体完整数据(几何 + 贴图路径 + 动画轨道)的二进制格式,与 project.json v2 的 payload 字段对应。 // 贴图 PNG 仍单独存放在 assets/entities/,本文件不嵌入像素。 // 具体读写通过继承 PersistentBinaryObject 的适配器类完成(见 EntityPayloadBinary.cpp)。 class EntityPayloadBinary { public: static constexpr quint32 kMagicPayload = 0x48464550; // 'HFEP' static constexpr quint32 kPayloadVersion = 7; // v7:追加 visibilityKeys // 旧版独立动画文件(仍用于打开 v1 项目时合并) static constexpr quint32 kMagicLegacyAnim = 0x48465441; // 'HFTA' static constexpr quint32 kLegacyAnimVersion = 1; static bool save(const QString& absolutePath, const Project::Entity& entity); // 读入后覆盖 entity 中除调用方已校验外的字段;失败时尽量保持 entity 不变。 static bool load(const QString& absolutePath, Project::Entity& entity); // 仅读取旧 .anim(HFTA),写入 entity 的三条动画轨道。 static bool loadLegacyAnimFile(const QString& absolutePath, Project::Entity& entity); }; } // namespace core