#pragma once #include "BsEditorPrerequisites.h" #include "BsIReflectable.h" #include "BsModule.h" #include "BsPlatformInfo.h" namespace BansheeEngine { /** * @brief Contains build information for a specific platform to be * used by the build manager. */ class BS_ED_EXPORT BuildData : public IReflectable { public: BuildData(); PlatformType activePlatform; Vector> platformData; /************************************************************************/ /* RTTI */ /************************************************************************/ public: friend class BuildDataRTTI; static RTTITypeBase* getRTTIStatic(); virtual RTTITypeBase* getRTTI() const; }; /** * @brief Handles building of the game executable and related files. */ class BS_ED_EXPORT BuildManager : public Module { public: BuildManager(); /** * @brief Returns a list of available platforms the executable can be built for. */ const Vector& getAvailablePlatforms() const; /** * @brief Returns the currently active platform. */ PlatformType getActivePlatform() const; /** * @brief Changes the active build platform. Might cause asset reimport. */ void setActivePlatform(PlatformType type); /** * @brief Gets stored build setting for the active platform. */ SPtr getActivePlatformInfo() const; /** * @brief Gets stored build setting for a specific platform. */ SPtr getPlatformInfo(PlatformType type) const; /** * @brief Returns a list of file names of all .NET assemblies * required for a specific platform. */ Vector getFrameworkAssemblies(PlatformType type) const; /** * @brief Returns the location of the pre-built executable for the specified platform. */ Path getMainExecutable(PlatformType type) const; /** * @brief Returns a list of script defines for a specific platform. */ WString getDefines(PlatformType type) const; /** * @brief Stores build settings for all platforms in the specified file. */ void save(const Path& outFile); /** * @brief Loads a previously stored list of build settings. */ void load(const Path& inFile); /** * @brief Clears currently active build settings. */ void clear(); private: SPtr mBuildData; }; }