[Bf-blender-cvs] [a571bee4af6] asset-engine: Merge branch 'id_override_static' into asset-engine
Bastien Montagne
noreply at git.blender.org
Wed Nov 29 19:56:22 CET 2017
Commit: a571bee4af66461826cbdb4feac45f3ed09665a2
Author: Bastien Montagne
Date: Wed Nov 29 19:55:47 2017 +0100
Branches: asset-engine
https://developer.blender.org/rBa571bee4af66461826cbdb4feac45f3ed09665a2
Merge branch 'id_override_static' into asset-engine
Conflicts:
source/blender/blenloader/BLO_readfile.h
source/blender/blenloader/intern/readfile.c
source/blender/makesdna/DNA_ID.h
source/blender/windowmanager/intern/wm_files_link.c
===================================================================
===================================================================
diff --cc release/scripts/startup/bl_ui/space_info.py
index ce1b6ec9e69,8c7fcb29ad2..7f3507f9db0
--- a/release/scripts/startup/bl_ui/space_info.py
+++ b/release/scripts/startup/bl_ui/space_info.py
@@@ -85,18 -85,8 +85,18 @@@ class INFO_HT_header(Header)
row.label(bpy.app.autoexec_fail_message)
return
+ if (bpy.app.assets_fail or bpy.app.assets_need_reload) and not bpy.app.assets_quiet:
+ row.operator("script.assets_warn_clear", text="Ignore")
+ if bpy.app.assets_need_reload is True and bpy.app.assets_quiet is False:
+ #~ row.label(icon='SCREEN_BACK', text="Reload Assets")
+ row.operator("wm.assets_reload", icon='SCREEN_BACK', text="Reload Assets")
+ row.label("Some assets have to be reloaded", icon='INFO')
+ if bpy.app.assets_fail is True and bpy.app.assets_quiet is False:
+ row.label("Some asset engine(s) failed to retrieve updated data about their assets...", icon='ERROR')
+ return
+
row.operator("wm.splash", text="", icon='BLENDER', emboss=False)
- row.label(text=scene.statistics(context.render_layer), translate=False)
+ row.label(text=scene.statistics(context.view_layer), translate=False)
class INFO_MT_editor_menus(Menu):
diff --cc source/blender/blenkernel/intern/library_remap.c
index 24bab5e2dad,a3376dff98c..69bb26b8cd6
--- a/source/blender/blenkernel/intern/library_remap.c
+++ b/source/blender/blenkernel/intern/library_remap.c
@@@ -746,14 -746,10 +746,14 @@@ void BKE_libblock_free_data(ID *id, con
MEM_freeN(id->properties);
}
- if (id->override) {
- BKE_override_free(&id->override);
+ if (id->override_static) {
+ BKE_override_static_free(&id->override_static);
}
+ if (id->uuid) {
+ MEM_freeN(id->uuid);
+ }
+
/* XXX TODO remove animdata handling from each type's freeing func, and do it here, like for copy! */
}
diff --cc source/blender/blenloader/BLO_readfile.h
index 0bac52afc36,00d00e98c84..f9beff7a871
--- a/source/blender/blenloader/BLO_readfile.h
+++ b/source/blender/blenloader/BLO_readfile.h
@@@ -126,15 -124,9 +126,15 @@@ struct ID *BLO_library_link_named_part(
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 SceneLayer *scene_layer,
+ 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);
+struct ID *BLO_library_link_named_part_asset(
+ struct Main *mainl, BlendHandle **bh, const struct AssetEngineType *aet, const char *root,
+ const short idcode, const char *name, const struct AssetUUID *uuid, const short flag,
- struct Scene *scene, struct SceneLayer *scene_layer,
++ 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 SceneLayer *scene_layer);
++ struct Main *mainl, BlendHandle **bh, short 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 82fa166ae95,2d885fcec17..933f29db350
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@@ -2265,16 -2262,10 +2265,16 @@@ static void direct_link_id(FileData *fd
id->py_instance = NULL;
/* Link direct data of overrides. */
- if (id->override) {
- id->override = newdataadr(fd, id->override);
- link_list_ex(fd, &id->override->properties, direct_link_id_override_property_cb);
+ if (id->override_static) {
+ id->override_static = newdataadr(fd, id->override_static);
+ link_list_ex(fd, &id->override_static->properties, direct_link_id_override_property_cb);
}
+
+ if (id->uuid) {
+ id->uuid = newdataadr(fd, id->uuid);
+ id->uuid->ibuff = NULL; /* Just in case... */
+ id->uuid->width = id->uuid->height = 0;
+ }
}
/* ************ READ CurveMapping *************** */
@@@ -10440,10 -10428,8 +10466,10 @@@ 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 AssetEngineType *aet, const char *root,
+ const short idcode, const char *name, const AssetUUID *uuid, const short flag,
- Scene *scene, SceneLayer *scene_layer,
++ Scene *scene, ViewLayer *view_layer,
+ const bool use_placeholders, const bool force_indirect)
{
ID *id = link_named_part(mainl, fd, idcode, name, use_placeholders, force_indirect);
@@@ -10510,34 -10482,7 +10536,35 @@@ ID *BLO_library_link_named_part_ex
const bool use_placeholders, const bool force_indirect)
{
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, NULL, NULL, idcode, name, NULL, flag, scene, scene_layer, use_placeholders, force_indirect);
++ mainl, fd, NULL, NULL, idcode, name, NULL, flag, scene, view_layer, use_placeholders, force_indirect);
+}
+
+/**
+ * Link a named datablock from an external blend file, using given asset engine & asset UUID.
+ * Optionally instantiate the object/group in the scene when the flags are set.
+ *
+ * \param mainl The main database to link from (not the active one).
+ * \param bh The blender file handle.
+ * \param aet The asset engine type (NULL when no asset engine is used).
+ * \param root the 'path' of the asset repository.
+ * \param idcode The kind of datablock to link.
+ * \param name The name of the datablock (without the 2 char ID prefix).
+ * \param uuid The asset engine's UUID of this datablock (NULL when no asset engine is used).
+ * \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 sl The active SceneLayer (where objects & groups would be instantiated, can be NULL).
+ * \return the linked ID when found.
+ */
+struct ID *BLO_library_link_named_part_asset(
+ Main *mainl, BlendHandle **bh, const AssetEngineType *aet, const char *root,
+ const short idcode, const char *name, const AssetUUID *uuid, const short flag,
- Scene *scene, SceneLayer *scene_layer,
++ Scene *scene, ViewLayer *view_layer,
+ const bool use_placeholders, const bool force_indirect)
+{
+ FileData *fd = (FileData*)(*bh);
- return link_named_part_ex(mainl, fd, aet, root, idcode, name, uuid, flag, scene, scene_layer, use_placeholders, force_indirect);
++ return link_named_part_ex(
++ mainl, fd, aet, root, idcode, name, uuid, flag, scene, view_layer, use_placeholders, force_indirect);
}
static void link_id_part(ReportList *reports, FileData *fd, Main *mainvar, ID *id, ID **r_id)
diff --cc source/blender/blenloader/intern/writefile.c
index 47f2de524a8,30ca75d7da4..c1c00cd49ce
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@@ -682,25 -682,18 +682,25 @@@ 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);
}
- if (id->override) {
- writestruct(wd, DATA, IDOverride, 1, id->override);
+ if (id->override_static) {
+ writestruct(wd, DATA, IDOverrideStatic, 1, id->override_static);
- writelist(wd, DATA, IDOverrideProperty, &id->override->properties);
- for (IDOverrideProperty *op = id->override->properties.first; op; op = op->next) {
+ writelist(wd, DATA, IDOverrideStaticProperty, &id->override_static->properties);
+ for (IDOverrideStaticProperty *op = id->override_static->properties.first; op; op = op->next) {
writedata(wd, DATA, strlen(op->rna_path) + 1, op->rna_path);
- writelist(wd, DATA, IDOverridePropertyOperation, &op->operations);
- for (IDOverridePropertyOperation *opop = op->operations.first; opop; opop = opop->next) {
+ writelist(wd, DATA, IDOverrideStaticPropertyOperation, &op->operations);
+ for (IDOverrideStaticPropertyOperation *opop = op->operations.first; opop; opop = opop->next) {
if (opop->subitem_reference_name) {
writedata(wd, DATA, strlen(opop->subitem_reference_name) + 1, opop->subitem_reference_name);
}
diff --cc source/blender/makesdna/DNA_ID.h
index 134370d2be8,4e1161148ea..253058aad63
--- a/source/blender/makesdna/DNA_ID.h
+++ b/source/blender/makesdna/DNA_ID.h
@@@ -115,10 -115,11 +115,10 @@@ enum
/* add any future new id property types here.*/
-
/* Static ID override structs. */
- typedef struct IDOverridePropertyOperation {
- struct IDOverridePropertyOperation *next, *prev;
+ typedef struct IDOverrideStaticPropertyOperation {
+ struct IDOverrideStaticPropertyOperation *next, *prev;
/* Type of override. */
short operation;
@@@ -179,60 -182,9 +181,57 @@@ typedef struct IDOverrideStatic
/* Temp ID storing extra override data (used for differential operations only currently).
* Always NULL outside of read/write context. */
struct ID *storage;
-
- /* Runtime data. */
- double last_auto_run; /*
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list