Le code se présente sous la forme d'un ensemble de classes C++ qui forment, au global, un système de particules en 2D pour OpenGL.
Le concept: on dessine un très grand nombre (des milliers) de "particules" (carrés colorés et texturés plus ou moins transparents selon un facteur hasard et leur "âge": les particules meurent quand leur Vie atteint 0, c'est-à-dire lorsqu'elle sont complètement transparentes) à l'écran. Ces particules qui sont projetées (vive la théorie vectorielle ^^) dans une certaine direction à une certaine vitesse donnent un joli effet de feu dans le cas présenté ici, mais selon les paramètres on peut obtenir une trainée de poussière derrière un obus, une nuée d'étoiles etc... C'est une technique très amusante car si vous bidouillez avec les paramètres, vous obtiendrez souvent des choses étonnantes :)
Les specs:
- Génération dynamique de la texture des particules -> on ne doit pas fournir d'image
- Possibilité de coincer l'orientation des particules entre deux angles en degrés ([0,360])
A noter: 40->140 est l'inverse de 140->40, il ne faut pas écrire -220->40
- Vitesse paramétrable ainsi que le facteur de réduction/croissance de celle-ci
- séparation en classes claires (j'espère ^^)
- Couleur paramétrable (au singulier, contacter Wett pour le pluriel ^^)
Le point original:
La classe CLieu représente un lieu géométrique de points (cercle, disque, rectangle "plaquette", point, mais aussi droite, parabole etc si l'on veut les coder). Ainsi, en associant un CLieu à un CParticleEngine, on peut aisément déterminer l'aspect de l'animation. Le feu en bas d'écran est une plaquette "ligne" (je n'ai pas codé les lignes, mais ça revient à ça). Le cercle est un cercle aplati à un facteur de 0.5 pour donner l'effet de perspective, et le flambeau vert est un point avec des angles de projections [40,140]°.
Je ne pense pas que cela existait déjà, en tout cas je ne l'ai jamais vu. Changer le Lieu en pleine animation devrait donner lieu à une transition intéressante, je n'ai pas encore testé, mais cela devient très simple grâce à ce système.