| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #pragma once
- #include "BsCorePrerequisites.h"
- namespace BansheeEngine
- {
- /** @addtogroup Importer-Internal
- * @{
- */
- /**
- * Contains a resource that was imported from a file that contains multiple resources (for example an animation from an
- * FBX file).
- */
- struct SubResourceRaw
- {
- WString name; /**< Unique name of the sub-resource. */
- SPtr<Resource> value; /**< Contents of the sub-resource. */
- };
- /**
- * Abstract class that is to be specialized for converting a certain asset type into an engine usable resource
- * (for example a .png file into an engine usable texture).
- *
- * On initialization this class must register itself with the Importer module, which delegates asset import calls to a
- * specific importer.
- */
- class BS_CORE_EXPORT SpecificImporter
- {
- public:
- SpecificImporter() {}
- virtual ~SpecificImporter() {}
- /**
- * Check is the provided extension supported by this importer.
- *
- * @note Provided extension should be without the leading dot.
- */
- virtual bool isExtensionSupported(const WString& ext) const = 0;
- /** Check if the provided magic number is supported by this importer. */
- virtual bool isMagicNumberSupported(const UINT8* magicNumPtr, UINT32 numBytes) const = 0;
- /**
- * Imports the given file. If file contains more than one resource only the primary resource is imported (for
- * example for an FBX a mesh would be imported, but animations ignored).
- *
- * @param[in] filePath Pathname of the file, with file extension.
- * @param[in] importOptions Options that can control how is the resource imported.
- * @return null if it fails, otherwise the loaded object.
- */
- virtual SPtr<Resource> import(const Path& filePath, SPtr<const ImportOptions> importOptions) = 0;
- /**
- * Imports the given file. This method returns all imported resources, which is relevant for files that can contain
- * multiple resources (for example an FBX which may contain both a mesh and animations).
- *
- * @param[in] filePath Pathname of the file, with file extension.
- * @param[in] importOptions Options that can control how are the resources imported.
- * @return Empty array if it fails, otherwise the loaded objects. First element is always the
- * primary resource.
- */
- virtual Vector<SubResourceRaw> importAll(const Path& filePath, SPtr<const ImportOptions> importOptions);
- /**
- * Creates import options specific for this importer. Import options are provided when calling import() in order
- * to customize the import, and provide additional information.
- */
- virtual SPtr<ImportOptions> createImportOptions() const;
- /**
- * Gets the default import options.
- *
- * @return The default import options.
- */
- SPtr<const ImportOptions> getDefaultImportOptions() const;
- private:
- mutable SPtr<const ImportOptions> mDefaultImportOptions;
- };
- /** @} */
- }
|