static void rekey_element_to_time(int index, float path_time) { Object *ob = OBACT; ParticleSystem *psys = PE_get_current(ob); ParticleEdit *edit=0; ParticleData *pa; ParticleKey state; HairKey *new_keys, *key; ParticleEditKey *ekey; int k; float dval, sta; if(psys==0) return; edit = psys->edit; pa = psys->particles + index; pa->flag |= PARS_REKEY; key = new_keys = MEM_dupallocN(pa->hair); /* interpolate new keys from old ones (roots stay the same) */ for(k=1,key=key++; ktotkey; k++,key++) { state.time = path_time * (float)k / (float)pa->totkey; psys_get_particle_on_path(ob, psys, index, &state, 0); VECCOPY(key->co, state.co); }