M3Datei.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #pragma once
  2. #include "Array.h"
  3. #include "ReferenceCounter.h"
  4. namespace Framework
  5. {
  6. class Text;
  7. class Model3DData;
  8. class Knochen;
  9. class Datei;
  10. //! Verwaltet eine Datei, in der 3d Modelle abgespeichert wurden
  11. class M3Datei : public virtual ReferenceCounter
  12. {
  13. private:
  14. Text pfad;
  15. RCArray< Text > *modelName;
  16. Array< __int64 > *modelPos;
  17. int ref;
  18. void saveKnochen( Knochen *k, Datei *zDat );
  19. Knochen *readKnochen( Datei *zDat ) const;
  20. public:
  21. //! Konstruktor
  22. DLLEXPORT M3Datei();
  23. //! Konstruktor
  24. //! \param pfad Der Pfad zur Datei
  25. DLLEXPORT M3Datei( const char *pfad );
  26. //! Konstruktor
  27. //! \param pfad Der Pfad zur Datei
  28. DLLEXPORT M3Datei( Text *pfad );
  29. //! Destruktor
  30. DLLEXPORT ~M3Datei();
  31. //! Setzt den Pfad zur Datei
  32. //! \param pfad Pfad zur Datei
  33. DLLEXPORT void setPfad( const char *pfad );
  34. //! Ließt grundlegende Informationen aus der Datei, die für ihre Verwendung benötigt werden
  35. DLLEXPORT void leseDaten();
  36. //! Speichert 3D Modell Daten in der Datei
  37. //! \param zMdr Ein Zeiger auf die zu speichernden Daten ohne erhöhtem Reference Counter
  38. //! \param name Der Name, unter dem die Daten in der Datei gespeichert werden sollen
  39. //! \return 1, falls das Modell gespeichert wurde. 0, falls ein fehler beim speichern auftrat
  40. DLLEXPORT bool saveModel( Model3DData *zMdr, Text *name );
  41. //! Speichert 3D Modell Daten in der Datei
  42. //! \param zMdr Ein Zeiger auf die zu speichernden Daten ohne erhöhtem Reference Counter
  43. //! \param name Der Name, unter dem die Daten in der Datei gespeichert werden sollen
  44. //! \return 1, falls das Modell gespeichert wurde. 0, falls ein fehler beim speichern auftrat
  45. DLLEXPORT bool saveModel( Model3DData *zMdr, const char *name );
  46. //! Löscht ein 3D Modell aus der Datei
  47. //! \param name Der Name des Modells
  48. //! \return 1, wenn das Modell gelöscht wurde. 0, wenn das Modell nicht gefunden wurde, oder ein fehler beim speichern auftrat
  49. DLLEXPORT bool removeModel( Text *name );
  50. //! Löscht ein 3D Modell aus der Datei
  51. //! \param name Der Name des Modells
  52. //! \return 1, wenn das Modell gelöscht wurde. 0, wenn das Modell nicht gefunden wurde, oder ein fehler beim speichern auftrat
  53. DLLEXPORT bool removeModel( const char *name );
  54. //! Lähd ein 3D Modell aus der Datei
  55. //! \param name Der name des zu ladenden Modells
  56. //! \return Die geladenen Daten
  57. DLLEXPORT Model3DData *ladeModel( Text *name ) const;
  58. //! Lähd ein 3D Modell aus der Datei
  59. //! \param name Der name des zu ladenden Modells
  60. //! \return Die geladenen Daten
  61. DLLEXPORT Model3DData *ladeModel( const char *name ) const;
  62. //! überprft, ob ein bestimmtes 3D Modell in der Datei existiert
  63. //! \param name Der Name des zu suchenden 3D Modells
  64. //! \return 1, wenn das Modell gefunden wurde. 0 sonst
  65. DLLEXPORT bool hatModel( const char *name ) const;
  66. //! ügibt die Anzahl der gespeicherten Modelle zurück
  67. DLLEXPORT int getModelAnzahl() const;
  68. //! Gibt den Namen eines Bestimmten Modells zurück
  69. //! \param i Der Index des Modells
  70. //! \return Ein Zeiger aud den Namen des Modells ohne erhöhten Reference Counter
  71. DLLEXPORT Text *zModelName( int i ) const;
  72. };
  73. }