Welt3D.h 2.4 KB

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