ConsoleOpenMASK

Un article de OpenMASKWiki.

Jump to: navigation, search

Sommaire

Idée de départ

Xavier Larrodé pour ses besoins propres a eu besoin d'une console, il a trouvé Console Ogre. Cette console lui a servi de base au développement d'une console pour OpenMASK.

Améliorations

Faites

La console fournit sur l'appel de fonctions static, on y a ajouté l'appel à des méthodes de classe.

A faire

Il faut séparer les parties commande et affichage de la console. La première est chargé de gérer le parsing de la ligne de commande et d'appeler la commande appellée. La seconde est chargé de la saisie de commandes et l'affichage du résultat.

Si la partie commande est unique, la partie affichage peut recouvrir plusieurs formes : console 2D Gtk, Ogre (ce que propose la version de base), 3D mapper en texture sur un objet, fichier de commande (script), UMPC, bouton dans la CVI (pour des commande sans paramètres)...

Il faudrait améliorer la sortie, comme remplacer les lignes de string par un format xml (ou html ou autre) qui donne la couleur de la ligne un peu à la gtk

Points à éclaircir

Objet actif

Un objet de simulation (et ce qu'il contient extension, visual object,...) doit être actif pour certaines opérations (connexion,...), donc il faut veiller à exécuter la commande au bon moment et pas forcément dès qu'on la reçoit.

D'autre part, si un attribut à jour au mauvais moment, il peut être écrasé par ailleurs dans le process normal.

L'idée est qu'il faut que ce soit le contrôleur qui réceptionne toutes les commandes et qu'il transmet les messages aux objets. Cela marche si c'est le contrôleur qui lors de son compute() regarde s'il y a des commandes (texte) en attente, les analyse (transforme en paramètres) puis transmet les messages ad hoc aux objets concernés pour qu'il exécute la commande.

Distribution

En distribué si les commandes sont passées par message, l'implémentation ne doit pas poser de problèmes. Il ne faut pas faire l'enregistrement des commandes par addCommand(), mais par l'envoi d'un message au(x) controleur(s) ayant une console.

Navigation