Le gui con Ogre possono essere fatte in moltissimi modi e con moltissime librerie.
Dopo aver provato CEGUI, che però mi sembra troppo complicato e MyGUI ho voluto provare Gorilla.
Mi pareva abbastanza buono e ha direttamente con la release ufficiale una possibilità interessante: quella di essere integrato con Lua.
Ho sempre odiato compilare per cavolate come le GUI, così il problema non si porrebbe. In più stavo già pensando di usare Lua per qualche aspetto del gioco che forse prima o poi finirò.
L’implementazione dipende da Luabind, «una libreria che ti aiuta a creare binding tra C++ e Lua» (cit. tradotta dalla pagina linkata). Basta inizializzare Luabind e chiamare la funzione bindGorilla
e passare a Lua il vostro file.
O meglio, dovrebbe essere così semplice.
Purtroppo io ho riscontrato un segmentation fault. Ciò era dovuto alla riga 149, in cui si dichiarava la classe ScreenRenderable
come figlia della classe MovableObject
.
Rimuovendo la classe dal parametro del template sembra funzionare. Non ho ancora sperimentato il tutto, ma almeno non ci sono più segmentation fault.
Aggiornamento 31/10/2012: usando questa modifica non si possono usare le gui come nodi. Il modo più corretto quindi di risolvere il problema e quindi di avere questa funzionalità è quello di fare il binding della classe MovableObject
. Era quello il problema del segmentation fault: Lua andava a cercare una classe che per lui non esisteva.