Commit: cfbd605567f48229a923df382baf6db98fbafc61
Author: Bastien Montagne
Date:   Tue Jul 12 00:01:38 2016 +0200
Branches: blender2.8
https://developer.blender.org/rBcfbd605567f48229a923df382baf6db98fbafc61

Merge branch 'master' into blender2.8

Conflicts:
        intern/cycles/blender/addon/ui.py
        source/blender/blenkernel/BKE_particle.h
        source/blender/blenkernel/intern/dynamicpaint.c
        source/blender/blenkernel/intern/library.c
        source/blender/blenkernel/intern/object.c
        source/blender/blenkernel/intern/particle.c
        source/blender/blenkernel/intern/particle_distribute.c
        source/blender/blenkernel/intern/texture.c
        source/blender/editors/object/object_add.c
        source/blender/editors/object/object_relations.c
        source/blender/editors/physics/particle_edit.c
        source/blender/editors/physics/particle_object.c
        source/blender/editors/transform/transform_snap_object.c

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



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

diff --cc source/blender/blenkernel/intern/library.c
index 5f7bded,869e024..978f1ac
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@@ -323,17 -333,20 +332,17 @@@ bool id_make_local(Main *bmain, ID *id
                case ID_GR:
                        return false; /* not implemented */
                case ID_AR:
-                       if (!test) BKE_armature_make_local((bArmature *)id);
+                       if (!test) BKE_armature_make_local(bmain, (bArmature 
*)id);
                        return true;
                case ID_AC:
-                       if (!test) BKE_action_make_local((bAction *)id);
+                       if (!test) BKE_action_make_local(bmain, (bAction *)id);
                        return true;
                case ID_NT:
-                       if (!test) ntreeMakeLocal((bNodeTree *)id, true);
+                       if (!test) ntreeMakeLocal(bmain, (bNodeTree *)id, true);
                        return true;
                case ID_BR:
-                       if (!test) BKE_brush_make_local((Brush *)id);
+                       if (!test) BKE_brush_make_local(bmain, (Brush *)id);
                        return true;
 -              case ID_PA:
 -                      if (!test) BKE_particlesettings_make_local(bmain, 
(ParticleSettings *)id);
 -                      return true;
                case ID_WM:
                        return false; /* can't be linked */
                case ID_GD:
@@@ -412,20 -427,23 +423,20 @@@ bool id_copy(Main *bmain, ID *id, ID **
                case ID_SO:
                        return false;  /* not implemented */
                case ID_GR:
-                       if (!test) *newid = (ID *)BKE_group_copy((Group *)id);
+                       if (!test) *newid = (ID *)BKE_group_copy(bmain, (Group 
*)id);
                        return true;
                case ID_AR:
-                       if (!test) *newid = (ID *)BKE_armature_copy((bArmature 
*)id);
+                       if (!test) *newid = (ID *)BKE_armature_copy(bmain, 
(bArmature *)id);
                        return true;
                case ID_AC:
-                       if (!test) *newid = (ID *)BKE_action_copy((bAction 
*)id);
+                       if (!test) *newid = (ID *)BKE_action_copy(bmain, 
(bAction *)id);
                        return true;
                case ID_NT:
-                       if (!test) *newid = (ID *)ntreeCopyTree((bNodeTree 
*)id);
+                       if (!test) *newid = (ID *)ntreeCopyTree(bmain, 
(bNodeTree *)id);
                        return true;
                case ID_BR:
-                       if (!test) *newid = (ID *)BKE_brush_copy((Brush *)id);
+                       if (!test) *newid = (ID *)BKE_brush_copy(bmain, (Brush 
*)id);
                        return true;
 -              case ID_PA:
 -                      if (!test) *newid = (ID 
*)BKE_particlesettings_copy(bmain, (ParticleSettings *)id);
 -                      return true;
                case ID_WM:
                        return false;  /* can't be copied from here */
                case ID_GD:
diff --cc source/blender/blenkernel/intern/library_query.c
index 7cb5bfd,f86f5fa..b623cec
--- a/source/blender/blenkernel/intern/library_query.c
+++ b/source/blender/blenkernel/intern/library_query.c
@@@ -71,7 -72,9 +72,8 @@@
  #include "BKE_fcurve.h"
  #include "BKE_library.h"
  #include "BKE_library_query.h"
+ #include "BKE_main.h"
  #include "BKE_modifier.h"
 -#include "BKE_particle.h"
  #include "BKE_rigidbody.h"
  #include "BKE_sca.h"
  #include "BKE_sequencer.h"
@@@ -399,8 -417,14 +403,13 @@@ void BKE_library_foreach_ID_link(ID *id
                        case ID_OB:
                        {
                                Object *object = (Object *) id;
 -                              ParticleSystem *psys;
  
+                               /* Object is special, proxies make things 
hard... */
+                               const int data_cd_flag = data.cd_flag;
+                               const int proxy_cd_flag = (object->proxy || 
object->proxy_group) ? IDWALK_INDIRECT_USAGE : 0;
+ 
                                /* object data special case */
+                               data.cd_flag |= proxy_cd_flag;
                                if (object->type == OB_EMPTY) {
                                        /* empty can have NULL or Image */
                                        CALLBACK_INVOKE_ID(object->data, 
IDWALK_USER);
@@@ -743,6 -854,82 +785,80 @@@ void BKE_library_update_ID_link_user(I
        }
  }
  
+ /**
+  * Say whether given \a id_type_owner can use (in any way) a datablock of \a 
id_type_used.
+  */
+ /* This is a 'simplified' abstract version of BKE_library_foreach_ID_link() 
above, quite useful to reduce
+  * useless ietrations in some cases. */
+ bool BKE_library_idtype_can_use_idtype(const short id_type_owner, const short 
id_type_used)
+ {
+       if (id_type_used == ID_AC) {
+               return id_type_can_have_animdata(id_type_owner);
+       }
+ 
+       switch (id_type_owner) {
+               case ID_LI:
+                       return ELEM(id_type_used, ID_LI);
+               case ID_SCE:
+                       return (ELEM(id_type_used, ID_OB, ID_WO, ID_SCE, ID_MC, 
ID_MA, ID_GR, ID_TXT,
+                                                  ID_LS, ID_MSK, ID_SO, ID_GD, 
ID_BR, ID_PAL, ID_IM, ID_NT) ||
+                               BKE_library_idtype_can_use_idtype(ID_NT, 
id_type_used));
+               case ID_OB:
+                       /* Could be the following, but simpler to just always 
say 'yes' here. */
+ #if 0
+                       return ELEM(id_type_used, ID_ME, ID_CU, ID_MB, ID_LT, 
ID_SPK, ID_AR, ID_LA, ID_CA,  /* obdata */
 -                                                ID_OB, ID_MA, ID_GD, ID_GR, 
ID_TE, ID_PA, ID_TXT, ID_SO, ID_MC, ID_IM, ID_AC
++                                                ID_OB, ID_MA, ID_GD, ID_GR, 
ID_TE, ID_TXT, ID_SO, ID_MC, ID_IM, ID_AC
+                                                 /* + constraints, modifiers 
and game logic ID types... */);
+ #else
+                       return true;
+ #endif
+               case ID_ME:
+                       return ELEM(id_type_used, ID_ME, ID_KE, ID_MA);
+               case ID_CU:
+                       return ELEM(id_type_used, ID_OB, ID_KE, ID_MA, ID_VF);
+               case ID_MB:
+                       return ELEM(id_type_used, ID_MA);
+               case ID_MA:
+                       return (ELEM(id_type_used, ID_TE, ID_GR) || 
BKE_library_idtype_can_use_idtype(ID_NT, id_type_used));
+               case ID_TE:
+                       return (ELEM(id_type_used, ID_IM, ID_OB) || 
BKE_library_idtype_can_use_idtype(ID_NT, id_type_used));
+               case ID_LT:
+                       return ELEM(id_type_used, ID_KE);
+               case ID_LA:
+                       return (ELEM(id_type_used, ID_TE) || 
BKE_library_idtype_can_use_idtype(ID_NT, id_type_used));
+               case ID_CA:
+                       return ELEM(id_type_used, ID_OB);
+               case ID_KE:
+                       return ELEM(id_type_used, ID_ME, ID_CU, ID_LT);  /* 
Warning! key->from, could be more types in future? */
+               case ID_SCR:
+                       return ELEM(id_type_used, ID_SCE);
+               case ID_WO:
+                       return (ELEM(id_type_used, ID_TE) || 
BKE_library_idtype_can_use_idtype(ID_NT, id_type_used));
+               case ID_SPK:
+                       return ELEM(id_type_used, ID_SO);
+               case ID_GR:
+                       return ELEM(id_type_used, ID_OB);
+               case ID_NT:
+                       /* Could be the following, but node.id has no type 
restriction... */
+ #if 0
+                       return ELEM(id_type_used, ID_GD /* + node.id types... 
*/);
+ #else
+                       return true;
+ #endif
+               case ID_BR:
+                       return ELEM(id_type_used, ID_BR, ID_IM, ID_PC, ID_TE);
 -              case ID_PA:
 -                      return ELEM(id_type_used, ID_OB, ID_GR, ID_TE);
+               case ID_MC:
+                       return ELEM(id_type_used, ID_GD, ID_IM);
+               case ID_MSK:
+                       return ELEM(id_type_used, ID_MC);  /* WARNING! 
mask->parent.id, not typed. */
+               case ID_LS:
+                       return (ELEM(id_type_used, ID_TE, ID_OB) || 
BKE_library_idtype_can_use_idtype(ID_NT, id_type_used));
+               default:
+                       return false;
+       }
+ }
+ 
+ 
  /* ***** ID users iterator. ***** */
  typedef struct IDUsersIter {
        ID *id;
diff --cc source/blender/editors/interface/interface_templates.c
index cf3a50d,d91bd49..7cc7b54
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@@ -939,9 -974,9 +939,9 @@@ static uiLayout *draw_modifier
                        }
                        
                        UI_block_lock_clear(block);
-                       UI_block_lock_set(block, ob && ob->id.lib, 
ERROR_LIBDATA_MESSAGE);
+                       UI_block_lock_set(block, ob && 
ID_IS_LINKED_DATABLOCK(ob), ERROR_LIBDATA_MESSAGE);
                        
 -                      if (!ELEM(md->type, eModifierType_Fluidsim, 
eModifierType_Softbody, eModifierType_ParticleSystem,
 +                      if (!ELEM(md->type, eModifierType_Fluidsim, 
eModifierType_Softbody,
                                   eModifierType_Cloth, eModifierType_Smoke))
                        {
                                uiItemO(row, 
CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, "Copy"), ICON_NONE,
diff --cc source/blender/editors/transform/transform_snap_object.c
index af465d7,59dfe18..ed6d49d
--- a/source/blender/editors/transform/transform_snap_object.c
+++ b/source/blender/editors/transform/transform_snap_object.c
@@@ -1324,9 -1450,34 +1450,18 @@@ static bool snapObjectsRay
          ListBase *r_hit_list)
  {
        bool retval = false;
+ 
+       float dvec[3];
+       sub_v3_v3v3(dvec, ray_start, ray_origin);
+ 
+       const float ray_depth_range[2] = {
+               dot_v3v3(dvec, ray_normal),
+               *ray_depth,
+       };
+ 
        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, ob_index++,
 -                      false, snap_to,
 -                      ray_origin, ray_start, ray_normal, ray_depth_range,
 -                      ray_depth, dist_to_ray_sq,
 -                      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) {
diff --cc source/blender/gpu/GPU_material.h
index 3413ee0,0d92d22..202e5fd
--- a/source/blender/gpu/GPU_material.h
+++ b/source/blender/gpu/GPU_material.h
@@@ -332,7 -337,16 +332,8 @@@ void GPU_mist_update_enable(short enabl
  void GPU_mist_update_values(int type, float start, float dist, float inten, 
float color[3]);
  void GPU_horizon_update_color(float color[3]);
  void GPU_ambient_update_color(float color[3]);
+ void GPU_zenith_update_color(float color[3]);
  
 -struct GPUParticleInfo
 -{
 -      float scalprops[4];
 -      float location[3];
 -      float velocity[3];
 -      float angular_velocity[3];
 -};
 -
  #ifdef WITH_OPENSUBDIV
  struct DerivedMesh;
  void GPU_material_update_fvar_offset(GPUMaterial *gpu_material,

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to