M3Datei.h 3.7 KB

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