[Bf-blender-cvs] [47fa3e7b276] blender2.8: Merge branch 'master' into blender2.8
Bastien Montagne
noreply at git.blender.org
Mon Dec 4 14:16:26 CET 2017
Commit: 47fa3e7b27623f85acba9161e5210507a67742f1
Author: Bastien Montagne
Date: Mon Dec 4 13:57:26 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB47fa3e7b27623f85acba9161e5210507a67742f1
Merge branch 'master' into blender2.8
Conflicts:
source/blender/blenloader/BLO_readfile.h
source/blender/blenloader/intern/readfile.c
source/blender/windowmanager/intern/wm_files_link.c
===================================================================
===================================================================
diff --cc source/blender/blenloader/BLO_readfile.h
index 00d00e98c84,4fd2e227bc5..0da15fe5bbc
--- a/source/blender/blenloader/BLO_readfile.h
+++ b/source/blender/blenloader/BLO_readfile.h
@@@ -123,10 -123,9 +133,10 @@@ struct Main *BLO_library_link_begin(str
struct ID *BLO_library_link_named_part(struct Main *mainl, BlendHandle **bh, const short idcode, const char *name);
struct ID *BLO_library_link_named_part_ex(
struct Main *mainl, BlendHandle **bh,
- const short idcode, const char *name, const short flag,
- struct Scene *scene, struct ViewLayer *view_layer,
- const bool use_placeholders, const bool force_indirect);
- void BLO_library_link_end(struct Main *mainl, BlendHandle **bh, short flag, struct Scene *scene, struct ViewLayer *view_layer);
+ const short idcode, const char *name, const int flag,
- struct Scene *scene, struct View3D *v3d);
-void BLO_library_link_end(struct Main *mainl, BlendHandle **bh, short flag, struct Scene *scene, struct View3D *v3d);
++ struct Scene *scene, struct ViewLayer *view_layer);
++void BLO_library_link_end(
++ struct Main *mainl, BlendHandle **bh, int flag, struct Scene *scene, struct ViewLayer *view_layer);
void BLO_library_link_copypaste(struct Main *mainl, BlendHandle *bh);
diff --cc source/blender/blenloader/intern/readfile.c
index 9e09d2e0bd1,caf58ba3f86..6df5a505788
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@@ -251,10 -238,9 +251,11 @@@ typedef struct OldNewMap
/* local prototypes */
static void *read_struct(FileData *fd, BHead *bh, const char *blockname);
static void direct_link_modifiers(FileData *fd, ListBase *lb);
-static void convert_tface_mt(FileData *fd, Main *main);
static BHead *find_bhead_from_code_name(FileData *fd, const short idcode, const char *name);
static BHead *find_bhead_from_idname(FileData *fd, const char *idname);
+static void expand_scene_collection(FileData *fd, Main *mainvar, SceneCollection *sc);
- static SceneCollection *get_scene_collection_active_or_create(struct Scene *scene, struct ViewLayer *view_layer, const short flag);
++static SceneCollection *get_scene_collection_active_or_create(
++ struct Scene *scene, struct ViewLayer *view_layer, const int flag);
/* this function ensures that reports are printed,
* in the case of libraray linking errors this is important!
@@@ -10418,42 -10082,31 +10421,43 @@@ static ID *link_named_part
return id;
}
- static SceneCollection *get_scene_collection_active_or_create(struct Scene *scene, struct ViewLayer *view_layer, const short flag)
-static void link_object_postprocess(ID *id, Scene *scene, View3D *v3d, const int flag)
++static SceneCollection *get_scene_collection_active_or_create(
++ struct Scene *scene, struct ViewLayer *view_layer, const int flag)
+{
+ LayerCollection *lc = NULL;
+
+ if (flag & FILE_ACTIVE_COLLECTION) {
+ lc = BKE_layer_collection_get_active_ensure(scene, view_layer);
+ }
+ else {
+ SceneCollection *sc = BKE_collection_add(&scene->id, NULL, COLLECTION_TYPE_NONE, NULL);
+ lc = BKE_collection_link(view_layer, sc);
+ }
+
+ return lc->scene_collection;
+}
+
- static void link_object_postprocess(ID *id, Scene *scene, ViewLayer *view_layer, const short flag)
++static void link_object_postprocess(ID *id, Scene *scene, ViewLayer *view_layer, const int flag)
{
if (scene) {
+ /* link to scene */
Base *base;
Object *ob;
-
- base = MEM_callocN(sizeof(Base), "app_nam_part");
- BLI_addtail(&scene->base, base);
+ SceneCollection *sc;
ob = (Object *)id;
-
- /* link at active layer (view3d if available in context, else scene one */
- if (flag & FILE_ACTIVELAY) {
- ob->lay = BKE_screen_view3d_layer_active(v3d, scene);
- }
-
ob->mode = OB_MODE_OBJECT;
- base->lay = ob->lay;
- base->object = ob;
- base->flag = ob->flag;
- id_us_plus_no_lib((ID *)ob);
+
+ sc = get_scene_collection_active_or_create(scene, view_layer, flag);
+ BKE_collection_object_add(&scene->id, sc, ob);
+ base = BKE_view_layer_base_find(view_layer, ob);
+ BKE_scene_object_base_flag_sync_from_base(base);
if (flag & FILE_AUTOSELECT) {
- base->flag |= SELECT;
- base->object->flag = base->flag;
+ if (base->flag & BASE_SELECTABLED) {
+ base->flag |= BASE_SELECTED;
+ BKE_scene_object_base_flag_sync_from_base(base);
+ }
/* do NOT make base active here! screws up GUI stuff, if you want it do it on src/ level */
}
}
@@@ -10495,13 -10148,13 +10499,13 @@@ void BLO_library_link_copypaste(Main *m
}
static ID *link_named_part_ex(
- Main *mainl, FileData *fd, const short idcode, const char *name, const short flag,
- Scene *scene, ViewLayer *view_layer, const bool use_placeholders, const bool force_indirect)
+ Main *mainl, FileData *fd, const short idcode, const char *name, const int flag,
- Scene *scene, View3D *v3d)
++ Scene *scene, ViewLayer *view_layer)
{
- ID *id = link_named_part(mainl, fd, idcode, name, use_placeholders, force_indirect);
+ ID *id = link_named_part(mainl, fd, idcode, name, flag);
if (id && (GS(id->name) == ID_OB)) { /* loose object: give a base */
- link_object_postprocess(id, scene, v3d, flag);
+ link_object_postprocess(id, scene, view_layer, flag);
}
else if (id && (GS(id->name) == ID_GR)) {
/* tag as needing to be instantiated */
@@@ -10544,12 -10195,11 +10546,11 @@@ ID *BLO_library_link_named_part(Main *m
*/
ID *BLO_library_link_named_part_ex(
Main *mainl, BlendHandle **bh,
- const short idcode, const char *name, const short flag,
- Scene *scene, ViewLayer *view_layer,
- const bool use_placeholders, const bool force_indirect)
+ const short idcode, const char *name, const int flag,
- Scene *scene, View3D *v3d)
++ Scene *scene, ViewLayer *view_layer)
{
FileData *fd = (FileData*)(*bh);
- return link_named_part_ex(mainl, fd, idcode, name, flag, scene, view_layer, use_placeholders, force_indirect);
- return link_named_part_ex(mainl, fd, idcode, name, flag, scene, v3d);
++ return link_named_part_ex(mainl, fd, idcode, name, flag, scene, view_layer);
}
static void link_id_part(ReportList *reports, FileData *fd, Main *mainvar, ID *id, ID **r_id)
@@@ -10747,12 -10397,12 +10748,12 @@@ static void library_link_end(Main *main
* \param bh The blender file handle (WARNING! may be freed by this function!).
* \param flag Options for linking, used for instantiating.
* \param scene The scene in which to instantiate objects/groups (if NULL, no instantiation is done).
- * \param v3d The active View3D (only to define active layers for instantiated objects & groups, can be NULL).
+ * \param view_layer The scene layer in which to instantiate objects/groups (if NULL, no instantiation is done).
*/
- void BLO_library_link_end(Main *mainl, BlendHandle **bh, short flag, Scene *scene, ViewLayer *view_layer)
-void BLO_library_link_end(Main *mainl, BlendHandle **bh, short flag, Scene *scene, View3D *v3d)
++void BLO_library_link_end(Main *mainl, BlendHandle **bh, int flag, Scene *scene, ViewLayer *view_layer)
{
FileData *fd = (FileData*)(*bh);
- library_link_end(mainl, &fd, flag, scene, v3d);
+ library_link_end(mainl, &fd, flag, scene, view_layer);
*bh = (BlendHandle*)fd;
}
diff --cc source/blender/windowmanager/intern/wm_files_link.c
index 2086ade99d2,05c569cbaac..cd6a38cb9a8
--- a/source/blender/windowmanager/intern/wm_files_link.c
+++ b/source/blender/windowmanager/intern/wm_files_link.c
@@@ -213,9 -211,7 +213,8 @@@ static WMLinkAppendDataItem *wm_link_ap
return item;
}
-static void wm_link_do(WMLinkAppendData *lapp_data, ReportList *reports, Main *bmain, Scene *scene, View3D *v3d)
+static void wm_link_do(
- WMLinkAppendData *lapp_data, ReportList *reports, Main *bmain, Scene *scene, ViewLayer *view_layer,
- const bool use_placeholders, const bool force_indirect)
++ WMLinkAppendData *lapp_data, ReportList *reports, Main *bmain, Scene *scene, ViewLayer *view_layer)
{
Main *mainl;
BlendHandle *bh;
@@@ -262,8 -258,7 +261,7 @@@
continue;
}
- new_id = BLO_library_link_named_part_ex(
- mainl, &bh, item->idcode, item->name, flag, scene, view_layer, use_placeholders, force_indirect);
- new_id = BLO_library_link_named_part_ex(mainl, &bh, item->idcode, item->name, flag, scene, v3d);
++ new_id = BLO_library_link_named_part_ex(mainl, &bh, item->idcode, item->name, flag, scene, view_layer);
if (new_id) {
/* If the link is successful, clear item's libs 'todo' flags.
@@@ -372,10 -329,12 +370,12 @@@ static int wm_link_append_exec(bContex
scene = NULL;
}
+ /* We need to add nothing from BLO_LibLinkFlags to flag here. */
+
/* from here down, no error returns */
- if (scene && RNA_boolean_get(op->ptr, "autoselect")) {
- BKE_scene_base_deselect_all(scene);
+ if (view_layer && RNA_boolean_get(op->ptr, "autoselect")) {
+ BKE_view_layer_base_deselect_all(view_layer);
}
/* tag everything, all untagged data can be made local
@@@ -453,7 -404,7 +453,7 @@@
/* XXX We'd need re-entrant locking on Main for this to work... */
/* BKE_main_lock(bmain); */
- wm_link_do(lapp_data, op->reports, bmain, scene, view_layer, false, false);
- wm_link_do(lapp_data, op->reports, bmain, scene, CTX_wm_view3d(C));
++ wm_link_do(lapp_data, op->reports, bmain, scene, view_layer);
/* BKE_main_unlock(bmain); */
@@@ -924,7 -868,11 +924,11 @@@ static int wm_lib_relocate_exec_do(bCon
}
}
+ if (do_reload) {
+ lapp_data->flag |= BLO_LIBLINK_USE_PLACEHOLDERS | BLO_LIBLINK_FORCE_INDIRECT;
+ }
+
- lib_relocate_do(bmain, scene, lib, lapp_data, op->reports, do_reload);
+ lib_relocate_do(bmain, lib, lapp_data, op->reports, do_reload);
wm_link_append_data_free(lapp_data);
More information about the Bf-blender-cvs
mailing list