diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-01-06 15:00:53 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-01-06 15:00:53 +0300 |
commit | 90fe04965b1d8f1ff8362a854763fe0f65beb70e (patch) | |
tree | d1e129c7b199da2cc24af43caa12a920bf231913 /source/blender/editors/physics/particle_edit.c | |
parent | 75f190bde8f60f8c091f84169620e3e814386379 (diff) |
Particle edit: optimization for combing, was computing hair space too often,
and fix some warnings.
Diffstat (limited to 'source/blender/editors/physics/particle_edit.c')
-rw-r--r-- | source/blender/editors/physics/particle_edit.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 101ec225cb2..8a73dc0e050 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -588,25 +588,34 @@ static void foreach_mouse_hit_key(PEData *data, ForKeyMatFunc func, int selected unit_m4(mat); LOOP_VISIBLE_POINTS { - if(edit->psys && !(edit->psys->flag & PSYS_GLOBAL_HAIR)) { - psys_mat_hair_to_global(data->ob, psmd->dm, psys->part->from, psys->particles + p, mat); - invert_m4_m4(imat,mat); - } - if(pset->selectmode==SCE_SELECT_END) { /* only do end keys */ key= point->keys + point->totkey-1; - if(selected==0 || key->flag & PEK_SELECT) - if(key_inside_circle(data, data->rad, KEY_WCO, &data->dist)) + if(selected==0 || key->flag & PEK_SELECT) { + if(key_inside_circle(data, data->rad, KEY_WCO, &data->dist)) { + if(edit->psys && !(edit->psys->flag & PSYS_GLOBAL_HAIR)) { + psys_mat_hair_to_global(data->ob, psmd->dm, psys->part->from, psys->particles + p, mat); + invert_m4_m4(imat,mat); + } + func(data, mat, imat, p, point->totkey-1, key); + } + } } else { /* do all keys */ LOOP_VISIBLE_KEYS { - if(selected==0 || key->flag & PEK_SELECT) - if(key_inside_circle(data, data->rad, KEY_WCO, &data->dist)) + if(selected==0 || key->flag & PEK_SELECT) { + if(key_inside_circle(data, data->rad, KEY_WCO, &data->dist)) { + if(edit->psys && !(edit->psys->flag & PSYS_GLOBAL_HAIR)) { + psys_mat_hair_to_global(data->ob, psmd->dm, psys->part->from, psys->particles + p, mat); + invert_m4_m4(imat,mat); + } + func(data, mat, imat, p, k, key); + } + } } } } @@ -2008,7 +2017,6 @@ static void rekey_particle_to_time(Scene *scene, Object *ob, int pa_index, float static int remove_tagged_particles(Scene *scene, Object *ob, ParticleSystem *psys, int mirror) { PTCacheEdit *edit = psys->edit; - ParticleEditSettings *pset= PE_settings(scene); ParticleData *pa, *npa=0, *new_pars=0; POINT_P; PTCacheEditPoint *npoint=0, *new_points=0; @@ -2079,7 +2087,6 @@ static int remove_tagged_particles(Scene *scene, Object *ob, ParticleSystem *psy static void remove_tagged_keys(Scene *scene, Object *ob, ParticleSystem *psys) { PTCacheEdit *edit= psys->edit; - ParticleEditSettings *pset= PE_settings(scene); ParticleData *pa; HairKey *hkey, *nhkey, *new_hkeys=0; POINT_P; KEY_K; @@ -2270,7 +2277,6 @@ static int remove_doubles_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Object *ob= CTX_data_active_object(C); - ParticleEditSettings *pset=PE_settings(scene); PTCacheEdit *edit= PE_get_current(scene, ob); ParticleSystem *psys = edit->psys; ParticleSystemModifierData *psmd; |