#pragma once #include #include "Model.h" #include "Animation.h" #include "StringBase.h" namespace Assets::Exporters { // This enumeration represents the possible exporter scale constants. enum class ExporterScale { // This exporter requires no scale modifications. Default, // This exporter requires conversion to inches. Inch, // This exporter requires conversion to centimeters. CM }; // The interface for all asset exporter types. class Exporter { public: // Exports the given animation to the provided path. virtual bool ExportAnimation(const Animation& Animation, const String& Path) = 0; // Exports the given model to the provided path. virtual bool ExportModel(const Model& Model, const String& Path) = 0; // Gets the file extension for this exporters model format. virtual imstring ModelExtension() = 0; // Gets the file extension for this exporters animation format. virtual imstring AnimationExtension() = 0; // Gets the required scaling constant for this exporter. virtual ExporterScale ExportScale() = 0; // Gets whether or not the exporter supports animation exporting. virtual bool SupportsAnimations() = 0; // Gets whether or not the exporter supports model exporting. virtual bool SupportsModels() = 0; }; }