Commit: 8f8f5a65887f2a38d783307a0fbf9ba8e08bee6a
Author: Bastien Montagne
Date:   Sun Jan 21 17:37:33 2018 +0100
Branches: asset-engine
https://developer.blender.org/rB8f8f5a65887f2a38d783307a0fbf9ba8e08bee6a

Merge branch 'blender2.8' into asset-engine

Conflicts:
        source/blender/blenloader/intern/versioning_280.c
        source/blender/makesdna/DNA_ID.h

===================================================================



===================================================================

diff --cc source/blender/blenloader/intern/versioning_280.c
index b7b2d0f4232,b5530d90330..f7c71350b50
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@@ -885,30 -885,34 +885,60 @@@ void blo_do_versions_280(FileData *fd, 
        }
  
        {
+               if (DNA_struct_elem_find(fd->filesdna, "SpaceOops", "int", 
"filter") == false) {
+                       bScreen *sc;
+                       ScrArea *sa;
+                       SpaceLink *sl;
+ 
+                       /* Update files using invalid (outdated) outlinevis 
Outliner values. */
+                       for (sc = main->screen.first; sc; sc = sc->id.next) {
+                               for (sa = sc->areabase.first; sa; sa = 
sa->next) {
+                                       for (sl = sa->spacedata.first; sl; sl = 
sl->next) {
+                                               if (sl->spacetype == 
SPACE_OUTLINER) {
+                                                       SpaceOops *so = 
(SpaceOops *)sl;
+ 
+                                                       if 
(!ELEM(so->outlinevis,
+                                                                         
SO_SCENES,
+                                                                         
SO_GROUPS,
+                                                                         
SO_LIBRARIES,
+                                                                         
SO_SEQUENCE,
+                                                                         
SO_DATABLOCKS,
+                                                                 SO_ID_ORPHANS,
+                                                                 SO_VIEW_LAYER,
+                                                                 
SO_COLLECTIONS))
+                                                       {
+                                                               so->outlinevis 
= SO_VIEW_LAYER;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
++
 +              if (1 || !DNA_struct_find(fd->filesdna, "AssetUUID")) {  /* 
struct_find will have to wait, not working for now... */
 +                      /* Move non-op filebrowsers to 'library browsing' 
type/mode. */
 +                      for (bScreen *screen = main->screen.first; screen; 
screen = screen->id.next) {
 +                              for (ScrArea *sa = screen->areabase.first; sa; 
sa = sa->next) {
 +                                      for (SpaceLink *sl = 
sa->spacedata.first; sl; sl = sl->next) {
 +                                              if (sl->spacetype == 
SPACE_FILE) {
 +                                                      SpaceFile *sfile = 
(SpaceFile *)sl;
 +                                                      if (sfile->params != 
NULL) {
 +                                                              
sfile->params->type = FILE_LOADLIB;
 +                                                              
sfile->params->filter = FILE_TYPE_FOLDER | FILE_TYPE_BLENDERLIB;
 +                                                              /* For now, 
always init filterid to 'all true' */
 +                                                              
sfile->params->filter_id = FILTER_ID_AC | FILTER_ID_AR | FILTER_ID_BR | 
FILTER_ID_CA |
 +                                                                              
           FILTER_ID_CU | FILTER_ID_GD | FILTER_ID_GR | FILTER_ID_IM |
 +                                                                              
           FILTER_ID_LA | FILTER_ID_LS | FILTER_ID_LT | FILTER_ID_MA |
 +                                                                              
           FILTER_ID_MB | FILTER_ID_MC | FILTER_ID_ME | FILTER_ID_MSK |
 +                                                                              
           FILTER_ID_NT | FILTER_ID_OB | FILTER_ID_PA | FILTER_ID_PAL |
 +                                                                              
           FILTER_ID_PC | FILTER_ID_SCE | FILTER_ID_SPK | FILTER_ID_SO |
 +                                                                              
           FILTER_ID_TE | FILTER_ID_TXT | FILTER_ID_VF | FILTER_ID_WO |
 +                                                                              
           FILTER_ID_CF;
 +                                                      }
 +                                              }
 +                                      }
 +                              }
 +                      }
 +              }
        }
  }
diff --cc source/blender/makesdna/DNA_ID.h
index fcfab47c32d,fd8cd8b2855..a0d9f7aa6f6
--- a/source/blender/makesdna/DNA_ID.h
+++ b/source/blender/makesdna/DNA_ID.h
@@@ -265,7 -217,10 +265,13 @@@ typedef struct ID 
  
        IDOverrideStatic *override_static;  /* Reference linked ID which this 
one overrides. */
  
 +      AssetUUID *uuid;
++      void *pad_v;
++
+       /* Only set for datablocks which are coming from copy-on-write, points 
to
+        * the original version of it.
+        */
+       void *orig_id;
  
        void *py_instance;
  } ID;
diff --cc source/blender/windowmanager/intern/wm_files_link.c
index 7d610f366f0,cd6a38cb9a8..a2a332623cd
--- a/source/blender/windowmanager/intern/wm_files_link.c
+++ b/source/blender/windowmanager/intern/wm_files_link.c
@@@ -234,90 -213,8 +234,90 @@@ static WMLinkAppendDataItem *wm_link_ap
        return item;
  }
  
 +static int path_to_idcode(const char *path)
 +{
 +      const int filetype = ED_path_extension_type(path);
 +      switch (filetype) {
 +              case FILE_TYPE_IMAGE:
 +              case FILE_TYPE_MOVIE:
 +                      return ID_IM;
 +              case FILE_TYPE_FTFONT:
 +                      return ID_VF;
 +              case FILE_TYPE_SOUND:
 +                      return ID_SO;
 +              case FILE_TYPE_PYSCRIPT:
 +              case FILE_TYPE_TEXT:
 +                      return ID_TXT;
 +              default:
 +                      return 0;
 +      }
 +}
 +
 +static void wm_link_virtual_lib(
 +        WMLinkAppendData *lapp_data, Main *bmain, AssetEngineType *aet, const 
int lib_idx)
 +{
 +      const bool generate_overrides = (lapp_data->flag & 
BLO_LIBLINK_GENERATE_OVERRIDE) != 0;
 +      LinkNode *itemlink;
 +      int item_idx;
 +
 +      BLI_assert(aet);
 +
 +      /* Find or add virtual library matching current asset engine. */
 +      Library *virtlib = BKE_library_asset_virtual_ensure(bmain, aet);
 +
 +      for (item_idx = 0, itemlink = lapp_data->items.list; itemlink; 
item_idx++, itemlink = itemlink->next) {
 +              WMLinkAppendDataItem *item = itemlink->link;
 +              ID *new_id = NULL;
 +              bool id_exists = false;
 +
 +              if (!BLI_BITMAP_TEST(item->libraries, lib_idx)) {
 +                      continue;
 +              }
 +
 +              switch (item->idcode) {
 +                      case ID_IM:
 +                              new_id = (ID 
*)BKE_image_load_exists_ex(item->name, &id_exists);
 +                              if (id_exists) {
 +                                      if (!new_id->uuid || 
!ASSETUUID_COMPARE(new_id->uuid, item->uuid)) {
 +                                              /* Fake 'same ID' (same path, 
but different uuid or whatever), force loading into new ID. */
 +                                              BLI_assert(new_id->lib != 
virtlib);
 +                                              new_id = (ID 
*)BKE_image_load(bmain, item->name);
 +                                              id_exists = false;
 +                                      }
 +                              }
 +                              break;
 +                      default:
 +                              break;
 +              }
 +
 +              if (new_id) {
 +                      new_id->lib = virtlib;
 +                      new_id->tag |= LIB_TAG_EXTERN | LIB_ASSET;
 +
 +                      if (!id_exists) {
 +                              new_id->uuid = 
MEM_mallocN(sizeof(*new_id->uuid), __func__);
 +                              *new_id->uuid = *item->uuid;
 +                      }
 +
 +                      if (generate_overrides) {
 +                              /* Create local override of virtually linked 
datablock, since we nearly always want to be able
 +                               * to edit pretty much everything about it. */
-                               new_id = BKE_override_static_create_from(bmain, 
new_id);
++                              new_id = 
BKE_override_static_create_from_id(bmain, new_id);
 +                              /* TODO: will need to protect some fields on 
type-by-type case (path field). */
 +                      }
 +
 +                      /* If the link is sucessful, clear item's libs 'todo' 
flags.
 +                       * This avoids trying to link same item with other 
libraries to come. */
 +                      BLI_BITMAP_SET_ALL(item->libraries, false, 
lapp_data->num_libraries);
 +                      item->new_id = new_id;
 +              }
 +      }
 +      BKE_libraries_asset_repositories_rebuild(bmain);
 +}
 +
  static void wm_link_do(
 -        WMLinkAppendData *lapp_data, ReportList *reports, Main *bmain, Scene 
*scene, ViewLayer *view_layer)
 +        WMLinkAppendData *lapp_data, ReportList *reports, Main *bmain, 
AssetEngineType *aet,
 +        Scene *scene, ViewLayer *view_layer)
  {
        Main *mainl;
        BlendHandle *bh;

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to