Un langage spécifique au domaine pourrait aider; créer une classe AnimationDirector qui interpréterait les instructions du script d'animation et effectuerait le travail approprié pendant Draw
et Update
. Le DSL lui-même pourrait être aussi simple que
texture 0,0; 800,600; 5.0
qui va créer un objet avec une texture texture
à (0,0) et le déplacer vers (800600) sur une période de cinq secondes, puis le détruire.
Si vous voulez quelque chose d'un peu plus utile,
create x texture 0,0
over 5.0 move x 800,600
destroy x
qui vous permettra plus de créativité, et d'élargir les possibilités d'animation (comme l'ajout d'une rotation, etc. si vous le désirez, tels). Maintenant, lorsque vous avez besoin d'exécuter une animation, passez simplement le nom de ressource approprié au directeur, et laissez-le gérer les choses à partir de là. Alternativement, vous pouvez créer une sorte d'AnimatedEntity qui fait référence à un script particulier, et appelle le AnimationDirector lui-même pour Draw
et Update
; en fonction de la façon dont vous avez fait votre moteur jusqu'à présent, cela pourrait être plus adapté à sa conception.
Si vous stockez les animations au format XML, vous pouvez les charger via le pipeline de contenu – Martin
, vous ne pouvez pas vraiment définir une grande partie des différentes animations et transitions dans le fichier XML? – mauris
@Martin: Toutes les animations scriptées doivent passer par le pipeline de contenu, qu'elles soient exécutées en XML ou non, si le projet doit fonctionner sur des plates-formes autres que des PC ordinaires. L'utilisation de XML pour la structure d'une animation DSL ne présente aucun avantage par rapport à une structure en texte brut. –