Ciao.
Sto realizzando un applicazione in c++ con rappresentazione grafica opengl, utilizzando la libreria wild magic 4.
La libreria utilizza uno scenegraph , un grafo di classi nodo che possono essere attaccati / rimossi dalla scena , tutto cio' che è presente nello scenegraph viene rappresentato a video(renderizzato) in quanto a queste classi nodo possono essere attaccate delle mesh(geometria) e degli effetti (shader) per renderizzare la geometria attaccata al nodo.
Non mi dilungo sul funzionamento dello scenegraph : CULLING, FUSTOM CULLING BSP ecc.....
fase 1)
Il mio problema e forse errore è che sono partito dalla rappresentazione e non dalla logica.
Adesso ho bisogno di creare delle classi entità che anno come rappresentazione grafica un puntatore , o meglio uno smart pointer che punta al nodo inserito nello scenegraph.
In pratica succede che cambiando o invocando i membri dello smart pointer modifico la rappresentazione grafica in tempo reale.
in quanto in un ciclo infinito l'applicazione grafica wild magic attraversa il grafo , raccoglie le informazioni sugli oggetti attaccati(ai nodi) e li renderizza secondo gli effetti che ho attaccato.
Ad esempio vorrei creare delle macroclassi conteneti logica , rappresentazione e stato di una data entità.
E' giusto come logica?
consigli fase 1?
fase 2
vorrei utilizzare il pattern decorator per aggiungere rappresentazioni grafiche al nodo della classe entità.
come dallibro della gang of four che mostra come decorare una pagina con un bordo e una scroll bar.
Il problema è che il nodo non ha un metodo draw() per esempio , perchè lo scendegraph raccoglie le informazioni dal grafo e le disegna nella classe che raccoglie le informazioni è li che sta il bel metodo draw.
per cambiare rappresentazione grafica e fare ad es vedere le entità selezionate in un altro colore o creare un contorno 3d ad una mesh o rappresentare delle quote , devo necessariamente aggiungere/rimuovere mesh al nodo o cambiare effetto a seconda dello stato, ad es stato selezionato effetto 1 mesh aggiunta contorno.
come posso avere la funzionalità del decorator?
posso ad es invece di fare l'override di un metodo draw fare l'override di un metodo ADD o Remove creato apposta per il nodo che aggiunge/rimuove mesh ?
Il funzionamento sarebbe praticamente lo stesso perchè ogni mesh aggiunta /rimossa è disegnata/resa invisibile.
consigli?