Commit: 24d29f2e500771257cc962e899630edaccb01cfe
Author: Bastien Montagne
Date:   Tue Jun 7 09:58:27 2016 +0200
Branches: blender2.8
https://developer.blender.org/rB24d29f2e500771257cc962e899630edaccb01cfe

Merge branch 'master' into blender2.8

Conflicts:
        source/blender/blenkernel/intern/particle.c
        source/blender/editors/transform/transform_snap_object.c

===================================================================



===================================================================

diff --cc source/blender/blenkernel/intern/effect.c
index af5089f,f06dd6f..787b915
--- a/source/blender/blenkernel/intern/effect.c
+++ b/source/blender/blenkernel/intern/effect.c
@@@ -487,9 -563,12 +487,11 @@@ int closest_point_on_surface(SurfaceMod
  }
  int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint 
*point, int real_velocity)
  {
 -      float cfra = eff->scene->r.cfra;
        int ret = 0;
  
-       if (eff->pd && eff->pd->shape==PFIELD_SHAPE_SURFACE && eff->surmd) {
+       /* In case surface object is in Edit mode when loading the .blend, 
surface modifier is never executed
+        * and bvhtree never built, see T48415. */
+       if (eff->pd && eff->pd->shape==PFIELD_SHAPE_SURFACE && eff->surmd && 
eff->surmd->bvhtree) {
                /* closest point in the object surface is an effector */
                float vec[3];
  
diff --cc source/blender/editors/include/ED_physics.h
index f18e778,fed842c..511dae0
--- a/source/blender/editors/include/ED_physics.h
+++ b/source/blender/editors/include/ED_physics.h
@@@ -39,13 -39,18 +39,13 @@@ struct wmKeyConfig
  struct Scene;
  struct Object;
  
 -/* particle_edit.c */
 -int PE_poll(struct bContext *C);
 -int PE_hair_poll(struct bContext *C);
 -int PE_poll_view3d(struct bContext *C);
 -
  /* rigidbody_object.c */
- bool ED_rigidbody_object_add(struct Scene *scene, struct Object *ob, int 
type, struct ReportList *reports);
- void ED_rigidbody_object_remove(struct Scene *scene, struct Object *ob);
+ bool ED_rigidbody_object_add(struct Main *bmain, struct Scene *scene, struct 
Object *ob, int type, struct ReportList *reports);
+ void ED_rigidbody_object_remove(struct Main *bmain, struct Scene *scene, 
struct Object *ob);
  
  /* rigidbody_constraint.c */
- bool ED_rigidbody_constraint_add(struct Scene *scene, struct Object *ob, int 
type, struct ReportList *reports);
- void ED_rigidbody_constraint_remove(struct Scene *scene, struct Object *ob);
+ bool ED_rigidbody_constraint_add(struct Main *bmain, struct Scene *scene, 
struct Object *ob, int type, struct ReportList *reports);
+ void ED_rigidbody_constraint_remove(struct Main *bmain, struct Scene *scene, 
struct Object *ob);
  
  /* operators */
  void ED_operatortypes_physics(void);
diff --cc source/blender/editors/transform/transform_snap.c
index cb981bc,e1cf743..2fc116b
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@@ -551,12 -553,18 +551,12 @@@ static void initSnappingMode(TransInfo 
                {
                        /* Exclude editmesh if using proportional edit */
                        if ((obedit->type == OB_MESH) && (t->flag & 
T_PROP_EDIT)) {
-                               t->tsnap.modeSelect = SNAP_NOT_OBEDIT;
+                               t->tsnap.modeSelect = SNAP_NOT_ACTIVE;
                        }
                        else {
-                               t->tsnap.modeSelect = t->tsnap.snap_self ? 
SNAP_ALL : SNAP_NOT_OBEDIT;
+                               t->tsnap.modeSelect = t->tsnap.snap_self ? 
SNAP_ALL : SNAP_NOT_ACTIVE;
                        }
                }
 -              /* Particles edit mode*/
 -              else if (t->tsnap.applySnap != NULL && // A snapping function 
actually exist
 -                       (obedit == NULL && base_act && base_act->object && 
base_act->object->mode & OB_MODE_PARTICLE_EDIT))
 -              {
 -                      t->tsnap.modeSelect = SNAP_ALL;
 -              }
                /* Object mode */
                else if (t->tsnap.applySnap != NULL && // A snapping function 
actually exist
                         (obedit == NULL) ) // Object Mode
diff --cc source/blender/editors/transform/transform_snap_object.c
index bf4a311,d748637..b11a2d5
--- a/source/blender/editors/transform/transform_snap_object.c
+++ b/source/blender/editors/transform/transform_snap_object.c
@@@ -1326,22 -1323,38 +1323,23 @@@ static bool snapObjectsRay
          Object **r_ob, float r_obmat[4][4],
          ListBase *r_hit_list)
  {
-       Base *base;
        bool retval = false;
-       bool snap_obedit_first = snap_select == SNAP_ALL && obedit;
        unsigned int ob_index = 0;
+       Object *obedit = use_object_edit_cage ? sctx->scene->obedit : NULL;
 -
 -      /* 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->basact;
 -      if (base_act && base_act->object && base_act->object->mode & 
OB_MODE_PARTICLE_EDIT) {
 -              Object *ob = base_act->object;
 -
 -              retval |= snapObject(
 -                      sctx, ob, ob->obmat, false, snap_to,
 -                      mval, dist_px, ob_index++,
 -                      ray_start, ray_normal, ray_origin, ray_depth,
 -                      r_loc, r_no, r_index, r_ob, r_obmat, r_hit_list);
 -      }
  
-       if (snap_obedit_first) {
-               Object *ob = obedit;
- 
-               retval |= snapObject(
-                       sctx, ob, ob->obmat, true, snap_to,
-                       mval, dist_px, ob_index++,
-                       ray_start, ray_normal, ray_origin, ray_depth,
-                       r_loc, r_no, r_index, r_ob, r_obmat, r_hit_list);
+       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;
        }
- 
-       for (base = sctx->scene->base.first; base != NULL; base = base->next) {
+       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 
&&

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to