// Copyright (c) 2012-2024 Wojciech Figat. All rights reserved. #pragma once #include "Types.h" #if COMPILE_WITH_ASSETS_IMPORTER #include "Engine/Tools/TextureTool/TextureTool.h" #include "Engine/Graphics/Textures/TextureBase.h" /// /// Enable/disable caching texture import options /// #define IMPORT_TEXTURE_CACHE_OPTIONS 1 /// /// Importing textures utility /// class ImportTexture { public: typedef TextureTool::Options Options; public: /// /// Tries the get texture import options from the target location asset. /// /// The asset path. /// The options. /// True if success, otherwise false. static bool TryGetImportOptions(const StringView& path, Options& options); /// /// Imports texture, cube texture or sprite atlas. /// /// The importing context. /// Result. static CreateAssetResult Import(CreateAssetContext& context); /// /// Creates the Texture. Argument must be TextureData*. /// /// The importing context. /// Result. static CreateAssetResult ImportAsTextureData(CreateAssetContext& context); /// /// Creates the Texture. Argument must be TextureBase::InitData*. /// /// The importing context. /// Result. static CreateAssetResult ImportAsInitData(CreateAssetContext& context); /// /// Creates the Texture asset from the given data. /// /// The importing context. /// The texture data. /// Result. static CreateAssetResult Create(CreateAssetContext& context, TextureData* textureData); /// /// Creates the Texture asset from the given data. /// /// The importing context. /// The texture data. /// Result. static CreateAssetResult Create(CreateAssetContext& context, TextureBase::InitData* initData); /// /// Imports the Cube Texture. /// /// The importing context. /// Result. static CreateAssetResult ImportCube(CreateAssetContext& context); /// /// Creates the Cube Texture asset from the given data. /// /// The importing context. /// The cube texture data. /// Result. static CreateAssetResult CreateCube(CreateAssetContext& context, TextureData* textureData); /// /// Imports the IES Profile file. /// /// The importing context. /// Result. static CreateAssetResult ImportIES(CreateAssetContext& context); private: static void InitOptions(CreateAssetContext& context, Options& options); static CreateAssetResult Create(CreateAssetContext& context, const TextureData& textureData, Options& options); static CreateAssetResult Create(CreateAssetContext& context, const TextureBase::InitData& textureData, Options& options); }; #endif