Hello, I'm designing my own particle System engine, this is for learning purposes, I don't really want to use an existing engine.
Right now I generated beautiful particles, but I want to layout the engine to make it easier to work with them.
I have been thinking on a Class "Particle System",
that class would contain the following references:
particlesList: A list of the particles that compose the system.
systemEmitter: The system emitter for the particles, the Emitter class should be able to perform several particle emission techniques, like for example, emitting from lines, points, randomly emitting from a polygon. Also this class should do Emission Controlling, like emitting towards a point, away from a point, in a direction and time to emit.
particleController: Manages for example rotation around a point, variable particle sizes, variable particle colors, areas around the system to which the particles react in different ways, collision detection ( with other objects or within the particles if becomes necesary ).
Particle Renderer: In charge of drawing this system , Variable Blending types, particle textures, particle types like triangles, circles, custom...
This four items , would compose the particle system Class. Some FX may require more than one particle system, for example a Fire FX, could use one system for the fire, one system for smoke and one system for sparks.
This is what I have in my mind, but I would really love to know if this design approach is good, or if you see I'm missing something or could/should do something different. I haven't thought about some easy way to "save" FX, like for example what would be the best way to tell my engine, "draw Fire", "draw explosion" , "draw fountain", etc, maybe storing FX information in xml files would be a good idea, etc..
Opinions are really welcome, and as I stated before, I really want to build this, instead of using another engine, for learning reasons.