[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