#pragma once #include "Array.h" namespace Framework { class Text; class Model3DData; class Knochen; class Datei; //! Verwaltet eine Datei, in der 3d Modelle abgespeichert wurden class M3Datei { private: Text pfad; RCArray< Text > *modelName; Array< __int64 > *modelPos; int ref; void saveKnochen( Knochen *k, Datei *zDat ); Knochen *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 ) 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 ) 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; //! Erhöht den Reference Counting Zähler. //! \return this. DLLEXPORT M3Datei *getThis(); //! Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Zeichnung automatisch gelöscht. //! \return 0. DLLEXPORT M3Datei *release(); }; }