Look into 'particles.c' in game studio root folder. You can see that each particle has it's own while loop (p_run_sprite). But I guess you could make your own particles with sprites and handle all of them in one loop.
Greets!
Edit:
Originally Posted By: Reconnoiter
it probably uses static list and not a while for each sprite particle
Nothing build-in works that way
Code:
// internal sprite lifetime and movement function
function p_run_sprite(ENTITY* p)
{
while (p._LIFESPAN > 0)
{
vec_fill(p.scale_x,0.1*p._SIZE);
wait(1);
if(is(p,_MOVE))
{
VECTOR speed;
vec_set(speed,p._VEL_X);
vec_scale(speed,time_step);
p._VEL_Z -= p._GRAVITY * time_step;
vec_add(p.x,speed);
}
p._LIFESPAN -= time_step;
}
ent_remove(p);
}
These emulated particles are using ent_createlocal which is identical to ent_create (except when your are creating a game with online functionalities). Each emulated particle is an entity like every other entity.
How about using standard particles and change the p.bmap in the p.event function? You can use skill_a...skill_z as timer conditions or whatever. Might be worth a try.
Ah okay. You could somewhat simulate the rotation by using several rotated versions of a bmap for particles but I dont know if that is worth the effort. The fps gain might be minimal anyway in the big picture.