M3Datei.h 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. class GraphicsApi;
  11. //! Verwaltet eine Datei, in der 3d Modelle abgespeichert wurden
  12. class M3Datei : public virtual ReferenceCounter
  13. {
  14. private:
  15. Text pfad;
  16. RCArray<Text>* modelName;
  17. Array<__int64>* modelPos;
  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
  35. //! Verwendung benötigt werden
  36. DLLEXPORT void leseDaten();
  37. //! Speichert 3D Modell Daten in der Datei
  38. //! \param zMdr Ein Zeiger auf die zu speichernden Daten ohne erhöhtem
  39. //! Reference Counter \param name Der Name, unter dem die Daten in der
  40. //! Datei gespeichert werden sollen \return 1, falls das Modell
  41. //! gespeichert wurde. 0, falls ein fehler beim speichern auftrat
  42. DLLEXPORT bool saveModel(Model3DData* zMdr, Text* name);
  43. //! Speichert 3D Modell Daten in der Datei
  44. //! \param zMdr Ein Zeiger auf die zu speichernden Daten ohne erhöhtem
  45. //! Reference Counter \param name Der Name, unter dem die Daten in der
  46. //! Datei gespeichert werden sollen \return 1, falls das Modell
  47. //! gespeichert wurde. 0, falls ein fehler beim speichern auftrat
  48. DLLEXPORT bool saveModel(Model3DData* zMdr, const char* 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
  52. //! gefunden wurde, oder ein fehler beim speichern auftrat
  53. DLLEXPORT bool removeModel(Text* name);
  54. //! Löscht ein 3D Modell aus der Datei
  55. //! \param name Der Name des Modells
  56. //! \return 1, wenn das Modell gelöscht wurde. 0, wenn das Modell nicht
  57. //! gefunden wurde, oder ein fehler beim speichern auftrat
  58. DLLEXPORT bool removeModel(const char* name);
  59. //! Lähd ein 3D Modell aus der Datei
  60. //! \param name Der name des zu ladenden Modells
  61. //! \return Die geladenen Daten
  62. DLLEXPORT Model3DData* ladeModel(
  63. Text* name, GraphicsApi* zApi, Text* uniqueName) const;
  64. //! Lähd ein 3D Modell aus der Datei
  65. //! \param name Der name des zu ladenden Modells
  66. //! \return Die geladenen Daten
  67. DLLEXPORT Model3DData* ladeModel(
  68. const char* name, GraphicsApi* zApi, const char* uniqueName) const;
  69. //! überprft, ob ein bestimmtes 3D Modell in der Datei existiert
  70. //! \param name Der Name des zu suchenden 3D Modells
  71. //! \return 1, wenn das Modell gefunden wurde. 0 sonst
  72. DLLEXPORT bool hatModel(const char* name) const;
  73. //! ügibt die Anzahl der gespeicherten Modelle zurück
  74. DLLEXPORT int getModelAnzahl() const;
  75. //! Gibt den Namen eines Bestimmten Modells zurück
  76. //! \param i Der Index des Modells
  77. //! \return Ein Zeiger aud den Namen des Modells ohne erhöhten Reference
  78. //! Counter
  79. DLLEXPORT Text* zModelName(int i) const;
  80. };
  81. } // namespace Framework