#pragma once #include "Domain/Computations/MemberComputations.h" #include "Domain/Information/StructureInformation.h" #include "Persistence/IDataRepository.h" #include #include 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* AddUsedType(std::unique_ptr usedType); RenderingUsedType* GetBaseType(const IDataRepository* repository, MemberComputations* computations, RenderingUsedType* usedType); void AddMembersToContext(const IDataRepository* repository, StructureInformation* info); void ScanUsedTypeIfNeeded(const IDataRepository* repository, MemberComputations* computations, RenderingUsedType* usedType); void MakeAsset(const IDataRepository* repository, StructureInformation* asset); void CreateUsedTypeCollections(); bool UsedTypeHasActions(const RenderingUsedType* usedType) const; 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); };