background image

Το 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