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. // mdl: Das Model
  29. // 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. // name: Der Name des Models
  33. void removeModel( const char *name );
  34. // Überprüft, ob unter einem bestimmten Namen ein Model abgespeichert wurde
  35. // 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. // 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. // 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. }