[Bf-blender-cvs] [f4155d3778b] blender2.8: Merge branch 'master' of git at git.blender.org:blender.git into blender2.8
mano-wii
noreply at git.blender.org
Fri Jul 14 01:12:28 CEST 2017
Commit: f4155d3778ba883566eeb87d16218c4c275ffc04
Author: mano-wii
Date: Thu Jul 13 20:12:17 2017 -0300
Branches: blender2.8
https://developer.blender.org/rBf4155d3778ba883566eeb87d16218c4c275ffc04
Merge branch 'master' of git at git.blender.org:blender.git into blender2.8
# Conflicts:
# source/blender/editors/transform/transform_snap_object.c
===================================================================
===================================================================
diff --cc source/blender/editors/transform/transform_snap_object.c
index de556d52d25,85833f54da6..0d63bae93e9
--- a/source/blender/editors/transform/transform_snap_object.c
+++ b/source/blender/editors/transform/transform_snap_object.c
@@@ -139,87 -138,44 +139,43 @@@ struct SnapObjectContext
/** Common utilities
* \{ */
- struct SnapObject {
- struct SnapObject *next, *prev;
- bool use_obedit;
- struct Object *ob;
- float obmat[4][4];
- };
-
- /**
- * Walks through all objects in the scene to create the list of objets to snap.
- *
- * \param sctx: Snap context to store data.
- * \param snap_select : from enum SnapSelect.
- * \param use_object_edit_cage : Uses the coordinates of BMesh(if any) to do the snapping.
- *
- */
- static void create_object_list(
- SnapObjectContext *sctx,
- const SnapSelect snap_select, const bool use_object_edit_cage, ListBase *r_obj_list)
- {
- r_obj_list->first = r_obj_list->last = NULL;
-
- Object *obedit = use_object_edit_cage ? sctx->scene->obedit : NULL;
-
- bool ignore_object_selected = false, ignore_object_active = false;
- switch (snap_select) {
- case SNAP_ALL:
- break;
- case SNAP_NOT_SELECTED:
- ignore_object_selected = true;
- break;
- case SNAP_NOT_ACTIVE:
- ignore_object_active = true;
- break;
- }
-
- /* Need an exception for particle edit because the base is flagged with BA_HAS_RECALC_DATA
- * which makes the loop skip it, even the derived mesh will never change
- *
- * To solve that problem, we do it first as an exception.
- * */
- Base *base_act = sctx->scene_layer->basact;
- if (base_act && base_act->object && base_act->object->mode & OB_MODE_PARTICLE_EDIT) {
- struct SnapObject *sobj = MEM_mallocN(sizeof(*sobj), __func__);
- sobj->use_obedit = false;
- sobj->ob = base_act->object;
- copy_m4_m4(sobj->obmat, sobj->ob->obmat);
- BLI_addtail(r_obj_list, sobj);
- }
-
- for (Base *base = sctx->scene_layer->object_bases.first; base != NULL; base = base->next) {
- if ((BASE_VISIBLE_NEW(base)) && (base->flag_legacy & (BA_HAS_RECALC_OB | BA_HAS_RECALC_DATA)) == 0 &&
-
- !((ignore_object_selected && ((base->flag & BASE_SELECTED) || (base->flag_legacy & BA_WAS_SEL))) ||
- (ignore_object_active && base == base_act)))
- {
- Object *ob = base->object;
-
- if (ob->transflag & OB_DUPLI) {
- DupliObject *dupli_ob;
- ListBase *lb = object_duplilist(sctx->bmain->eval_ctx, sctx->scene, ob);
-
- for (dupli_ob = lb->first; dupli_ob; dupli_ob = dupli_ob->next) {
- struct SnapObject *sobj = MEM_mallocN(sizeof(*sobj), __func__);
- sobj->use_obedit = obedit && dupli_ob->ob->data == obedit->data;
- sobj->ob = sobj->use_obedit ? obedit : dupli_ob->ob;;
- copy_m4_m4(sobj->obmat, dupli_ob->mat);
- BLI_addtail(r_obj_list, sobj);
- }
-
- free_object_duplilist(lb);
- }
-
- struct SnapObject *sobj = MEM_mallocN(sizeof(*sobj), __func__);
- sobj->use_obedit = obedit && ob->data == obedit->data;
- sobj->ob = sobj->use_obedit ? obedit : ob;
- copy_m4_m4(sobj->obmat, sobj->ob->obmat);
- BLI_addtail(r_obj_list, sobj);
- }
- }
- }
+ #define ITER_SNAP_OBJECTS(use_obedit, ob, obmat, sctx, snap_select, obedit, CODE) \
+ Base *base_act = sctx->scene->basact;\
+ /* Need an exception for particle edit because the base is flagged with BA_HAS_RECALC_DATA\
+ * which makes the loop skip it, even the derived mesh will never change\
+ *\
+ * To solve that problem, we do it first as an exception.\
+ * */\
+ if (base_act && base_act->object && base_act->object->mode & OB_MODE_PARTICLE_EDIT) {\
+ use_obedit = false;\
+ ob = base_act->object;\
+ obmat = ob->obmat;\
+ CODE\
+ }\
+ for (Base *base = sctx->scene->base.first; base != NULL; base = base->next) {\
- if ((BASE_VISIBLE_BGMODE(sctx->v3d_data.v3d, sctx->scene, base)) &&\
- (base->flag & (BA_HAS_RECALC_OB | BA_HAS_RECALC_DATA)) == 0 &&\
- !((snap_select == SNAP_NOT_SELECTED && (base->flag & (SELECT | BA_WAS_SEL))) ||\
++ if ((BASE_VISIBLE_NEW(base)) && (base->flag_legacy & (BA_HAS_RECALC_OB | BA_HAS_RECALC_DATA)) == 0 &&\
++ !((snap_select == SNAP_NOT_SELECTED && ((base->flag & BASE_SELECTED) || (base->flag_legacy & BA_WAS_SEL))) ||\
+ (snap_select == SNAP_NOT_ACTIVE && base == base_act)))\
+ {\
+ Object *obj = base->object;\
+ if (ob->transflag & OB_DUPLI) {\
+ DupliObject *dupli_ob;\
+ ListBase *lb = object_duplilist(sctx->bmain->eval_ctx, sctx->scene, obj);\
+ for (dupli_ob = lb->first; dupli_ob; dupli_ob = dupli_ob->next) {\
+ use_obedit = obedit && dupli_ob->ob->data == obedit->data;;\
+ ob = use_obedit ? obedit : dupli_ob->ob;\
+ obmat = dupli_ob->mat;\
+ CODE\
+ }\
+ free_object_duplilist(lb);\
+ }\
+ use_obedit = obedit && ob->data == obedit->data;\
+ ob = use_obedit ? obedit : obj;\
+ obmat = ob->obmat;\
+ CODE\
+ }\
+ }\
/**
More information about the Bf-blender-cvs
mailing list