+static void particle_spawn_cone( particle_system *sys,
+ v3f co, v3f dir, f32 angle, f32 speed,
+ f32 lifetime, u32 colour ){
+ if( sys->alive == sys->max ) return;
+
+ particle *p = &sys->array[ sys->alive ++ ];
+
+ v3f tx, ty;
+ v3_tangent_basis( dir, tx, ty );
+
+ v3f rand;
+ vg_rand_cone( rand, angle );
+ v3_muls( tx, rand[0]*speed, p->v );
+ v3_muladds( p->v, ty, rand[1]*speed, p->v );
+ v3_muladds( p->v, dir, rand[2]*speed, p->v );
+
+ p->life = lifetime;
+ p->colour = colour;
+ v3_copy( co, p->co );
+}
+