background image

Κατά την κατασκευή της, η κλάση δημιουργεί μία οντότητα-ρίζα (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