VECTOR temp;
var box_size = 2000;
void cloud()
{
set(my, TRANSLUCENT);
my.roll = 0.001;
vec_scale(my.scale_x, random(3)+0.5);
VECTOR velocity;
vec_set(velocity, vector(random(2)-1, random(2)-1, random(2)-1));
while(1)
{
vec_add(my.x, vector(velocity.x * time_step, velocity.y * time_step, velocity.z * time_step));
// move with camera
my.x = cycle(my.x, camera.x - box_size, camera.x + box_size);
my.y = cycle(my.y, camera.y - box_size, camera.y + box_size);
my.z = cycle(my.z, camera.z - box_size, camera.z + box_size);
// smooth alpha fade
vec_set(temp, my.x);
vec_sub(temp, camera.x);
vec_rotateback(temp, camera.pan);
my.alpha = 100;
if(temp.x < 100 + camera.clip_near)
{
my.alpha = maxv(0, temp.x - camera.clip_near);
}
else if(temp.x > box_size - 1000)
{
my.alpha = 100 - (temp.x - 1000) / 10;
}
wait(1);
}
}
void main()
{
video_mode = 9;
level_load("");
var i;
for(i=0; i<1000; i++)
ent_create("cloud.tga",
vector(random(box_size*2)-box_size, random(box_size*2)-box_size, random(box_size*2)-box_size), cloud);
}