Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-05-08 17:00:52 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-05-08 17:00:52 +0400
commit562ed2b42e7ad8298bd5f041124ed2208c3a7a7c (patch)
treec006fdb389d4596ffa6eddb6ac0ffc670cb192bf /source/blender/editors/space_view3d/view3d_iterators.c
parenta4634bfe6725be8c1d56588d2f1660ee08cb11ad (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.c20
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];