void do_think(world_t *w){ int i = 0; particle_t *p = NULL; while((p = world_next_thinking(w,&i))){ if (p->action){ p->action(p); } if (particle_has_prop(p)){ particle_do_nprop(p,get_dtime_sec()); particle_do_vprop(p,get_dtime_sec()); } if (particle_has_timer(p)){ particle_do_timer(p,get_time()); } if (p->die_time && (get_time() > p->die_time)){ particle_kill(p); } if (particle_is_camera(p)){ camera_set_zone(p->box.pos,0.05,0.04); } if (particle_is_dead(p) && p->die){ p->die(p); } } }
void particle_simple_move(particle_t* self) { float dtime = get_dtime_sec(); self->v = vec_add(self->v, vec_scale(self->a, dtime)); self->box.pos = vec_add(self->box.pos, vec_scale(self->v, dtime)); }