#pragma once #include "Critical.h" #include "Array.h" namespace Framework { class Zeichnung3D; // Zeichnung.h class Render3D; // Render3D.h struct MausEreignis3D; // MausEreignis.h class Model3D; // Speichert alle 3D Zeichnungen einer Szene ab class Welt3D { private: RCArray< Model3D > *members; bool rend; Critical cs; int ref; public: // Konstructor __declspec( dllexport ) Welt3D(); // Destruktor __declspec( dllexport ) virtual ~Welt3D(); // Blockiert den zugriff auf das Objekt und wartet gegebenfalls auf den Zugriff __declspec( dllexport ) void lock(); // Gibt das Objekt f�r andere Threads frei __declspec( dllexport ) void unlock(); // F�gt der Welt ein Objekt hinzu // obj: Das Objekt, was hinzugef�gt werden soll __declspec( dllexport ) void addZeichnung( Model3D *obj ); // Entfernt ein Objekt aus der Welt // obj: Das Objekt, das entwernt werden soll (ohne erh�hten reference Counter) __declspec( dllexport ) void removeZeichnung( Model3D *zObj ); // Verarbeitet ein Mausereignis // me: Das Mausereignis, das verarbeitet werden soll __declspec( dllexport ) void doMausEreignis( MausEreignis3D &me ); // Verarbeitet die vergangene Zeit // tickval: Die zeit in sekunden, die seit dem letzten Aufruf der Funktion vergangen ist // return: true, wenn sich das Objekt ver�ndert hat, false sonnst. __declspec( dllexport ) virtual bool tick( double tickval ); // Gibt einen Iterator zur�ck, mit dem alle Members aufgez�hlt werden k�nnen __declspec( dllexport ) Iterator< Model3D * > getMembers(); // Erh�ht den Reference Counting Z�hler. // return: this. __declspec( dllexport ) Welt3D *getThis(); // Verringert den Reference Counting Z�hler. Wenn der Z�hler 0 erreicht, wird das Zeichnung automatisch gel�scht. // return: 0. __declspec( dllexport ) Welt3D *release(); }; }