#include <acknex.h>
#include <default.c>
BMAP* arrow_pcx = "arrow.pcx";
function mouse_startup()
{
mouse_mode = 2;
mouse_map = arrow_pcx;
while (1)
{
vec_set(mouse_pos, mouse_cursor);
wait(1);
}
}
function vec_randomize (VECTOR* vec, var range)
{
vec_set(vec,vector(random(1)-0.5,random(1)-0.5,random(1)-0.5));
vec_normalize(vec,random(range));
}
// helper function: fades out a particle
function p_alphafade(PARTICLE *p)
{
p.alpha -= 20*time_step;
if (p.alpha <= 0) p.lifespan = 0;
}
function p_fountain(PARTICLE* p)
{
VECTOR vTemp;
vec_randomize(vTemp,0.5);
vec_add(p.vel_x,vTemp);
vec_set(p.blue,vector(255,255,255));
set(p, MOVE | TRANSLUCENT);
p.alpha = 100;
p.size = 0.75;
p.gravity = 0.1;
p.event = p_alphafade;
}
function main()
{
level_load(NULL);
video_window(NULL,NULL,112,"Particle demo");
vec_set(camera.x,vector(-150,0,50));
vec_set(sky_color,vector(50,0,0)); // dark blue
VECTOR particle_origin;
while (1)
{
particle_origin.x = mouse_pos.x;
particle_origin.y = mouse_pos.y;
particle_origin.z = 40;
vec_for_screen (particle_origin, camera);
// effect(p_mouse_particles, 1, particle_origin.x, vector(0,0,0.1));
effect(p_fountain,minv(1,40*time_step),particle_origin.x,vector(0,0,2));
wait (1);
}
// effect(p_fountain,minv(1,40*time_step),vector(0,0,0),vector(0,0,2));
}