Depuis la version 1.14, la fonction llParticleSystem est utilisée pour simuler les effets de llMakeSmoke.
llMakeSmoke(integer particle_count,
float particle_scale,
float particle_speed,
float particle_lifetime,
float source_cone,
string source_texture_id,
vector local_offset);
fakeMakeSmoke(integer particle_count, float particle_scale, float particle_speed,
float particle_lifetime, float source_cone, string source_texture_id,
vector local_offset)
{
// local_offset est ignoté
llParticleSystem([
PSYS_PART_FLAGS, PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_EMISSIVE_MASK|PSYS_PART_WIND_MASK,
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE_CONE,
PSYS_PART_START_COLOR, <1.0, 1.0, 1.0>,
PSYS_PART_END_COLOR, <1.0, 1.0, 1.0>,
PSYS_PART_START_ALPHA, 1.00,
PSYS_PART_END_ALPHA, 0.05,
PSYS_PART_START_SCALE, <particle_scale, particle_scale, 0.0>,
PSYS_PART_END_SCALE, <10, 10, 0.0>,
PSYS_PART_MAX_AGE, 3.0,
PSYS_SRC_ACCEL, <0.0, 0.0, 0.0>,
PSYS_SRC_TEXTURE, source_texture_id,
PSYS_SRC_BURST_RATE, 10 / particle_count,
PSYS_SRC_ANGLE_BEGIN, 0.0,
PSYS_SRC_ANGLE_END, source_cone * PI,
PSYS_SRC_BURST_PART_COUNT, 1,
PSYS_SRC_BURST_RADIUS, 0.0,
PSYS_SRC_BURST_SPEED_MIN, particle_speed,
PSYS_SRC_BURST_SPEED_MAX, particle_speed,
PSYS_SRC_MAX_AGE, particle_lifetime / 2,
PSYS_SRC_OMEGA, <0.0, 0.0, 0.0>
]);
}
// Inconvénients connus :
// 1) llMakeSmoke est capable de générer des particules de durée de vie
// aléatoire, ce qui est impossible via un appel unique au nouveau système
// 2) llMakeSmoke comporte un système de croissance permanente des particules
// pendant leur durée de vie, permettant de dépasser l’actuelle limite de 4m.
// 3) Plusieurs paramètres ne sont pas repris tels quels.
// (la vitesse n’est plus en m/sec par exemple et le nombre de particules
// semble être plus faible), il y a plusieurs approximations réalisée au travers
// de simples divisions qui pourraient générer dans certains cas un résultat différent.
// 4) Il n’y a aucun moyen de reproduire l’effet de décalage (offset) du précédent système.