Commit: 732cd96737007b1411a161369f842209a4c26419
Author: Bastien Montagne
Date: Tue Jun 28 18:21:53 2016 +0200
Branches: asset-engine
https://developer.blender.org/rB732cd96737007b1411a161369f842209a4c26419
Merge branch 'master' into asset-engine
Conflicts:
source/blender/blenloader/intern/writefile.c
===================================================================
===================================================================
diff --cc source/blender/blenloader/intern/writefile.c
index 1979bd0,2c8bb92..5333d9d
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@@ -600,14 -669,7 +669,14 @@@ static void write_iddata(void *wd, cons
{
/* 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_WriteProperty(id->properties, wd);
+ /* We want to write IDProps from 'virtual' libraries too, but
not from 'real' linked datablocks... */
+ if (!id->uuid || (id->lib && (id->lib->flag &
LIBRARY_FLAG_VIRTUAL))) {
+ IDP_WriteProperty(id->properties, wd);
+ }
+ }
+ if (id->uuid) {
+ BLI_assert(id->lib && id->lib->asset_repository);
- writestruct(wd, DATA, "AssetUUID", 1, id->uuid);
++ writestruct(wd, DATA, AssetUUID, 1, id->uuid);
}
}
@@@ -3613,71 -3891,27 +3899,72 @@@ static void write_libraries(WriteData *
/* XXX needs rethink, just like save UI in undo files now -
would be nice to append things only for the]
* quit.blend and temp saves */
if (found_one) {
- writestruct(wd, ID_LI, "Library", 1, main->curlib);
+ writestruct(wd, ID_LI, Library, 1, main->curlib);
write_iddata(wd, &main->curlib->id);
+ BLI_assert(!(main->curlib->flag & LIBRARY_FLAG_VIRTUAL)
||
+ (!main->curlib->packedfile &&
main->curlib->asset_repository));
+
if (main->curlib->packedfile) {
PackedFile *pf = main->curlib->packedfile;
- writestruct(wd, DATA, "PackedFile", 1, pf);
+ writestruct(wd, DATA, PackedFile, 1, pf);
writedata(wd, DATA, pf->size, pf->data);
- if (wd->current == NULL)
+ if (wd->current == NULL) {
printf("write packed .blend: %s\n",
main->curlib->name);
+ }
}
- while (a--) {
- for (id = lbarray[a]->first; id; id = id->next)
{
- if (id->us > 0 && (id->tag &
LIB_TAG_EXTERN)) {
- if
(!BKE_idcode_is_linkable(GS(id->name))) {
- printf("ERROR: write
file: datablock '%s' from lib '%s' is not linkable "
- "but is flagged
as directly linked", id->name, main->curlib->filepath);
- BLI_assert(0);
+ if (main->curlib->asset_repository) {
- writestruct(wd, DATA, "AssetRepositoryRef", 1,
main->curlib->asset_repository);
++ writestruct(wd, DATA, AssetRepositoryRef, 1,
main->curlib->asset_repository);
+ }
+
+ if (main->curlib->flag & LIBRARY_FLAG_VIRTUAL) {
+ /* Those should be the only datatypes found in
a virtual library! */
+ write_images (wd, &main->image);
+ write_vfonts (wd, &main->vfont);
+ write_texts (wd, &main->text);
+ write_sounds (wd, &main->sound);
+
+ BLI_assert(BLI_listbase_is_empty(&main->wm));
+
BLI_assert(BLI_listbase_is_empty(&main->screen));
+
BLI_assert(BLI_listbase_is_empty(&main->movieclip));
+ BLI_assert(BLI_listbase_is_empty(&main->mask));
+ BLI_assert(BLI_listbase_is_empty(&main->scene));
+ BLI_assert(BLI_listbase_is_empty(&main->curve));
+ BLI_assert(BLI_listbase_is_empty(&main->mball));
+
BLI_assert(BLI_listbase_is_empty(&main->camera));
+ BLI_assert(BLI_listbase_is_empty(&main->lamp));
+ BLI_assert(BLI_listbase_is_empty(&main->latt));
+ BLI_assert(BLI_listbase_is_empty(&main->key));
+ BLI_assert(BLI_listbase_is_empty(&main->world));
+
BLI_assert(BLI_listbase_is_empty(&main->speaker));
+ BLI_assert(BLI_listbase_is_empty(&main->group));
+
BLI_assert(BLI_listbase_is_empty(&main->armature));
+
BLI_assert(BLI_listbase_is_empty(&main->action));
+
BLI_assert(BLI_listbase_is_empty(&main->object));
+ BLI_assert(BLI_listbase_is_empty(&main->mat));
+ BLI_assert(BLI_listbase_is_empty(&main->tex));
+ BLI_assert(BLI_listbase_is_empty(&main->mesh));
+
BLI_assert(BLI_listbase_is_empty(&main->particle));
+
BLI_assert(BLI_listbase_is_empty(&main->nodetree));
+ BLI_assert(BLI_listbase_is_empty(&main->brush));
+
BLI_assert(BLI_listbase_is_empty(&main->palettes));
+
BLI_assert(BLI_listbase_is_empty(&main->paintcurves));
+
BLI_assert(BLI_listbase_is_empty(&main->gpencil));
+
BLI_assert(BLI_listbase_is_empty(&main->linestyle));
+ }
+ else {
+ while (a--) {
- for (id= lbarray[a]->first; id; id=
id->next) {
++ for (id = lbarray[a]->first; id; id =
id->next) {
+ if (id->us > 0 && (id->tag &
LIB_TAG_EXTERN)) {
+ if
(!BKE_idcode_is_linkable(GS(id->name))) {
+ printf("ERROR:
write file: datablock '%s' from lib '%s' is not linkable "
+ "but
is flagged as directly linked", id->name, main->curlib->filepath);
+ BLI_assert(0);
+ }
- writestruct(wd, ID_ID,
"ID", 1, id);
++ writestruct(wd, ID_ID,
ID, 1, id);
+ write_iddata(wd, id);
}
- writestruct(wd, ID_ID, ID, 1,
id);
}
}
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs