[Bf-blender-cvs] [732cd96] asset-engine: Merge branch 'master' into asset-engine
Bastien Montagne
noreply at git.blender.org
Tue Jun 28 18:22:08 CEST 2016
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);
}
}
}
More information about the Bf-blender-cvs
mailing list