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. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs