Model3DList.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #pragma once
  2. #include "Array.h"
  3. #include "Critical.h"
  4. namespace Framework
  5. {
  6. class Model3DData; //! Model3D.h
  7. class Text; //! Text.h
  8. class Model3D; //! Model3D.h
  9. namespace Standart3DTypes
  10. {
  11. extern const char *cube; //! = "f_würfel"; Die Modeldaten eines Würfels der 100 * 100 * 100 groß ist
  12. };
  13. //! Verwaltet alle geladenen Modeldaten, so dass mehrere Zeichnungen die selben Daten benutzen können
  14. class Model3DList
  15. {
  16. private:
  17. static int id;
  18. static Critical cs;
  19. RCArray< Model3DData > *models;
  20. RCArray< Text > *names;
  21. int ref;
  22. public:
  23. //! Konstruktor
  24. Model3DList();
  25. //! Destruktor
  26. ~Model3DList();
  27. //! Fügt der Liste ein Model Hinzu
  28. //! \param mdl Das Model
  29. //! \param name Der name, unter dem das Model in der Liste gespeichert wird
  30. bool addModel( Model3DData *mdl, const char *name );
  31. //! Entfernt ein Model aus der Liste
  32. //! \param name Der Name des Models
  33. void removeModel( const char *name );
  34. //! Überprüft, ob unter einem bestimmten Namen ein Model abgespeichert wurde
  35. //! \param name Der Name
  36. //! \return true, wenn ein Model mit dem Namen existiert
  37. bool hatModel( const char *name ) const;
  38. //! Gibt ein bestimmtes Model zurück
  39. //! \param name Der Name des Models
  40. Model3DData *getModel( const char *name ) const;
  41. //! Gibt ein bestimmtes Model ohne erhöhten Reference Counter zurück
  42. //! \param name Der Name des Models
  43. Model3DData *zModel( const char *name ) const;
  44. //! Erhöht den Reference Counting Zähler.
  45. //! \return this.
  46. Model3DList *getThis();
  47. //! Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Zeichnung automatisch gelöscht.
  48. //! \return 0.
  49. Model3DList *release();
  50. //! Initialisiert statische private member. Wird vom Framework automatisch aufgerufen.
  51. static void init();
  52. //! Löscht statische private member. Wird vom Framework automatisch aufgerufen.
  53. static void destroy();
  54. };
  55. }