diff options
author | Jacques Lucke <jacques@blender.org> | 2020-08-28 16:45:11 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2020-08-28 16:49:14 +0300 |
commit | 8815996418f0259b9abb9446da9bc137145de7d6 (patch) | |
tree | 7a62aa9cf197f1934a622ee8506ba0d0e024c8d2 /source/blender/blenkernel/intern/lib_id.c | |
parent | 5db5ac611a5cc2645d4c8638c640bc1c2372a6bd (diff) |
Refactor: move Mesh .blend I/O to IDTypeInfo callbacks
I'm also adding `BKE_id_blend_write`, so that it can be accessed
outside of `readfile.c`.
Diffstat (limited to 'source/blender/blenkernel/intern/lib_id.c')
-rw-r--r-- | source/blender/blenkernel/intern/lib_id.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/lib_id.c b/source/blender/blenkernel/intern/lib_id.c index 7fb19458eec..678f717efe4 100644 --- a/source/blender/blenkernel/intern/lib_id.c +++ b/source/blender/blenkernel/intern/lib_id.c @@ -75,6 +75,8 @@ #include "RNA_access.h" +#include "BLO_read_write.h" + #include "atomic_ops.h" //#define DEBUG_TIME @@ -2326,3 +2328,30 @@ void BKE_id_reorder(const ListBase *lb, ID *id, ID *relative, bool after) *id_order = relative_order - 1; } } + +void BKE_id_blend_write(BlendWriter *writer, ID *id) +{ + /* ID_WM's id->properties are considered runtime only, and never written in .blend file. */ + if (id->properties && !ELEM(GS(id->name), ID_WM)) { + IDP_BlendWrite(writer, id->properties); + } + + if (id->override_library) { + BLO_write_struct(writer, IDOverrideLibrary, id->override_library); + + BLO_write_struct_list(writer, IDOverrideLibraryProperty, &id->override_library->properties); + LISTBASE_FOREACH (IDOverrideLibraryProperty *, op, &id->override_library->properties) { + BLO_write_string(writer, op->rna_path); + + BLO_write_struct_list(writer, IDOverrideLibraryPropertyOperation, &op->operations); + LISTBASE_FOREACH (IDOverrideLibraryPropertyOperation *, opop, &op->operations) { + if (opop->subitem_reference_name) { + BLO_write_string(writer, opop->subitem_reference_name); + } + if (opop->subitem_local_name) { + BLO_write_string(writer, opop->subitem_local_name); + } + } + } + } +} |