diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-05-08 17:00:52 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-05-08 17:00:52 +0400 |
commit | 562ed2b42e7ad8298bd5f041124ed2208c3a7a7c (patch) | |
tree | c006fdb389d4596ffa6eddb6ac0ffc670cb192bf /source/blender/editors/space_view3d/view3d_iterators.c | |
parent | a4634bfe6725be8c1d56588d2f1660ee08cb11ad (diff) |
add in asserts when rv3d->viewmatob, rv3d->persmatob are not initialized.
This is often hard to spot since in many cases it works correctly even
when not initialized but may still fail in other situations.
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_iterators.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_iterators.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/source/blender/editors/space_view3d/view3d_iterators.c b/source/blender/editors/space_view3d/view3d_iterators.c index 81e890c37ee..9e310c84bd0 100644 --- a/source/blender/editors/space_view3d/view3d_iterators.c +++ b/source/blender/editors/space_view3d/view3d_iterators.c @@ -112,6 +112,8 @@ void meshobject_foreachScreenVert( foreachScreenObjectVert_userData data; DerivedMesh *dm = mesh_get_derived_deform(vc->scene, vc->obact, CD_MASK_BAREMESH); + ED_view3d_check_mats_rv3d(vc->rv3d); + data.vc = *vc; data.func = func; data.userData = userData; @@ -151,6 +153,8 @@ void mesh_foreachScreenVert( foreachScreenVert_userData data; DerivedMesh *dm = editbmesh_get_derived_cage(vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH); + ED_view3d_check_mats_rv3d(vc->rv3d); + data.vc = *vc; data.func = func; data.userData = userData; @@ -203,6 +207,8 @@ void mesh_foreachScreenEdge( foreachScreenEdge_userData data; DerivedMesh *dm = editbmesh_get_derived_cage(vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH); + ED_view3d_check_mats_rv3d(vc->rv3d); + data.vc = *vc; data.win_rect.xmin = 0; @@ -247,13 +253,13 @@ void mesh_foreachScreenFace( foreachScreenFace_userData data; DerivedMesh *dm = editbmesh_get_derived_cage(vc->scene, vc->obedit, vc->em, CD_MASK_BAREMESH); + ED_view3d_check_mats_rv3d(vc->rv3d); + data.vc = *vc; data.func = func; data.userData = userData; data.clip_flag = clip_flag; - ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); - EDBM_index_arrays_ensure(vc->em, BM_FACE); dm->foreachMappedFaceCenter(dm, mesh_foreachScreenFace__mapFunc, &data); @@ -272,6 +278,8 @@ void nurbs_foreachScreenVert( int i; ListBase *nurbs = BKE_curve_editNurbs_get(cu); + ED_view3d_check_mats_rv3d(vc->rv3d); + if (clip_flag & V3D_PROJ_TEST_CLIP_BB) { ED_view3d_clipping_local(vc->rv3d, vc->obedit->obmat); /* for local clipping lookups */ } @@ -339,6 +347,8 @@ void mball_foreachScreenElem( MetaBall *mb = (MetaBall *)vc->obedit->data; MetaElem *ml; + ED_view3d_check_mats_rv3d(vc->rv3d); + for (ml = mb->editelems->first; ml; ml = ml->next) { float screen_co[2]; if (ED_view3d_project_float_object(vc->ar, &ml->x, screen_co, clip_flag) == V3D_PROJ_RET_OK) { @@ -361,6 +371,8 @@ void lattice_foreachScreenVert( float *co = dl ? dl->verts : NULL; int i, N = lt->editlatt->latt->pntsu * lt->editlatt->latt->pntsv * lt->editlatt->latt->pntsw; + ED_view3d_check_mats_rv3d(vc->rv3d); + if (clip_flag & V3D_PROJ_TEST_CLIP_BB) { ED_view3d_clipping_local(vc->rv3d, obedit->obmat); /* for local clipping lookups */ } @@ -386,6 +398,8 @@ void armature_foreachScreenBone( bArmature *arm = vc->obedit->data; EditBone *ebone; + ED_view3d_check_mats_rv3d(vc->rv3d); + for (ebone = arm->edbo->first; ebone; ebone = ebone->next) { if (EBONE_VISIBLE(arm, ebone)) { float screen_co_a[2], screen_co_b[2]; @@ -429,6 +443,8 @@ void pose_foreachScreenBone( bPose *pose = vc->obact->pose; bPoseChannel *pchan; + ED_view3d_check_mats_rv3d(vc->rv3d); + for (pchan = pose->chanbase.first; pchan; pchan = pchan->next) { if (PBONE_VISIBLE(arm, pchan->bone)) { float screen_co_a[2], screen_co_b[2]; |