[Bf-blender-cvs] [cf3e617913e] master: Refactor: use new api for direct linking scene and object
Jacques Lucke
noreply at git.blender.org
Sat Jun 6 13:56:09 CEST 2020
Commit: cf3e617913e6fa80389d89e2294c8fe45632a03b
Author: Jacques Lucke
Date: Sat Jun 6 13:55:59 2020 +0200
Branches: master
https://developer.blender.org/rBcf3e617913e6fa80389d89e2294c8fe45632a03b
Refactor: use new api for direct linking scene and object
===================================================================
M source/blender/blenloader/intern/readfile.c
===================================================================
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index c3561f15a92..1371d66f8ac 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -6108,7 +6108,7 @@ static void direct_link_shaderfxs(FileData *fd, ListBase *lb)
}
}
-static void direct_link_object(FileData *fd, Object *ob)
+static void direct_link_object(BlendDataReader *reader, Object *ob)
{
PartEff *paf;
@@ -6122,41 +6122,40 @@ static void direct_link_object(FileData *fd, Object *ob)
* Also when linking in a file don't allow edit and pose modes.
* See [#34776, #42780] for more information.
*/
- if (fd->memfile || (ob->id.tag & (LIB_TAG_EXTERN | LIB_TAG_INDIRECT))) {
+ if (reader->fd->memfile || (ob->id.tag & (LIB_TAG_EXTERN | LIB_TAG_INDIRECT))) {
ob->mode &= ~(OB_MODE_EDIT | OB_MODE_PARTICLE_EDIT);
- if (!fd->memfile) {
+ if (!reader->fd->memfile) {
ob->mode &= ~OB_MODE_POSE;
}
}
- ob->adt = newdataadr(fd, ob->adt);
- direct_link_animdata(fd, ob->adt);
+ BLO_read_data_address(reader, &ob->adt);
+ direct_link_animdata(reader->fd, ob->adt);
- ob->pose = newdataadr(fd, ob->pose);
- direct_link_pose(fd, ob->pose);
+ BLO_read_data_address(reader, &ob->pose);
+ direct_link_pose(reader->fd, ob->pose);
- ob->mpath = newdataadr(fd, ob->mpath);
+ BLO_read_data_address(reader, &ob->mpath);
if (ob->mpath) {
- direct_link_motionpath(fd, ob->mpath);
+ direct_link_motionpath(reader->fd, ob->mpath);
}
- link_list(fd, &ob->defbase);
- link_list(fd, &ob->fmaps);
+ BLO_read_list(reader, &ob->defbase);
+ BLO_read_list(reader, &ob->fmaps);
// XXX deprecated - old animation system <<<
- direct_link_nlastrips(fd, &ob->nlastrips);
- link_list(fd, &ob->constraintChannels);
+ direct_link_nlastrips(reader->fd, &ob->nlastrips);
+ BLO_read_list(reader, &ob->constraintChannels);
// >>> XXX deprecated - old animation system
- ob->mat = newdataadr(fd, ob->mat);
- test_pointer_array(fd, (void **)&ob->mat);
- ob->matbits = newdataadr(fd, ob->matbits);
+ BLO_read_pointer_array(reader, (void **)&ob->mat);
+ BLO_read_data_address(reader, &ob->matbits);
/* do it here, below old data gets converted */
- direct_link_modifiers(fd, &ob->modifiers, ob);
- direct_link_gpencil_modifiers(fd, &ob->greasepencil_modifiers);
- direct_link_shaderfxs(fd, &ob->shader_fx);
+ direct_link_modifiers(reader->fd, &ob->modifiers, ob);
+ direct_link_gpencil_modifiers(reader->fd, &ob->greasepencil_modifiers);
+ direct_link_shaderfxs(reader->fd, &ob->shader_fx);
- link_list(fd, &ob->effect);
+ BLO_read_list(reader, &ob->effect);
paf = ob->effect.first;
while (paf) {
if (paf->type == EFF_PARTICLE) {
@@ -6207,9 +6206,9 @@ static void direct_link_object(FileData *fd, Object *ob)
paf = paf->next;
}
- ob->pd = newdataadr(fd, ob->pd);
+ BLO_read_data_address(reader, &ob->pd);
direct_link_partdeflect(ob->pd);
- ob->soft = newdataadr(fd, ob->soft);
+ BLO_read_data_address(reader, &ob->soft);
if (ob->soft) {
SoftBody *sb = ob->soft;
@@ -6218,60 +6217,57 @@ static void direct_link_object(FileData *fd, Object *ob)
sb->scratch = NULL;
/* although not used anymore */
/* still have to be loaded to be compatible with old files */
- sb->keys = newdataadr(fd, sb->keys);
- test_pointer_array(fd, (void **)&sb->keys);
+ BLO_read_pointer_array(reader, (void **)&sb->keys);
if (sb->keys) {
int a;
for (a = 0; a < sb->totkey; a++) {
- sb->keys[a] = newdataadr(fd, sb->keys[a]);
+ BLO_read_data_address(reader, &sb->keys[a]);
}
}
- sb->effector_weights = newdataadr(fd, sb->effector_weights);
+ BLO_read_data_address(reader, &sb->effector_weights);
if (!sb->effector_weights) {
sb->effector_weights = BKE_effector_add_weights(NULL);
}
- sb->shared = newdataadr(fd, sb->shared);
+ BLO_read_data_address(reader, &sb->shared);
if (sb->shared == NULL) {
/* Link deprecated caches if they exist, so we can use them for versioning.
* We should only do this when sb->shared == NULL, because those pointers
* are always set (for compatibility with older Blenders). We mustn't link
* the same pointcache twice. */
- direct_link_pointcache_list(fd, &sb->ptcaches, &sb->pointcache, false);
+ direct_link_pointcache_list(reader->fd, &sb->ptcaches, &sb->pointcache, false);
}
else {
/* link caches */
- direct_link_pointcache_list(fd, &sb->shared->ptcaches, &sb->shared->pointcache, false);
+ direct_link_pointcache_list(
+ reader->fd, &sb->shared->ptcaches, &sb->shared->pointcache, false);
}
}
- ob->fluidsimSettings = newdataadr(fd, ob->fluidsimSettings); /* NT */
+ BLO_read_data_address(reader, &ob->fluidsimSettings); /* NT */
- ob->rigidbody_object = newdataadr(fd, ob->rigidbody_object);
+ BLO_read_data_address(reader, &ob->rigidbody_object);
if (ob->rigidbody_object) {
RigidBodyOb *rbo = ob->rigidbody_object;
/* Allocate runtime-only struct */
rbo->shared = MEM_callocN(sizeof(*rbo->shared), "RigidBodyObShared");
}
- ob->rigidbody_constraint = newdataadr(fd, ob->rigidbody_constraint);
+ BLO_read_data_address(reader, &ob->rigidbody_constraint);
if (ob->rigidbody_constraint) {
ob->rigidbody_constraint->physics_constraint = NULL;
}
- link_list(fd, &ob->particlesystem);
- direct_link_particlesystems(fd, &ob->particlesystem);
+ BLO_read_list(reader, &ob->particlesystem);
+ direct_link_particlesystems(reader->fd, &ob->particlesystem);
- direct_link_constraints(fd, &ob->constraints);
+ direct_link_constraints(reader->fd, &ob->constraints);
- link_list(fd, &ob->hooks);
+ BLO_read_list(reader, &ob->hooks);
while (ob->hooks.first) {
ObHook *hook = ob->hooks.first;
HookModifierData *hmd = (HookModifierData *)BKE_modifier_new(eModifierType_Hook);
- hook->indexar = newdataadr(fd, hook->indexar);
- if (fd->flags & FD_FLAGS_SWITCH_ENDIAN) {
- BLI_endian_switch_int32_array(hook->indexar, hook->totindex);
- }
+ BLO_read_int32_array(reader, hook->totindex, &hook->indexar);
/* Do conversion here because if we have loaded
* a hook we need to make sure it gets converted
@@ -6293,13 +6289,13 @@ static void direct_link_object(FileData *fd, Object *ob)
MEM_freeN(hook);
}
- ob->iuser = newdataadr(fd, ob->iuser);
+ BLO_read_data_address(reader, &ob->iuser);
if (ob->type == OB_EMPTY && ob->empty_drawtype == OB_EMPTY_IMAGE && !ob->iuser) {
BKE_object_empty_draw_type_set(ob, ob->empty_drawtype);
}
BKE_object_runtime_reset(ob);
- link_list(fd, &ob->pc_ids);
+ BLO_read_list(reader, &ob->pc_ids);
/* in case this value changes in future, clamp else we get undefined behavior */
CLAMP(ob->rotmode, ROT_MODE_MIN, ROT_MODE_MAX);
@@ -6307,15 +6303,15 @@ static void direct_link_object(FileData *fd, Object *ob)
if (ob->sculpt) {
ob->sculpt = NULL;
/* Only create data on undo, otherwise rely on editor mode switching. */
- if (fd->memfile && (ob->mode & OB_MODE_ALL_SCULPT)) {
+ if (reader->fd->memfile && (ob->mode & OB_MODE_ALL_SCULPT)) {
BKE_object_sculpt_data_create(ob);
}
}
- link_list(fd, &ob->lodlevels);
+ BLO_read_list(reader, &ob->lodlevels);
ob->currentlod = ob->lodlevels.first;
- ob->preview = direct_link_preview_image(fd, ob->preview);
+ ob->preview = direct_link_preview_image(reader->fd, ob->preview);
}
static void direct_link_view_settings(FileData *fd, ColorManagedViewSettings *view_settings)
@@ -6846,21 +6842,21 @@ static void link_recurs_seq(FileData *fd, ListBase *lb)
}
}
-static void direct_link_paint(FileData *fd, const Scene *scene, Paint *p)
+static void direct_link_paint(BlendDataReader *reader, const Scene *scene, Paint *p)
{
if (p->num_input_samples < 1) {
p->num_input_samples = 1;
}
- p->cavity_curve = newdataadr(fd, p->cavity_curve);
+ BLO_read_data_address(reader, &p->cavity_curve);
if (p->cavity_curve) {
- direct_link_curvemapping(fd, p->cavity_curve);
+ direct_link_curvemapping(reader->fd, p->cavity_curve);
}
else {
BKE_paint_cavity_curve_preset(p, CURVE_PRESET_LINE);
}
- p->tool_slots = newdataadr(fd, p->tool_slots);
+ BLO_read_data_address(reader, &p->tool_slots);
/* Workaround for invalid data written in older versions. */
const size_t expected_size = sizeof(PaintToolSlot) * p->tool_slots_len;
@@ -6872,13 +6868,13 @@ static void direct_link_paint(FileData *fd, const Scene *scene, Paint *p)
BKE_paint_runtime_init(scene->toolsettings, p);
}
-static void direct_link_paint_helper(FileData *fd, const Scene *scene, Paint **paint)
+static void direct_link_paint_helper(BlendDataReader *reader, const Scene *scene, Paint **paint)
{
/* TODO. is this needed */
- (*paint) = newdataadr(fd, (*paint));
+ BLO_read_data_address(reader, paint);
if (*paint) {
- direct_link_paint(fd, scene, *paint);
+ direct_link_paint(reader, scene, *paint);
}
}
@@ -6906,7 +6902,7 @@ static void direct_link_sequence_modifiers(FileData *fd, ListBase *lb)
}
}
-static void direct_link_scene(FileData *fd, Scene *sce)
+static void direct_link_scene(BlendDataReader *reader, Scene *sce)
{
Editing *ed;
Sequence *seq;
@@ -6926,17 +6922,17 @@ static void direct_link_scene(FileData *fd, Scene *sce)
/* set users to one by default, not in lib-link, this will increase it for compo nodes */
id_us_ensure_real(&sce->id);
- link_list(fd, &(sce->base));
+ BLO_read_list(reader, &(sce->base));
- sce->adt = newdataadr(fd, sce->adt);
- direct_link_animdata(fd, sce->adt);
+ BLO_read_data_address(reader, &sce->adt);
+ direct_link_animdata(reader->fd, sce->adt);
- link_list(fd, &sce->keyingsets);
- direct_link_keyingsets(fd, &sce->keyingsets);
+ BLO_read_list(reader, &sce->keyingsets);
+ direct_link_keyingsets(reader->fd, &sce->keyingsets);
- sce->basact = newdataadr(fd, sce->basact);
+ BLO_read_data_address(reader, &sce->basact);
- sce->toolsettings = newdataadr(fd, sce->toolsettings);
+ BLO_read_data_address(reader, &s
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list