#pragma once #include #include #include "Domain/Information/StructureInformation.h" #include "Persistence/IDataRepository.h" class RenderingUsedType { public: bool m_members_loaded; const DataDefinition* m_type; StructureInformation* m_info; bool m_is_context_asset; bool m_non_runtime_reference_exists; bool m_non_embedded_reference_exists; bool m_array_reference_exists; bool m_pointer_array_reference_exists; bool m_pointer_array_reference_is_reusable; RenderingUsedType(const DataDefinition* type, StructureInformation* info); }; class RenderingContext { std::unordered_map> m_used_types_lookup; RenderingContext(std::string game, std::vector fastFileBlocks); RenderingUsedType* GetBaseType(RenderingUsedType* usedType); void AddMembersToContext(StructureInformation* info); void MakeAsset(StructureInformation* asset); void CreateUsedTypeCollections(); public: std::string m_game; std::vector m_blocks; StructureInformation* m_asset; std::vector m_used_types; std::vector m_used_structures; std::vector m_referenced_assets; bool m_has_actions; const FastFileBlock* m_default_normal_block; const FastFileBlock* m_default_temp_block; static std::unique_ptr BuildContext(const IDataRepository* repository, StructureInformation* asset); };