Refactor: move animdata code from blenloader to blenkernel

This commit is contained in:
Jacques Lucke 2020-08-21 15:58:28 +02:00
parent bed634c4f9
commit 0de48f8550
4 changed files with 152 additions and 141 deletions

View File

@ -35,6 +35,10 @@ struct LibraryForeachIDData;
struct Main;
struct ReportList;
struct bAction;
struct BlendWriter;
struct BlendDataReader;
struct BlendLibReader;
struct BlendExpander;
/* ************************************* */
/* AnimData API */
@ -94,6 +98,13 @@ void BKE_animdata_merge_copy(struct Main *bmain,
eAnimData_MergeCopy_Modes action_mode,
bool fix_drivers);
void BKE_animdata_blend_write(struct BlendWriter *writer, struct AnimData *adt);
void BKE_animdata_blend_data_read(struct BlendDataReader *reader, struct AnimData *adt);
void BKE_animdata_blend_lib_read(struct BlendLibReader *reader,
struct ID *id,
struct AnimData *adt);
void BKE_animdata_blend_expand(struct BlendExpander *expander, struct AnimData *adt);
#ifdef __cplusplus
}
#endif

View File

@ -54,6 +54,8 @@
#include "DEG_depsgraph.h"
#include "BLO_read_write.h"
#include "RNA_access.h"
#include "CLG_log.h"
@ -1497,3 +1499,85 @@ void BKE_animdata_fix_paths_rename_all(ID *ref_id,
/* scenes */
RENAMEFIX_ANIM_NODETREE_IDS(bmain->scenes.first, Scene);
}
/* .blend file API -------------------------------------------- */
void BKE_animdata_blend_write(BlendWriter *writer, struct AnimData *adt)
{
/* firstly, just write the AnimData block */
BLO_write_struct(writer, AnimData, adt);
/* write drivers */
BKE_fcurve_blend_write(writer, &adt->drivers);
/* write overrides */
// FIXME: are these needed?
LISTBASE_FOREACH (AnimOverride *, aor, &adt->overrides) {
/* overrides consist of base data + rna_path */
BLO_write_struct(writer, AnimOverride, aor);
BLO_write_string(writer, aor->rna_path);
}
// TODO write the remaps (if they are needed)
/* write NLA data */
BKE_nla_blend_write(writer, &adt->nla_tracks);
}
void BKE_animdata_blend_data_read(BlendDataReader *reader, AnimData *adt)
{
/* NOTE: must have called BLO_read_data_address already before doing this... */
if (adt == NULL) {
return;
}
/* link drivers */
BLO_read_list(reader, &adt->drivers);
BKE_fcurve_blend_data_read(reader, &adt->drivers);
adt->driver_array = NULL;
/* link overrides */
// TODO...
/* link NLA-data */
BLO_read_list(reader, &adt->nla_tracks);
BKE_nla_blend_data_read(reader, &adt->nla_tracks);
/* relink active track/strip - even though strictly speaking this should only be used
* if we're in 'tweaking mode', we need to be able to have this loaded back for
* undo, but also since users may not exit tweakmode before saving (#24535)
*/
// TODO: it's not really nice that anyone should be able to save the file in this
// state, but it's going to be too hard to enforce this single case...
BLO_read_data_address(reader, &adt->act_track);
BLO_read_data_address(reader, &adt->actstrip);
}
void BKE_animdata_blend_lib_read(BlendLibReader *reader, ID *id, AnimData *adt)
{
if (adt == NULL) {
return;
}
/* link action data */
BLO_read_id_address(reader, id->lib, &adt->action);
BLO_read_id_address(reader, id->lib, &adt->tmpact);
/* link drivers */
BKE_fcurve_blend_lib_read(reader, id, &adt->drivers);
/* overrides don't have lib-link for now, so no need to do anything */
/* link NLA-data */
BKE_nla_blend_lib_read(reader, id, &adt->nla_tracks);
}
void BKE_animdata_blend_expand(struct BlendExpander *expander, AnimData *adt)
{
/* own action */
BLO_expand(expander, adt->action);
BLO_expand(expander, adt->tmpact);
/* drivers - assume that these F-Curves have driver data to be in this list... */
BKE_fcurve_blend_expand(expander, &adt->drivers);
}

View File

@ -265,8 +265,6 @@ static BHead *find_bhead_from_idname(FileData *fd, const char *idname);
#ifdef USE_COLLECTION_COMPAT_28
static void expand_scene_collection(BlendExpander *expander, SceneCollection *sc);
#endif
static void direct_link_animdata(BlendDataReader *reader, AnimData *adt);
static void lib_link_animdata(BlendLibReader *reader, ID *id, AnimData *adt);
typedef struct BHeadN {
struct BHeadN *next, *prev;
@ -2307,7 +2305,7 @@ static void lib_link_id(BlendLibReader *reader, ID *id)
AnimData *adt = BKE_animdata_from_id(id);
if (adt != NULL) {
lib_link_animdata(reader, id, adt);
BKE_animdata_blend_lib_read(reader, id, adt);
}
if (id->override_library) {
@ -2785,56 +2783,6 @@ static void direct_link_keyingsets(BlendDataReader *reader, ListBase *list)
}
}
/* ------- */
static void lib_link_animdata(BlendLibReader *reader, ID *id, AnimData *adt)
{
if (adt == NULL) {
return;
}
/* link action data */
BLO_read_id_address(reader, id->lib, &adt->action);
BLO_read_id_address(reader, id->lib, &adt->tmpact);
/* link drivers */
BKE_fcurve_blend_lib_read(reader, id, &adt->drivers);
/* overrides don't have lib-link for now, so no need to do anything */
/* link NLA-data */
BKE_nla_blend_lib_read(reader, id, &adt->nla_tracks);
}
static void direct_link_animdata(BlendDataReader *reader, AnimData *adt)
{
/* NOTE: must have called newdataadr already before doing this... */
if (adt == NULL) {
return;
}
/* link drivers */
BLO_read_list(reader, &adt->drivers);
BKE_fcurve_blend_data_read(reader, &adt->drivers);
adt->driver_array = NULL;
/* link overrides */
// TODO...
/* link NLA-data */
BLO_read_list(reader, &adt->nla_tracks);
BKE_nla_blend_data_read(reader, &adt->nla_tracks);
/* relink active track/strip - even though strictly speaking this should only be used
* if we're in 'tweaking mode', we need to be able to have this loaded back for
* undo, but also since users may not exit tweakmode before saving (#24535)
*/
// TODO: it's not really nice that anyone should be able to save the file in this
// state, but it's going to be too hard to enforce this single case...
BLO_read_data_address(reader, &adt->act_track);
BLO_read_data_address(reader, &adt->actstrip);
}
/** \} */
/* -------------------------------------------------------------------- */
@ -2854,7 +2802,7 @@ static void direct_link_cachefile(BlendDataReader *reader, CacheFile *cache_file
/* relink animdata */
BLO_read_data_address(reader, &cache_file->adt);
direct_link_animdata(reader, cache_file->adt);
BKE_animdata_blend_data_read(reader, cache_file->adt);
}
/** \} */
@ -3041,7 +2989,7 @@ static void direct_link_nodetree(BlendDataReader *reader, bNodeTree *ntree)
ntree->execdata = NULL;
BLO_read_data_address(reader, &ntree->adt);
direct_link_animdata(reader, ntree->adt);
BKE_animdata_blend_data_read(reader, ntree->adt);
BLO_read_list(reader, &ntree->nodes);
LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
@ -3371,7 +3319,7 @@ static void direct_link_armature(BlendDataReader *reader, bArmature *arm)
arm->needs_flush_to_id = 0;
BLO_read_data_address(reader, &arm->adt);
direct_link_animdata(reader, arm->adt);
BKE_animdata_blend_data_read(reader, arm->adt);
LISTBASE_FOREACH (Bone *, bone, &arm->bonebase) {
direct_link_bones(reader, bone);
@ -3405,7 +3353,7 @@ static void lib_link_camera(BlendLibReader *reader, Camera *ca)
static void direct_link_camera(BlendDataReader *reader, Camera *ca)
{
BLO_read_data_address(reader, &ca->adt);
direct_link_animdata(reader, ca->adt);
BKE_animdata_blend_data_read(reader, ca->adt);
BLO_read_list(reader, &ca->bg_images);
@ -3429,7 +3377,7 @@ static void lib_link_light(BlendLibReader *reader, Light *la)
static void direct_link_light(BlendDataReader *reader, Light *la)
{
BLO_read_data_address(reader, &la->adt);
direct_link_animdata(reader, la->adt);
BKE_animdata_blend_data_read(reader, la->adt);
BLO_read_data_address(reader, &la->curfalloff);
if (la->curfalloff) {
@ -3493,7 +3441,7 @@ static void direct_link_key(BlendDataReader *reader, Key *key)
BLO_read_list(reader, &(key->block));
BLO_read_data_address(reader, &key->adt);
direct_link_animdata(reader, key->adt);
BKE_animdata_blend_data_read(reader, key->adt);
BLO_read_data_address(reader, &key->refkey);
@ -3524,7 +3472,7 @@ static void lib_link_mball(BlendLibReader *reader, MetaBall *mb)
static void direct_link_mball(BlendDataReader *reader, MetaBall *mb)
{
BLO_read_data_address(reader, &mb->adt);
direct_link_animdata(reader, mb->adt);
BKE_animdata_blend_data_read(reader, mb->adt);
BLO_read_pointer_array(reader, (void **)&mb->mat);
@ -3553,7 +3501,7 @@ static void lib_link_world(BlendLibReader *reader, World *wrld)
static void direct_link_world(BlendDataReader *reader, World *wrld)
{
BLO_read_data_address(reader, &wrld->adt);
direct_link_animdata(reader, wrld->adt);
BKE_animdata_blend_data_read(reader, wrld->adt);
wrld->preview = direct_link_preview_image(reader, wrld->preview);
BLI_listbase_clear(&wrld->gpumaterial);
@ -3704,7 +3652,7 @@ static void switch_endian_knots(Nurb *nu)
static void direct_link_curve(BlendDataReader *reader, Curve *cu)
{
BLO_read_data_address(reader, &cu->adt);
direct_link_animdata(reader, cu->adt);
BKE_animdata_blend_data_read(reader, cu->adt);
/* Protect against integer overflow vulnerability. */
CLAMP(cu->len_char32, 0, INT_MAX - 4);
@ -3773,7 +3721,7 @@ static void lib_link_texture(BlendLibReader *reader, Tex *tex)
static void direct_link_texture(BlendDataReader *reader, Tex *tex)
{
BLO_read_data_address(reader, &tex->adt);
direct_link_animdata(reader, tex->adt);
BKE_animdata_blend_data_read(reader, tex->adt);
BLO_read_data_address(reader, &tex->coba);
@ -3808,7 +3756,7 @@ static void lib_link_material(BlendLibReader *reader, Material *ma)
static void direct_link_material(BlendDataReader *reader, Material *ma)
{
BLO_read_data_address(reader, &ma->adt);
direct_link_animdata(reader, ma->adt);
BKE_animdata_blend_data_read(reader, ma->adt);
ma->texpaintslot = NULL;
@ -3989,7 +3937,7 @@ static void direct_link_particlesettings(BlendDataReader *reader, ParticleSettin
BLO_read_data_address(reader, &part->pd);
BLO_read_data_address(reader, &part->pd2);
direct_link_animdata(reader, part->adt);
BKE_animdata_blend_data_read(reader, part->adt);
direct_link_partdeflect(part->pd);
direct_link_partdeflect(part->pd2);
@ -4304,7 +4252,7 @@ static void direct_link_mesh(BlendDataReader *reader, Mesh *mesh)
/* animdata */
BLO_read_data_address(reader, &mesh->adt);
direct_link_animdata(reader, mesh->adt);
BKE_animdata_blend_data_read(reader, mesh->adt);
/* Normally direct_link_dverts should be called in direct_link_customdata,
* but for backwards compatibility in do_versions to work we do it here. */
@ -4399,7 +4347,7 @@ static void direct_link_latt(BlendDataReader *reader, Lattice *lt)
lt->batch_cache = NULL;
BLO_read_data_address(reader, &lt->adt);
direct_link_animdata(reader, lt->adt);
BKE_animdata_blend_data_read(reader, lt->adt);
}
/** \} */
@ -5104,7 +5052,7 @@ static void direct_link_object(BlendDataReader *reader, Object *ob)
}
BLO_read_data_address(reader, &ob->adt);
direct_link_animdata(reader, ob->adt);
BKE_animdata_blend_data_read(reader, ob->adt);
BLO_read_data_address(reader, &ob->pose);
direct_link_pose(reader, ob->pose);
@ -5882,7 +5830,7 @@ static void direct_link_scene(BlendDataReader *reader, Scene *sce)
BLO_read_list(reader, &(sce->base));
BLO_read_data_address(reader, &sce->adt);
direct_link_animdata(reader, sce->adt);
BKE_animdata_blend_data_read(reader, sce->adt);
BLO_read_list(reader, &sce->keyingsets);
direct_link_keyingsets(reader, &sce->keyingsets);
@ -6202,7 +6150,7 @@ static void direct_link_gpencil(BlendDataReader *reader, bGPdata *gpd)
/* relink animdata */
BLO_read_data_address(reader, &gpd->adt);
direct_link_animdata(reader, gpd->adt);
BKE_animdata_blend_data_read(reader, gpd->adt);
/* Ensure full objectmode for linked grease pencil. */
if (gpd->id.lib != NULL) {
@ -7556,7 +7504,7 @@ static void lib_link_lightprobe(BlendLibReader *reader, LightProbe *prb)
static void direct_link_lightprobe(BlendDataReader *reader, LightProbe *prb)
{
BLO_read_data_address(reader, &prb->adt);
direct_link_animdata(reader, prb->adt);
BKE_animdata_blend_data_read(reader, prb->adt);
}
/** \} */
@ -7573,7 +7521,7 @@ static void lib_link_speaker(BlendLibReader *reader, Speaker *spk)
static void direct_link_speaker(BlendDataReader *reader, Speaker *spk)
{
BLO_read_data_address(reader, &spk->adt);
direct_link_animdata(reader, spk->adt);
BKE_animdata_blend_data_read(reader, spk->adt);
#if 0
spk->sound = newdataadr(fd, spk->sound);
@ -8019,7 +7967,7 @@ static void direct_link_linestyle_geometry_modifier(BlendDataReader *UNUSED(read
static void direct_link_linestyle(BlendDataReader *reader, FreestyleLineStyle *linestyle)
{
BLO_read_data_address(reader, &linestyle->adt);
direct_link_animdata(reader, linestyle->adt);
BKE_animdata_blend_data_read(reader, linestyle->adt);
BLO_read_list(reader, &linestyle->color_modifiers);
LISTBASE_FOREACH (LineStyleModifier *, modifier, &linestyle->color_modifiers) {
direct_link_linestyle_color_modifier(reader, modifier);
@ -8057,7 +8005,7 @@ static void lib_link_hair(BlendLibReader *reader, Hair *hair)
static void direct_link_hair(BlendDataReader *reader, Hair *hair)
{
BLO_read_data_address(reader, &hair->adt);
direct_link_animdata(reader, hair->adt);
BKE_animdata_blend_data_read(reader, hair->adt);
/* Geometry */
direct_link_customdata(reader, &hair->pdata, hair->totpoint);
@ -8084,7 +8032,7 @@ static void lib_link_pointcloud(BlendLibReader *reader, PointCloud *pointcloud)
static void direct_link_pointcloud(BlendDataReader *reader, PointCloud *pointcloud)
{
BLO_read_data_address(reader, &pointcloud->adt);
direct_link_animdata(reader, pointcloud->adt);
BKE_animdata_blend_data_read(reader, pointcloud->adt);
/* Geometry */
direct_link_customdata(reader, &pointcloud->pdata, pointcloud->totpoint);
@ -8115,7 +8063,7 @@ static void lib_link_volume(BlendLibReader *reader, Volume *volume)
static void direct_link_volume(BlendDataReader *reader, Volume *volume)
{
BLO_read_data_address(reader, &volume->adt);
direct_link_animdata(reader, volume->adt);
BKE_animdata_blend_data_read(reader, volume->adt);
volume->packedfile = direct_link_packedfile(reader, volume->packedfile);
volume->runtime.frame = 0;
@ -8140,7 +8088,7 @@ static void lib_link_simulation(BlendLibReader *reader, Simulation *simulation)
static void direct_link_simulation(BlendDataReader *reader, Simulation *simulation)
{
BLO_read_data_address(reader, &simulation->adt);
direct_link_animdata(reader, simulation->adt);
BKE_animdata_blend_data_read(reader, simulation->adt);
BLO_read_list(reader, &simulation->states);
LISTBASE_FOREACH (SimulationState *, state, &simulation->states) {
@ -9724,16 +9672,6 @@ static void expand_constraint_channels(BlendExpander *expander, ListBase *chanba
}
}
static void expand_animdata(BlendExpander *expander, AnimData *adt)
{
/* own action */
BLO_expand(expander, adt->action);
BLO_expand(expander, adt->tmpact);
/* drivers - assume that these F-Curves have driver data to be in this list... */
BKE_fcurve_blend_expand(expander, &adt->drivers);
}
static void expand_id(BlendExpander *expander, ID *id);
static void expand_nodetree(BlendExpander *expander, bNodeTree *ntree);
static void expand_collection(BlendExpander *expander, Collection *collection);
@ -9767,7 +9705,7 @@ static void expand_id(BlendExpander *expander, ID *id)
AnimData *adt = BKE_animdata_from_id(id);
if (adt != NULL) {
expand_animdata(expander, adt);
BKE_animdata_blend_expand(expander, adt);
}
expand_id_embedded_id(expander, id);
@ -10379,7 +10317,7 @@ static void expand_hair(BlendExpander *expander, Hair *hair)
}
if (hair->adt) {
expand_animdata(expander, hair->adt);
BKE_animdata_blend_expand(expander, hair->adt);
}
}
@ -10390,7 +10328,7 @@ static void expand_pointcloud(BlendExpander *expander, PointCloud *pointcloud)
}
if (pointcloud->adt) {
expand_animdata(expander, pointcloud->adt);
BKE_animdata_blend_expand(expander, pointcloud->adt);
}
}
@ -10401,14 +10339,14 @@ static void expand_volume(BlendExpander *expander, Volume *volume)
}
if (volume->adt) {
expand_animdata(expander, volume->adt);
BKE_animdata_blend_expand(expander, volume->adt);
}
}
static void expand_simulation(BlendExpander *expander, Simulation *simulation)
{
if (simulation->adt) {
expand_animdata(expander, simulation->adt);
BKE_animdata_blend_expand(expander, simulation->adt);
}
LISTBASE_FOREACH (SimulationDependency *, dependency, &simulation->dependencies) {
BLO_expand(expander, dependency->id);

View File

@ -152,6 +152,7 @@
#include "MEM_guardedalloc.h" // MEM_freeN
#include "BKE_action.h"
#include "BKE_anim_data.h"
#include "BKE_armature.h"
#include "BKE_blender_version.h"
#include "BKE_bpath.h"
@ -171,7 +172,6 @@
#include "BKE_lib_override.h"
#include "BKE_main.h"
#include "BKE_modifier.h"
#include "BKE_nla.h"
#include "BKE_node.h"
#include "BKE_object.h"
#include "BKE_pointcache.h"
@ -745,28 +745,6 @@ static void write_keyingsets(BlendWriter *writer, ListBase *list)
}
}
static void write_animdata(BlendWriter *writer, AnimData *adt)
{
/* firstly, just write the AnimData block */
BLO_write_struct(writer, AnimData, adt);
/* write drivers */
BKE_fcurve_blend_write(writer, &adt->drivers);
/* write overrides */
// FIXME: are these needed?
LISTBASE_FOREACH (AnimOverride *, aor, &adt->overrides) {
/* overrides consist of base data + rna_path */
BLO_write_struct(writer, AnimOverride, aor);
BLO_write_string(writer, aor->rna_path);
}
// TODO write the remaps (if they are needed)
/* write NLA data */
BKE_nla_blend_write(writer, &adt->nla_tracks);
}
static void write_node_socket_default_value(BlendWriter *writer, bNodeSocket *sock)
{
if (sock->default_value == NULL) {
@ -838,7 +816,7 @@ static void write_nodetree_nolib(BlendWriter *writer, bNodeTree *ntree)
/* for link_list() speed, we write per list */
if (ntree->adt) {
write_animdata(writer, ntree->adt);
BKE_animdata_blend_write(writer, ntree->adt);
}
LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
@ -1196,7 +1174,7 @@ static void write_particlesettings(BlendWriter *writer,
write_iddata(writer, &part->id);
if (part->adt) {
write_animdata(writer, part->adt);
BKE_animdata_blend_write(writer, part->adt);
}
BLO_write_struct(writer, PartDeflect, part->pd);
BLO_write_struct(writer, PartDeflect, part->pd2);
@ -1618,7 +1596,7 @@ static void write_object(BlendWriter *writer, Object *ob, const void *id_address
write_iddata(writer, &ob->id);
if (ob->adt) {
write_animdata(writer, ob->adt);
BKE_animdata_blend_write(writer, ob->adt);
}
/* direct data */
@ -1702,7 +1680,7 @@ static void write_key(BlendWriter *writer, Key *key, const void *id_address)
write_iddata(writer, &key->id);
if (key->adt) {
write_animdata(writer, key->adt);
BKE_animdata_blend_write(writer, key->adt);
}
/* direct data */
@ -1723,7 +1701,7 @@ static void write_camera(BlendWriter *writer, Camera *cam, const void *id_addres
write_iddata(writer, &cam->id);
if (cam->adt) {
write_animdata(writer, cam->adt);
BKE_animdata_blend_write(writer, cam->adt);
}
LISTBASE_FOREACH (CameraBGImage *, bgpic, &cam->bg_images) {
@ -1750,7 +1728,7 @@ static void write_mball(BlendWriter *writer, MetaBall *mb, const void *id_addres
/* direct data */
BLO_write_pointer_array(writer, mb->totcol, mb->mat);
if (mb->adt) {
write_animdata(writer, mb->adt);
BKE_animdata_blend_write(writer, mb->adt);
}
LISTBASE_FOREACH (MetaElem *, ml, &mb->elems) {
@ -1774,7 +1752,7 @@ static void write_curve(BlendWriter *writer, Curve *cu, const void *id_address)
/* direct data */
BLO_write_pointer_array(writer, cu->totcol, cu->mat);
if (cu->adt) {
write_animdata(writer, cu->adt);
BKE_animdata_blend_write(writer, cu->adt);
}
if (cu->vfont) {
@ -1945,7 +1923,7 @@ static void write_mesh(BlendWriter *writer, Mesh *mesh, const void *id_address)
/* direct data */
if (mesh->adt) {
write_animdata(writer, mesh->adt);
BKE_animdata_blend_write(writer, mesh->adt);
}
BLO_write_pointer_array(writer, mesh->totcol, mesh->mat);
@ -1990,7 +1968,7 @@ static void write_lattice(BlendWriter *writer, Lattice *lt, const void *id_addre
/* write animdata */
if (lt->adt) {
write_animdata(writer, lt->adt);
BKE_animdata_blend_write(writer, lt->adt);
}
/* direct data */
@ -2048,7 +2026,7 @@ static void write_texture(BlendWriter *writer, Tex *tex, const void *id_address)
write_iddata(writer, &tex->id);
if (tex->adt) {
write_animdata(writer, tex->adt);
BKE_animdata_blend_write(writer, tex->adt);
}
/* direct data */
@ -2078,7 +2056,7 @@ static void write_material(BlendWriter *writer, Material *ma, const void *id_add
write_iddata(writer, &ma->id);
if (ma->adt) {
write_animdata(writer, ma->adt);
BKE_animdata_blend_write(writer, ma->adt);
}
/* nodetree is integral part of material, no libdata */
@ -2107,7 +2085,7 @@ static void write_world(BlendWriter *writer, World *wrld, const void *id_address
write_iddata(writer, &wrld->id);
if (wrld->adt) {
write_animdata(writer, wrld->adt);
BKE_animdata_blend_write(writer, wrld->adt);
}
/* nodetree is integral part of world, no libdata */
@ -2128,7 +2106,7 @@ static void write_light(BlendWriter *writer, Light *la, const void *id_address)
write_iddata(writer, &la->id);
if (la->adt) {
write_animdata(writer, la->adt);
BKE_animdata_blend_write(writer, la->adt);
}
if (la->curfalloff) {
@ -2299,7 +2277,7 @@ static void write_scene(BlendWriter *writer, Scene *sce, const void *id_address)
write_iddata(writer, &sce->id);
if (sce->adt) {
write_animdata(writer, sce->adt);
BKE_animdata_blend_write(writer, sce->adt);
}
write_keyingsets(writer, &sce->keyingsets);
@ -2533,7 +2511,7 @@ static void write_gpencil(BlendWriter *writer, bGPdata *gpd, const void *id_addr
write_iddata(writer, &gpd->id);
if (gpd->adt) {
write_animdata(writer, gpd->adt);
BKE_animdata_blend_write(writer, gpd->adt);
}
BLO_write_pointer_array(writer, gpd->totcol, gpd->mat);
@ -2882,7 +2860,7 @@ static void write_armature(BlendWriter *writer, bArmature *arm, const void *id_a
write_iddata(writer, &arm->id);
if (arm->adt) {
write_animdata(writer, arm->adt);
BKE_animdata_blend_write(writer, arm->adt);
}
/* Direct data */
@ -2930,7 +2908,7 @@ static void write_speaker(BlendWriter *writer, Speaker *spk, const void *id_addr
write_iddata(writer, &spk->id);
if (spk->adt) {
write_animdata(writer, spk->adt);
BKE_animdata_blend_write(writer, spk->adt);
}
}
}
@ -2964,7 +2942,7 @@ static void write_probe(BlendWriter *writer, LightProbe *prb, const void *id_add
write_iddata(writer, &prb->id);
if (prb->adt) {
write_animdata(writer, prb->adt);
BKE_animdata_blend_write(writer, prb->adt);
}
}
}
@ -3112,7 +3090,7 @@ static void write_movieclip(BlendWriter *writer, MovieClip *clip, const void *id
write_iddata(writer, &clip->id);
if (clip->adt) {
write_animdata(writer, clip->adt);
BKE_animdata_blend_write(writer, clip->adt);
}
write_movieTracks(writer, &tracking->tracks);
@ -3141,7 +3119,7 @@ static void write_mask(BlendWriter *writer, Mask *mask, const void *id_address)
write_iddata(writer, &mask->id);
if (mask->adt) {
write_animdata(writer, mask->adt);
BKE_animdata_blend_write(writer, mask->adt);
}
for (masklay = mask->masklayers.first; masklay; masklay = masklay->next) {
@ -3451,7 +3429,7 @@ static void write_linestyle(BlendWriter *writer,
write_iddata(writer, &linestyle->id);
if (linestyle->adt) {
write_animdata(writer, linestyle->adt);
BKE_animdata_blend_write(writer, linestyle->adt);
}
write_linestyle_color_modifiers(writer, &linestyle->color_modifiers);
@ -3482,7 +3460,7 @@ static void write_cachefile(BlendWriter *writer, CacheFile *cache_file, const vo
BLO_write_id_struct(writer, CacheFile, id_address, &cache_file->id);
if (cache_file->adt) {
write_animdata(writer, cache_file->adt);
BKE_animdata_blend_write(writer, cache_file->adt);
}
}
}
@ -3519,7 +3497,7 @@ static void write_hair(BlendWriter *writer, Hair *hair, const void *id_address)
write_customdata(writer, &hair->id, hair->totcurve, &hair->cdata, clayers, CD_MASK_ALL);
BLO_write_pointer_array(writer, hair->totcol, hair->mat);
if (hair->adt) {
write_animdata(writer, hair->adt);
BKE_animdata_blend_write(writer, hair->adt);
}
/* Remove temporary data. */
@ -3548,7 +3526,7 @@ static void write_pointcloud(BlendWriter *writer, PointCloud *pointcloud, const
writer, &pointcloud->id, pointcloud->totpoint, &pointcloud->pdata, players, CD_MASK_ALL);
BLO_write_pointer_array(writer, pointcloud->totcol, pointcloud->mat);
if (pointcloud->adt) {
write_animdata(writer, pointcloud->adt);
BKE_animdata_blend_write(writer, pointcloud->adt);
}
/* Remove temporary data. */
@ -3571,7 +3549,7 @@ static void write_volume(BlendWriter *writer, Volume *volume, const void *id_add
/* direct data */
BLO_write_pointer_array(writer, volume->totcol, volume->mat);
if (volume->adt) {
write_animdata(writer, volume->adt);
BKE_animdata_blend_write(writer, volume->adt);
}
if (volume->packedfile) {
@ -3589,7 +3567,7 @@ static void write_simulation(BlendWriter *writer, Simulation *simulation, const
write_iddata(writer, &simulation->id);
if (simulation->adt) {
write_animdata(writer, simulation->adt);
BKE_animdata_blend_write(writer, simulation->adt);
}
/* nodetree is integral part of simulation, no libdata */