#pragma once #include "Array.h" #include "ReferenceCounter.h" namespace Framework { class Text; class Model3DData; class Bone; class Datei; class GraphicsApi; //! Verwaltet eine Datei, in der 3d Modelle abgespeichert wurden class M3Datei : public virtual ReferenceCounter { private: Text pfad; RCArray* modelName; Array<__int64>* modelPos; void saveKnochen(Bone* k, Datei* zDat); Bone* readKnochen(Datei* zDat) const; public: //! Konstruktor DLLEXPORT M3Datei(); //! Konstruktor //! \param pfad Der Pfad zur Datei DLLEXPORT M3Datei(const char* pfad); //! Konstruktor //! \param pfad Der Pfad zur Datei DLLEXPORT M3Datei(Text* pfad); //! Destruktor DLLEXPORT ~M3Datei(); //! Setzt den Pfad zur Datei //! \param pfad Pfad zur Datei DLLEXPORT void setPfad(const char* pfad); //! Ließt grundlegende Informationen aus der Datei, die für ihre //! Verwendung benötigt werden DLLEXPORT void leseDaten(); //! Speichert 3D Modell Daten in der Datei //! \param zMdr Ein Zeiger auf die zu speichernden Daten ohne erhöhtem //! Reference Counter \param name Der Name, unter dem die Daten in der //! Datei gespeichert werden sollen \return 1, falls das Modell //! gespeichert wurde. 0, falls ein fehler beim speichern auftrat DLLEXPORT bool saveModel(Model3DData* zMdr, Text* name); //! Speichert 3D Modell Daten in der Datei //! \param zMdr Ein Zeiger auf die zu speichernden Daten ohne erhöhtem //! Reference Counter \param name Der Name, unter dem die Daten in der //! Datei gespeichert werden sollen \return 1, falls das Modell //! gespeichert wurde. 0, falls ein fehler beim speichern auftrat DLLEXPORT bool saveModel(Model3DData* zMdr, const char* name); //! Löscht ein 3D Modell aus der Datei //! \param name Der Name des Modells //! \return 1, wenn das Modell gelöscht wurde. 0, wenn das Modell nicht //! gefunden wurde, oder ein fehler beim speichern auftrat DLLEXPORT bool removeModel(Text* name); //! Löscht ein 3D Modell aus der Datei //! \param name Der Name des Modells //! \return 1, wenn das Modell gelöscht wurde. 0, wenn das Modell nicht //! gefunden wurde, oder ein fehler beim speichern auftrat DLLEXPORT bool removeModel(const char* name); //! Lähd ein 3D Modell aus der Datei //! \param name Der name des zu ladenden Modells //! \return Die geladenen Daten DLLEXPORT Model3DData* ladeModel( Text* name, GraphicsApi* zApi, Text* uniqueName) const; //! Lähd ein 3D Modell aus der Datei //! \param name Der name des zu ladenden Modells //! \return Die geladenen Daten DLLEXPORT Model3DData* ladeModel( const char* name, GraphicsApi* zApi, const char* uniqueName) const; //! überprft, ob ein bestimmtes 3D Modell in der Datei existiert //! \param name Der Name des zu suchenden 3D Modells //! \return 1, wenn das Modell gefunden wurde. 0 sonst DLLEXPORT bool hatModel(const char* name) const; //! ügibt die Anzahl der gespeicherten Modelle zurück DLLEXPORT int getModelAnzahl() const; //! Gibt den Namen eines Bestimmten Modells zurück //! \param i Der Index des Modells //! \return Ein Zeiger aud den Namen des Modells ohne erhöhten Reference //! Counter DLLEXPORT Text* zModelName(int i) const; }; } // namespace Framework