Sistemas de partículas

Las partículas tienen vida en sistemas de partículas. Por lo que para tener partículas en tu juego necesitas crear uno o más sistemas de partículas. Puede haber muchos tipos diferentes de sistemas de partículas. Por ejemplo, si tu juego tiene varias pelotas y cada pelota debiera tener una cola de partículas, lo más probable es que cada pelota tenga su sistema de partículas. La manera más fácil para manejar los sistemas de partículas es crear uno y luego crear partículas en él, usando los tipos partículas que especificaste antes. Pero, como veremos a continuación, los sistemas de partículas pueden contener emisores que automáticamente producen partículas, atractores que las atraen y destructores que las eliminan.

Una vez que las partículas se añaden a un sistema son dibujadas y actualizadas en cada step automáticamente. Para definir si las partículas se deben dibujar delante o detrás de las demás instancias, los sistemas de partículas poseen una profundidad.

Los sistemas de partículas no se eliminarán aunque reinicies el juego, para eliminarlos debes usar la función adecuada. Así que asegúrate de hacerlo cuando ya no los necesites.

Las siguientes funciones permiten manejar los sistemas de partículas:

part_system_create() Crea un nuevo sistema de partículas. Devuelve el índice del sistema creado. Este índice debe emplearse en las llamadas a las funciones siguientes para configurar las propiedades del sistema de partículas.
part_system_destroy(ind) Destruye el sistema de partículas ind. Llama a esta función si ya no harás uso del sistema para ahorrar espacio.
part_system_exists(ind) Devuelve si el sistema de partículas ind existe.
part_system_clear(ind) Devuelve el sistema ind a sus valores por defecto, removiendo todas las partículas, emisores y atractores en él.
part_system_draw_order(ind,oldtonew) Establece el orden en el que el sistema dibuja las partículas. Cuando oldtonew es true las partículas más viejas son dibujadas primero y las nuevas se dibujan sobre ellas (valor por defecto). De otra forma las partículas más recientes son dibujadas primero. Esto puede resultar en varios efectos diferentes.
part_system_depth(ind,depth) Especifica la profundidad del sistema de partículas.
part_system_position(ind,x,y) Especifica la posición en la que se dibuja el sistema de partículas. Si quieres dibujar el sistema relativo a un objeto puedes usar sus coordenadas.

Como ya hemos visto, los sistemas de partículas se dibujan y actualizan automáticamente. Pero a veces puedes no querer que esto sea así. Las siguientes funciones te permiten controlar estos aspectos:

part_system_automatic_update(ind,automatic) Indica si el sistema debe actualizare automáticamente (1) o no (0).
part_system_automatic_draw(ind,automatic) Indica si el sistema debe dibujarse automáticamente (1) o no (0).
part_system_update(ind) Esta función actualiza el sistema y permite a los emisores crear partículas. Puedes llamar a esta función cuando no uses actualización automática, o para acelerar un poco el sistema al inicio.
part_system_drawit(ind) Esta función dibuja el sistema de partículas si has desactivado la opción automática. Debes llamar a esta función desde el evento draw de algún objeto.

Las siguientes funciones se encargan de las partículas de un sistema de partículas:

part_particles_create(ind,x,y,parttype,number) Esta función crea number partículas del tipo ind en la posición (x,y) dentro del sistema.

part_particles_create_color(ind,x,y,parttype,color,number) Esta función crea number partículas del tipo ind en la posición (x,y) dentro del sistema con el color indicado. Esto es útil cuando el tipo de partícula sólo usa un color o no define ninguno.

 part_particles_clear(ind) Esta función elimina todas las partículas del sistema.
part_particles_count(ind) Esta función devuelve el número de partículas en el sistema.