#pragma once #include "ICodeTemplate.h" #include "ZoneCodeGeneratorArguments.h" #include #include #include class CodeGenerator { public: explicit CodeGenerator(const ZoneCodeGeneratorArguments* args); bool GenerateCode(IDataRepository* repository); private: void SetupTemplates(); bool GenerateCodeForTemplate(const RenderingContext& context, ICodeTemplate* codeTemplate) const; static bool GetAssetWithName(IDataRepository* repository, const std::string& name, StructureInformation*& asset); const ZoneCodeGeneratorArguments* m_args; std::unordered_map> m_template_mapping; };