physics_particle_group_get_data(group, buffer, flags)
| Argument | La description |
|---|---|
| group | L'indice de groupe (ID) du groupe de particules pour obtenir les données. |
| buffer | Le tampon (créé précédemment) à utiliser pour stocker les données. |
| flags | Les indicateurs à utiliser pour extraire des données sur des types de particules spécifiques. |
Renvoie: les données du tampon
Cette fonction renvoie diverses informations sur un groupe de particules dans la simulation physique en utilisant les indicateurs donnés vérifiés. L'index de groupe (son ID) est celui qui a été renvoyé par la fonction physics_particle_group_end(), et le tampon utilisé doit avoir été créé précédemment en utilisant la fonction buffer_create(). Il devrait être de type "grow", avec une taille correspondant approximativement à celle des données de retour attendues. Les drapeaux eux-mêmes sont définis en utilisant les constantes données ci-dessous, et vous utiliserez le bitwise ou "|" pour créer une seule valeur de drapeau pour obtenir l'information désirée.
| Constant | La description | Type de données |
|---|---|---|
| phy_particle_data_flag_typeflags | La valeur des drapeaux pour la particule. | buffer_u32 |
| phy_particle_data_flag_position | La position x et y de la particule. | 2 x buffer_f32 |
| phy_particle_data_flag_velocity | La vitesse horizontale et verticale. | 2 x buffer_f32 |
| phy_particle_data_flag_colour | La couleur et la valeur alpha (hexadécimal). | buffer_f32 |
| phy_particle_data_flag_category | La catégorie de particule (telle que définie lorsque vous avez créé le groupe auquel elle appartient). | buffer_f32 |
var count = physics_particle_group_count(gp);
var flags = phy_particle_data_flag_position |
phy_particle_data_flag_colour;
if (count > 0)
{
var buffer = buffer_create(count * 12,
buffer_grow, 4);
physics_particle_group_get_data(gp, buffer,
flags);
for (var n = 0; n < count; n++;)
{
var xx = buffer_read(buffer,
buffer_f32);
var yy = buffer_read(buffer,
buffer_f32);
var argb = buffer_read(buffer,
buffer_u32);
var alpha = (argb >> 24)
& 255;
draw_sprite_ext(sprBlob, 0, xx,
yy, 1, 1, 0, c_green, alpha);
}
buffer_delete(buffer);
}
Le code ci-dessus obtient la position et la vitesse de chaque particule dans le groupe indexé par la variable "gp", stocke les données du tampon dans un certain nombre de variables, puis l'utilise pour dessiner un sprite à la position de chaque particule dans le groupe.