Το Interactable_component χρησιμοποιείται συνήθως σε συνδυασμό με το Button_component,
σχηματίζοντας ένα λειτουργικό ζεύγος. Τα δεδομένα που περιλαμβάνει σχετίζονται με τη δια-
χείριση της αλληλεπίδρασης του χρήστη με το αντίστοιχο στοιχείο διεπαφής, όπως τα:
bool is_hoved;
bool is_focused;
bool is_clicked;
std::function<void()> on_click_callback;
Το Panel_component εχει δεδομένα οπτική αναπαράσταση του και διαστάσεων. Τέλος,
το Hierarchy_component περιλαμβάνει στα δεδομένα του έναν δείκτη σε μία οντότητα που
λειτουργεί ως “γονέας” (parent), καθώς και ένα std::vector δεικτών που αντιστοιχούν στις
οντότητες–“παιδιά” (children). Με τον τρόπο αυτό υποστηρίζεται η ιεραρχική οργάνωση των
οντοτήτων της σκηνής.
4.9.2
ui rendering system
Για τον έλεγχο ύπαρξης οντοτήτων, καθώς και των αντίστοιχων components μέσα στη
σκηνή, όπως έχει ήδη αναφερθεί, υπεύθυνος είναι ο μηχανισμός του RenderingSystem.
Όπως υπάρχει ένα τέτοιο σύστημα για τη διαχείριση αντικειμένων γενικού τύπου (όπως
sprites, φωτισμός κ.λπ.), έτσι, για λόγους καλύτερου διαχωρισμού ευθυνών και αυξημένης επε-
κτασιμότητας, υλοποιήθηκε μία ξεχωριστή κλάση UIRenderingSystem, η οποία είναι υπεύθυνη
αποκλειστικά για την απόδοση των στοιχείων διεπαφής χρήστη.
Η κλάση αυτή είναι υπεύθυνη για την αναζήτηση και την απόδοση αποκλειστικά των αντι-
κειμένων που σχετίζονται με το σύστημα διεπαφής χρήστη (UI). Όπως και στην περίπτωση του
Rendering_system, η μοναδική μέθοδος της κλάσης (render) έχει οριστεί ως στατική (static),
ώστε να μην απαιτείται η δημιουργία αντικειμένου της κλάσης για την κλήση της.
Κατά συνέπεια, σε κάθε κλήση της μεθόδου draw() της σκηνής, εκτελείται αρχικά
η μέθοδος render του Rendering_system και στη συνέχεια η αντίστοιχη μέθοδος του
UI_Rendering_system, διασφαλίζοντας τον διαχωρισμό μεταξύ της απόδοσης της σκηνής και
της απόδοσης των στοιχείων διεπαφής.
void ge::Scene::draw()
{
Renderer_System::render(
*
this);
Renderer_System_GUI::render(
*
this);
}
4.9.3
ui διαχειριστής (manager)
Για τη διευκόλυνση της δημιουργίας και διαχείρισης του γραφικού περιβάλλοντος διεπαφής
χρήστη (UI), υλοποιήθηκε η κλάση UI_manager.
46