Je voudrais vous faire part des désagréments que je viens d’avoir en implémentant la partie Input de Mono.Xna. Si vous suivez le lien vous verrez que, à part les factory, l’ensemble est constitué de structures. D’un point de vue design c’est pas mal car ces objet sont faites pour êtres créés et consommées sur l’instant (dans la méthode Update() de Game généralement) et donc à la fin de Update() ces structures sont détruites automatiquement et sans intervention du GC.
Néanmoins les structures sont à contrario des classes beaucoup plus délicates d’implémentation. En effet de nombreux petits machins qui rendent la vie plus facile ne sont pas disponibles. J’en citerai trois qui m’ont énervé : absence d’initialiseur (vous savez quand vous mettez directement int foo = 500; dans vos classes), de constructeur par défaut (i.e. non seulement y’a pas d’initialiseur mais en plus on peut pas faire le travail d’initialisation dans un constructeur par défaut car c’est interdit par le compilo), et enfin il faut initialiser tous les champs d’une structure dans le constructeur avant de pouvoir utilisé quoi que ce soit (dans mon cas j’avais un champ qui dépendait d’un autre mais comme du coup l’ensemble n’était pas initialisé ça buggait soit à la compilation soit à l’exécution, un vrai foutoir >_< ).
Bref tout ça pour dire que vous aurez bientôt le support de souris/clavier/manette XBOX dans Mono.Xna.
Post a Comment