Welt3D.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include "Critical.h"
  3. #include "Array.h"
  4. namespace Framework
  5. {
  6. class Zeichnung3D; // Zeichnung.h
  7. class Render3D; // Render3D.h
  8. struct MausEreignis3D; // MausEreignis.h
  9. class Model3D;
  10. // Speichert alle 3D Zeichnungen einer Szene ab
  11. class Welt3D
  12. {
  13. private:
  14. RCArray< Model3D > *members;
  15. bool rend;
  16. Critical cs;
  17. int ref;
  18. public:
  19. // Konstructor
  20. __declspec( dllexport ) Welt3D();
  21. // Destruktor
  22. __declspec( dllexport ) virtual ~Welt3D();
  23. // Blockiert den zugriff auf das Objekt und wartet gegebenfalls auf den Zugriff
  24. __declspec( dllexport ) void lock();
  25. // Gibt das Objekt für andere Threads frei
  26. __declspec( dllexport ) void unlock();
  27. // Fügt der Welt ein Objekt hinzu
  28. // obj: Das Objekt, was hinzugefügt werden soll
  29. __declspec( dllexport ) void addZeichnung( Model3D *obj );
  30. // Entfernt ein Objekt aus der Welt
  31. // obj: Das Objekt, das entwernt werden soll (ohne erhöhten reference Counter)
  32. __declspec( dllexport ) void removeZeichnung( Model3D *zObj );
  33. // Verarbeitet ein Mausereignis
  34. // me: Das Mausereignis, das verarbeitet werden soll
  35. __declspec( dllexport ) void doMausEreignis( MausEreignis3D &me );
  36. // Verarbeitet die vergangene Zeit
  37. // tickval: Die zeit in sekunden, die seit dem letzten Aufruf der Funktion vergangen ist
  38. // return: true, wenn sich das Objekt verändert hat, false sonnst.
  39. __declspec( dllexport ) virtual bool tick( double tickval );
  40. // Gibt einen Iterator zurück, mit dem alle Members aufgezählt werden können
  41. __declspec( dllexport ) Iterator< Model3D * > getMembers();
  42. // Erhöht den Reference Counting Zähler.
  43. // return: this.
  44. __declspec( dllexport ) Welt3D *getThis();
  45. // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Zeichnung automatisch gelöscht.
  46. // return: 0.
  47. __declspec( dllexport ) Welt3D *release();
  48. };
  49. }