[Bf-blender-cvs] [52dd5497974] new-object-types: Merge branch 'master' into new-object-types

Brecht Van Lommel noreply at git.blender.org
Fri Mar 6 15:22:50 CET 2020


Commit: 52dd54979740fd51a2cd8ddf83c5015538b071ce
Author: Brecht Van Lommel
Date:   Fri Mar 6 15:06:47 2020 +0100
Branches: new-object-types
https://developer.blender.org/rB52dd54979740fd51a2cd8ddf83c5015538b071ce

Merge branch 'master' into new-object-types

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



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

diff --cc source/blender/blenkernel/CMakeLists.txt
index 6baeb11ae3b,87ac82aaa55..3248917b79d
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@@ -297,7 -293,9 +298,8 @@@ set(SR
    BKE_icons.h
    BKE_idcode.h
    BKE_idprop.h
+   BKE_idtype.h
    BKE_image.h
 -  BKE_image_save.h
    BKE_ipo.h
    BKE_kelvinlet.h
    BKE_key.h
diff --cc source/blender/blenkernel/intern/customdata.c
index 32ba1cd954a,33707d3f18d..117c96e2932
--- a/source/blender/blenkernel/intern/customdata.c
+++ b/source/blender/blenkernel/intern/customdata.c
@@@ -1623,14 -1621,8 +1623,16 @@@ static const LayerTypeInfo LAYERTYPEINF
      {sizeof(short[4][3]), "", 0, NULL, NULL, NULL, NULL, layerSwap_flnor, NULL},
      /* 41: CD_CUSTOMLOOPNORMAL */
      {sizeof(short[2]), "vec2s", 1, NULL, NULL, NULL, NULL, NULL, NULL},
-     /* 42: CD_LOCATION */
+     /* 42: CD_SCULPT_FACE_SETS */
+     {sizeof(int), "", 0, NULL, NULL, NULL, NULL, NULL, NULL},
++    /* 43: CD_LOCATION */
 +    {sizeof(float[3]), "vec3f", 1, NULL, NULL, NULL, NULL, NULL, NULL},
-     /* 43: CD_RADIUS */
++    /* 44: CD_RADIUS */
 +    {sizeof(float), "MFloatProperty", 1, NULL, NULL, NULL, NULL, NULL, NULL},
-     /* 44: CD_HAIRCURVE */
++    /* 45: CD_HAIRCURVE */
 +    {sizeof(HairCurve), "HairCurve", 1, NULL, NULL, NULL, NULL, NULL, NULL},
-     /* 45: CD_HAIR_MAPPING */
++    /* 46: CD_HAIR_MAPPING */
 +    {sizeof(HairMapping), "HairMapping", 1, NULL, NULL, NULL, NULL, NULL, NULL},
  };
  
  static const char *LAYERTYPENAMES[CD_NUMTYPES] = {
@@@ -1675,13 -1667,10 +1677,14 @@@
      "CDMVertSkin",
      /* 37-38 */ "CDFreestyleEdge",
      "CDFreestyleFace",
--    /* 39-41 */ "CDMLoopTangent",
++    /* 39-42 */ "CDMLoopTangent",
      "CDTessLoopNormal",
      "CDCustomLoopNormal",
-     /* 42-45 */ "CDHairPoint",
+     "CDSculptFaceGroups",
++    /* 43-46 */ "CDHairPoint",
 +    "CDHairCurve",
 +    "CDHairMapping",
 +    "CDPoint",
  };
  
  const CustomData_MeshMasks CD_MASK_BAREMESH = {
diff --cc source/blender/blenkernel/intern/lib_id.c
index 14b9108e414,b092029c538..9e7ade0a461
--- a/source/blender/blenkernel/intern/lib_id.c
+++ b/source/blender/blenkernel/intern/lib_id.c
@@@ -92,9 -89,9 +92,10 @@@
  #include "BKE_font.h"
  #include "BKE_global.h"
  #include "BKE_gpencil.h"
 +#include "BKE_hair.h"
  #include "BKE_idcode.h"
  #include "BKE_idprop.h"
+ #include "BKE_idtype.h"
  #include "BKE_image.h"
  #include "BKE_key.h"
  #include "BKE_light.h"
@@@ -561,24 -599,9 +605,24 @@@ bool BKE_lib_id_make_local(Main *bmain
        return true;
      case ID_CF:
        if (!test) {
-         BKE_cachefile_make_local(bmain, (CacheFile *)id, lib_local);
+         BKE_cachefile_make_local(bmain, (CacheFile *)id, flags);
        }
        return true;
 +    case ID_HA:
 +      if (!test) {
 +        BKE_hair_make_local(bmain, (Hair *)id, lib_local);
 +      }
 +      return true;
 +    case ID_PT:
 +      if (!test) {
 +        BKE_pointcloud_make_local(bmain, (PointCloud *)id, lib_local);
 +      }
 +      return true;
 +    case ID_VO:
 +      if (!test) {
 +        BKE_volume_make_local(bmain, (Volume *)id, lib_local);
 +      }
 +      return true;
      case ID_WS:
      case ID_SCR:
        /* A bit special: can be appended but not linked. Return false
@@@ -670,124 -693,131 +714,140 @@@ bool BKE_id_copy_ex(Main *bmain, const 
    if (id == NULL) {
      return false;
    }
-   if (!BKE_id_copy_is_allowed(id)) {
-     return false;
+ 
+   const IDTypeInfo *idtype_info = BKE_idtype_get_info_from_id(id);
+ 
+   if (idtype_info != NULL) {
+     if ((idtype_info->flags & IDTYPE_FLAGS_NO_COPY) != 0) {
+       return false;
+     }
+ 
+     BKE_libblock_copy_ex(bmain, id, r_newid, flag);
+ 
+     if (idtype_info->copy_data != NULL) {
+       idtype_info->copy_data(bmain, *r_newid, id, flag);
+     }
    }
+   else {
+     if (!BKE_id_copy_is_allowed(id)) {
+       return false;
+     }
  
-   BKE_libblock_copy_ex(bmain, id, r_newid, flag);
+     BKE_libblock_copy_ex(bmain, id, r_newid, flag);
  
-   switch ((ID_Type)GS(id->name)) {
-     case ID_SCE:
-       BKE_scene_copy_data(bmain, (Scene *)*r_newid, (Scene *)id, flag);
-       break;
-     case ID_OB:
-       BKE_object_copy_data(bmain, (Object *)*r_newid, (Object *)id, flag);
-       break;
-     case ID_ME:
-       BKE_mesh_copy_data(bmain, (Mesh *)*r_newid, (Mesh *)id, flag);
-       break;
-     case ID_CU:
-       BKE_curve_copy_data(bmain, (Curve *)*r_newid, (Curve *)id, flag);
-       break;
-     case ID_MB:
-       BKE_mball_copy_data(bmain, (MetaBall *)*r_newid, (MetaBall *)id, flag);
-       break;
-     case ID_MA:
-       BKE_material_copy_data(bmain, (Material *)*r_newid, (Material *)id, flag);
-       break;
-     case ID_TE:
-       BKE_texture_copy_data(bmain, (Tex *)*r_newid, (Tex *)id, flag);
-       break;
-     case ID_IM:
-       BKE_image_copy_data(bmain, (Image *)*r_newid, (Image *)id, flag);
-       break;
-     case ID_LT:
-       BKE_lattice_copy_data(bmain, (Lattice *)*r_newid, (Lattice *)id, flag);
-       break;
-     case ID_LA:
-       BKE_light_copy_data(bmain, (Light *)*r_newid, (Light *)id, flag);
-       break;
-     case ID_SPK:
-       BKE_speaker_copy_data(bmain, (Speaker *)*r_newid, (Speaker *)id, flag);
-       break;
-     case ID_LP:
-       BKE_lightprobe_copy_data(bmain, (LightProbe *)*r_newid, (LightProbe *)id, flag);
-       break;
-     case ID_CA:
-       BKE_camera_copy_data(bmain, (Camera *)*r_newid, (Camera *)id, flag);
-       break;
-     case ID_KE:
-       BKE_key_copy_data(bmain, (Key *)*r_newid, (Key *)id, flag);
-       break;
-     case ID_WO:
-       BKE_world_copy_data(bmain, (World *)*r_newid, (World *)id, flag);
-       break;
-     case ID_TXT:
-       BKE_text_copy_data(bmain, (Text *)*r_newid, (Text *)id, flag);
-       break;
-     case ID_GR:
-       BKE_collection_copy_data(bmain, (Collection *)*r_newid, (Collection *)id, flag);
-       break;
-     case ID_AR:
-       BKE_armature_copy_data(bmain, (bArmature *)*r_newid, (bArmature *)id, flag);
-       break;
-     case ID_AC:
-       BKE_action_copy_data(bmain, (bAction *)*r_newid, (bAction *)id, flag);
-       break;
-     case ID_NT:
-       BKE_node_tree_copy_data(bmain, (bNodeTree *)*r_newid, (bNodeTree *)id, flag);
-       break;
-     case ID_BR:
-       BKE_brush_copy_data(bmain, (Brush *)*r_newid, (Brush *)id, flag);
-       break;
-     case ID_PA:
-       BKE_particlesettings_copy_data(
-           bmain, (ParticleSettings *)*r_newid, (ParticleSettings *)id, flag);
-       break;
-     case ID_GD:
-       BKE_gpencil_copy_data((bGPdata *)*r_newid, (bGPdata *)id, flag);
-       break;
-     case ID_MC:
-       BKE_movieclip_copy_data(bmain, (MovieClip *)*r_newid, (MovieClip *)id, flag);
-       break;
-     case ID_MSK:
-       BKE_mask_copy_data(bmain, (Mask *)*r_newid, (Mask *)id, flag);
-       break;
-     case ID_LS:
-       BKE_linestyle_copy_data(
-           bmain, (FreestyleLineStyle *)*r_newid, (FreestyleLineStyle *)id, flag);
-       break;
-     case ID_PAL:
-       BKE_palette_copy_data(bmain, (Palette *)*r_newid, (Palette *)id, flag);
-       break;
-     case ID_PC:
-       BKE_paint_curve_copy_data(bmain, (PaintCurve *)*r_newid, (PaintCurve *)id, flag);
-       break;
-     case ID_CF:
-       BKE_cachefile_copy_data(bmain, (CacheFile *)*r_newid, (CacheFile *)id, flag);
-       break;
-     case ID_SO:
-       BKE_sound_copy_data(bmain, (bSound *)*r_newid, (bSound *)id, flag);
-       break;
-     case ID_VF:
-       BKE_vfont_copy_data(bmain, (VFont *)*r_newid, (VFont *)id, flag);
-       break;
-     case ID_HA:
-       BKE_hair_copy_data(bmain, (Hair *)*r_newid, (Hair *)id, flag);
-       break;
-     case ID_PT:
-       BKE_pointcloud_copy_data(bmain, (PointCloud *)*r_newid, (PointCloud *)id, flag);
-       break;
-     case ID_VO:
-       BKE_volume_copy_data(bmain, (Volume *)*r_newid, (Volume *)id, flag);
-       break;
-     case ID_LI:
-     case ID_SCR:
-     case ID_WM:
-     case ID_WS:
-     case ID_IP:
-       BLI_assert(0); /* Should have been rejected at start of function! */
-       break;
+     switch ((ID_Type)GS(id->name)) {
+       case ID_SCE:
+         BLI_assert(0);
+         break;
+       case ID_OB:
+         BLI_assert(0);
+         break;
+       case ID_ME:
+         BKE_mesh_copy_data(bmain, (Mesh *)*r_newid, (Mesh *)id, flag);
+         break;
+       case ID_CU:
+         BKE_curve_copy_data(bmain, (Curve *)*r_newid, (Curve *)id, flag);
+         break;
+       case ID_MB:
+         BKE_mball_copy_data(bmain, (MetaBall *)*r_newid, (MetaBall *)id, flag);
+         break;
+       case ID_MA:
+         BKE_material_copy_data(bmain, (Material *)*r_newid, (Material *)id, flag);
+         break;
+       case ID_TE:
+         BKE_texture_copy_data(bmain, (Tex *)*r_newid, (Tex *)id, flag);
+         break;
+       case ID_IM:
+         BKE_image_copy_data(bmain, (Image *)*r_newid, (Image *)id, flag);
+         break;
+       case ID_LT:
+         BKE_lattice_copy_data(bmain, (Lattice *)*r_newid, (Lattice *)id, flag);
+         break;
+       case ID_LA:
+         BLI_assert(0);
+         break;
+       case ID_SPK:
+         BKE_speaker_copy_data(bmain, (Speaker *)*r_newid, (Speaker *)id, flag);
+         break;
+       case ID_LP:
+         BLI_assert(0);
+         break;
+       case ID_CA:
+         BLI_assert(0);
+         break;
+       case ID_KE:
+         BLI_assert(0);
+         break;
+       case ID_WO:
+         BLI_assert(0);
+         break;
+       case ID_TXT:
+         BKE_text_copy_data(bmain, (Text *)*r_newid, (Text *)id, flag);
+         break;
+       case ID_GR:
+         BKE_collection_copy_data(bmain, (Collection *)*r_newid, (Collection *)id, flag);
+         break;
+       case ID_AR:
+         BKE_armature_copy_data(bmain, (bArmature *)*r_newid, (bArmature *)id, flag);
+         break;
+       case ID_AC:
+         BKE_action_copy_data(bmain, (bAction *)*r_newid, (bAction *)id, flag);
+         break;
+       case ID_NT:
+         BKE_node_tree_copy_data(bmain, (bNodeTree *)*r_newid, (bNodeTree *)id, flag);
+         break;
+       case ID_BR:
+         BLI_assert(0);
+         break;
+       case ID_PA:
+         BKE_pa

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list