Κατά την κατασκευή της, η κλάση δημιουργεί μία οντότητα-ρίζα (root entity), στην οποία
προστίθενται ένα Hierarchy_component και ένα Transform_component. Με τον τρόπο αυτό,
κάθε στοιχείο διεπαφής χρήστη που δημιουργείται στη συνέχεια καθίσταται παιδί της συγκε-
κριμένης οντότητας, διαμορφώνοντας μια συνεκτική ιεραρχική δομή.
Ο διαχειριστής διεπαφής (UI_manager) παρέχει, επιπλέον, έτοιμες ρουτίνες για τη δημιουρ-
γία panels, κειμένου και κουμπιών, απαλλάσσοντας τον χρήστη από την ανάγκη χειροκίνητης
σύνθεσης των αντίστοιχων οντοτήτων και components.
class UI_Manager
{
public:
UI_Manager(Scene &scene)
: m_scene(scene)
{
m_root_entity = m_scene.create_entity();
m_scene.add_component<UI_Transform_Component>(m_root_entity);
m_scene.add_component<UI_Hierarchy_Component>(m_root_entity);
}
~UI_Manager() = default;
Entity get_root_entity() const { return m_root_entity; }
Entity create_button(glm::vec2 position, glm::vec2 size, std::string text);
Entity create_text(glm::vec2 position, glm::vec2 size, std::string text, int color_mode);
private:
Scene &m_scene;
Entity m_root_entity;
};
4.10
Συμπληρωματικές λειτουργικότητες
Ορισμένες επιπλέον υλοποιήσεις που κρίθηκαν απαραίτητες στο πλαίσιο της παρούσας ερ-
γασίας παρουσιάζονται στη συνέχεια.
4.10.1
input output
Αρχικά, για την υποστήριξη της δημιουργίας και απεικόνισης τρισδιάστατων πλεγμάτων
(3D meshes), παρότι ο βασικός προσανατολισμός της μηχανής εστιάζει κυρίως σε δισδιάστατα
(2D) αντικείμενα, έχει ήδη παρουσιαστεί η κλάση HalfEdgeMesh. Η κλάση αυτή αποτελεί δομή
47