[Bf-blender-cvs] [a6d584fc46d] greasepencil-object: Merge commit '3abe8b3292cf7a50a9200b95401993384df24d9a' into greasepencil-object
Dalai Felinto
noreply at git.blender.org
Thu Nov 23 14:05:26 CET 2017
Commit: a6d584fc46de2a53357a9a3d813f80889472266a
Author: Dalai Felinto
Date: Thu Nov 23 10:34:42 2017 -0200
Branches: greasepencil-object
https://developer.blender.org/rBa6d584fc46de2a53357a9a3d813f80889472266a
Merge commit '3abe8b3292cf7a50a9200b95401993384df24d9a' into greasepencil-object
Note: Since grease pencil had its own subversion, and this merge brings 2.80
subversion 2 as well, the files should be saved BEFORE this commit, to be sure
that all the doversion happened.
===================================================================
===================================================================
diff --cc source/blender/blenkernel/BKE_modifier.h
index 586584e7f05,451823aedf5..d4f84c9a1fa
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@@ -37,10 -37,9 +37,10 @@@ struct DerivedMesh
struct DagForest;
struct DagNode;
struct EvaluationContext;
+struct bContext;
struct Object;
struct Scene;
- struct SceneLayer;
+ struct ViewLayer;
struct ListBase;
struct bArmature;
struct Main;
diff --cc source/blender/blenkernel/BKE_object.h
index 6ab48f3c25f,f346be296a1..7213cb0769f
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@@ -37,8 -37,7 +37,8 @@@ extern "C"
struct EvaluationContext;
struct Scene;
- struct SceneLayer;
+ struct ViewLayer;
+struct ID;
struct Object;
struct BoundBox;
struct View3D;
@@@ -94,12 -93,9 +94,12 @@@ struct Object *BKE_object_add
int type, const char *name)
ATTR_NONNULL(1, 2, 3) ATTR_RETURNS_NONNULL;
struct Object *BKE_object_add_from(
- struct Main *bmain, struct Scene *scene, struct SceneLayer *scene_layer,
+ struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer,
int type, const char *name, struct Object *ob_src)
ATTR_NONNULL(1, 2, 3, 6) ATTR_RETURNS_NONNULL;
+struct Object *BKE_object_add_for_data(
- struct Main *bmain, struct Scene *scene, struct SceneLayer *scene_layer,
++ struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer,
+ int type, const char *name, struct ID *data, bool add_user) ATTR_RETURNS_NONNULL;
void *BKE_object_obdata_add_from_type(
struct Main *bmain,
int type, const char *name)
diff --cc source/blender/blenkernel/intern/object.c
index bf73b154846,95394f6be63..ba792af1432
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@@ -768,10 -756,10 +768,10 @@@ Object *BKE_object_add
/**
* Add a new object, using another one as a reference
*
- * /param ob_src object to use to determine the collections of the new object.
+ * \param ob_src object to use to determine the collections of the new object.
*/
Object *BKE_object_add_from(
- Main *bmain, Scene *scene, SceneLayer *scene_layer,
+ Main *bmain, Scene *scene, ViewLayer *view_layer,
int type, const char *name, Object *ob_src)
{
Object *ob;
@@@ -786,41 -774,6 +786,41 @@@
return ob;
}
+/**
+ * Add a new object, but assign the given datablock as the ob->data
+ * for the newly created object.
+ *
+ * \param data The datablock to assign as ob->data for the new object.
+ * This is assumed to be of the correct type.
+ * \param add_user If true, id_us_plus() will be called on data when
+ * assigning it to the object.
+ */
+Object *BKE_object_add_for_data(
- Main *bmain, Scene *scene, SceneLayer *scene_layer,
++ Main *bmain, Scene *scene, ViewLayer *view_layer,
+ int type, const char *name, ID *data, bool add_user)
+{
+ Object *ob;
+ Base *base;
+ LayerCollection *layer_collection;
+
+ /* same as object_add_common, except we don't create new ob->data */
+ ob = BKE_object_add_only_object(bmain, type, name);
+ ob->data = data;
+ if (add_user) id_us_plus(data);
+
- BKE_scene_layer_base_deselect_all(scene_layer);
++ BKE_view_layer_base_deselect_all(view_layer);
+ DEG_id_tag_update_ex(bmain, &ob->id, OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME);
+
- layer_collection = BKE_layer_collection_get_active_ensure(scene, scene_layer);
++ layer_collection = BKE_layer_collection_get_active_ensure(scene, view_layer);
+ BKE_collection_object_add(scene, layer_collection->scene_collection, ob);
+
- base = BKE_scene_layer_base_find(scene_layer, ob);
- BKE_scene_layer_base_select(scene_layer, base);
++ base = BKE_view_layer_base_find(view_layer, ob);
++ BKE_view_layer_base_select(view_layer, base);
+
+ return ob;
+}
+
+
#ifdef WITH_GAMEENGINE
void BKE_object_lod_add(Object *ob)
diff --cc source/blender/blenloader/intern/readfile.c
index 460c7737b56,065e0871a3d..d5c83d8e784
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@@ -253,9 -252,7 +253,9 @@@ static void *read_struct(FileData *fd,
static void direct_link_modifiers(FileData *fd, ListBase *lb);
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 SceneCollection *get_scene_collection_active_or_create(struct Scene *scene, struct SceneLayer *scene_layer, const short flag);
+ static SceneCollection *get_scene_collection_active_or_create(struct Scene *scene, struct ViewLayer *view_layer, const short flag);
+static void direct_link_animdata(FileData *fd, AnimData *adt);
+static void lib_link_animdata(FileData *fd, ID *id, AnimData *adt);
/* this function ensures that reports are printed,
* in the case of libraray linking errors this is important!
diff --cc source/blender/blenloader/intern/versioning_280.c
index 56e5df4e8a1,8da4fef7b21..62b55903e02
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@@ -532,73 -527,20 +532,73 @@@ void do_versions_after_linking_280(Mai
do_version_workspaces_after_lib_link(main);
}
+ if (!MAIN_VERSION_ATLEAST(main, 280, 2)) {
+ /* Cleanup any remaining SceneRenderLayer data for files that were created
- * with Blender 2.8 before the SceneRenderLayer > RenderLayer refactor. */
++ * with Blender 2.8 before the SceneRenderLayer > RenderLayer refactor. */
+ for (Scene *scene = main->scene.first; scene; scene = scene->id.next) {
+ for (SceneRenderLayer *srl = scene->r.layers.first; srl; srl = srl->next) {
+ if (srl->prop) {
+ IDP_FreeProperty(srl->prop);
+ MEM_freeN(srl->prop);
+ }
+ BKE_freestyle_config_free(&srl->freestyleConfig);
+ }
+ BLI_freelistN(&scene->r.layers);
+ }
+ }
++
+ /* Grease Pencil Object */
+ if (!MAIN_VERSION_ATLEAST(main, 280, 2)) {
+ /* Convert grease pencil datablock to GP object */
+ for (Scene *scene = main->scene.first; scene; scene = scene->id.next) {
+ if (scene->gpd) {
+ Object *ob;
- SceneLayer *scene_layer = BKE_scene_layer_from_scene_get(scene);
- if (scene_layer == NULL) {
- scene_layer = BKE_scene_layer_add(scene, "Viewport");
- printf("added scene layer again - %p\n", scene_layer);
++ ViewLayer *view_layer = BKE_view_layer_from_scene_get(scene);
++ if (view_layer == NULL) {
++ view_layer = BKE_view_layer_add(scene, "Viewport");
++ printf("added scene layer again - %p\n", view_layer);
+ }
+
- ob = BKE_object_add_for_data(main, scene, scene_layer, OB_GPENCIL, "GP_Scene", &scene->gpd->id, false);
++ ob = BKE_object_add_for_data(main, scene, view_layer, OB_GPENCIL, "GP_Scene", &scene->gpd->id, false);
+ zero_v3(ob->loc);
+ scene->gpd = NULL;
+
+ /* set cache as dirty */
+ BKE_gpencil_batch_cache_dirty(ob->data);
+ }
+ }
+ }
-
++
+ /* XXX: Merge back into previous case... leaving like this so the Hero animatic/production files so far don't break */
+ if (!MAIN_VERSION_ATLEAST(main, 280, 3)) {
+ /* Handle object-linked grease pencil datablocks */
+ for (Object *ob = main->object.first; ob; ob = ob->id.next) {
+ if (ob->gpd) {
+ if (ob->type == OB_GPENCIL) {
+ /* GP Object - remap the links */
+ ob->data = ob->gpd;
+ ob->gpd = NULL;
+ }
+ else if (ob->type == OB_EMPTY) {
+ /* Empty with GP data - This should be able to be converted
+ * to a GP object with little data loss
+ */
+ ob->data = ob->gpd;
+ ob->gpd = NULL;
+ ob->type = OB_GPENCIL;
+ }
+ else {
+ /* FIXME: What to do in this case?
+ *
+ * We cannot create new objects for these, as we don't have a scene & scene layer
+ * to put them into from here...
+ */
+ printf("WARNING: Old Grease Pencil data ('%s') still exists on Object '%s'\n",
+ ob->gpd->id.name+2, ob->id.name+2);
+ }
+ }
+ }
+ }
-
- {
- /* Cleanup any remaining SceneRenderLayer data for files that were created
- * with Blender 2.8 before the SceneRenderLayer > RenderLayer refactor. */
- for (Scene *scene = main->scene.first; scene; scene = scene->id.next) {
- for (SceneRenderLayer *srl = scene->r.layers.first; srl; srl = srl->next) {
- if (srl->prop) {
- IDP_FreeProperty(srl->prop);
- MEM_freeN(srl->prop);
- }
- BKE_freestyle_config_free(&srl->freestyleConfig);
- }
- BLI_freelistN(&scene->r.layers);
- }
- }
}
static void do_version_layer_collections_idproperties(ListBase *lb)
@@@ -690,249 -632,125 +690,243 @@@ void blo_do_versions_280(FileData *fd,
}
}
+ if (!MAIN_VERSION_ATLEAST(main, 280, 2)) {
+ if (!DNA_struct_elem_find(fd->filesdna, "View3D", "short", "custom_orientation_index")) {
+ for (bScreen *screen = main->screen.first; screen; screen = screen->id.next) {
+ for (ScrArea *area = screen->areabase.first; area; area = area->next) {
+ for (SpaceLink *sl = area->spacedata.first; sl; sl = sl->next) {
+ if (sl->spacetype == SPACE_VIEW3D) {
+ View3D *v3d = (View3D *)sl;
+ if (v3d->twmode >= V3D_MANIP_CUSTOM) {
+ v3d->custom_orientation_index = v3d->twmode - V3D_MANIP_CUSTOM;
+ v3d->twmode = V3D_MANIP_CUSTOM;
+ }
+ else {
+ v3d->custom_orientation_index = -1;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (!DNA_struct_elem_find(fd->filesdna, "Lamp", "float", "cascade_max_dist")) {
+ for (Lamp *la = main->lamp.first; la; la = la->id.next) {
+ la->cascade_max_dist = 1000.0f;
+ la->cascade_count = 4;
+ la->cascade_exponent = 0.8f;
+ la->cascade_fade = 0.1f;
+ }
+ }
+
+ if (!DNA_struct_elem_find(fd->filesdna, "Lamp", "float", "contact_dist")) {
+ for (Lamp *la = main->lamp.first; la; la = la->id.next) {
+ la->contact_dist = 1.0f;
+ la->contact_bias = 0.03f;
+ la->contact_spread = 0.2f;
+ la->contact_thickness = 0.5f;
+ }
+ }
+
+
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list