[Bf-blender-cvs] [09b41b9ef17] greasepencil-object: Merge branch 'blender2.8' into greasepencil-object

Antonio Vazquez noreply at git.blender.org
Mon Apr 23 10:08:40 CEST 2018


Commit: 09b41b9ef175a7edcb76d5332123c095d19ab8ea
Author: Antonio Vazquez
Date:   Mon Apr 23 10:08:20 2018 +0200
Branches: greasepencil-object
https://developer.blender.org/rB09b41b9ef175a7edcb76d5332123c095d19ab8ea

Merge branch 'blender2.8' into greasepencil-object

 Conflicts:
	release/scripts/addons
	release/scripts/addons_contrib
	source/blender/blenloader/intern/versioning_280.c

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



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

diff --cc source/blender/blenloader/intern/versioning_280.c
index 43295a34c95,661b7b53260..f4cdf5f423d
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@@ -632,56 -651,41 +657,91 @@@ void do_versions_after_linking_280(Mai
  		}
  	}
  
+ 	/* SpaceTime & SpaceLogic removal/replacing */
+ 	if (!MAIN_VERSION_ATLEAST(main, 280, 9)) {
+ 		const wmWindowManager *wm = main->wm.first;
+ 		const Scene *scene = main->scene.first;
+ 
+ 		/* Action editors need a scene for creation. First, update active
+ 		 * screens using the active scene of the window they're displayed in.
+ 		 * Next, update remaining screens using first scene in main listbase. */
+ 
+ 		for (wmWindow *win = wm->windows.first; win; win = win->next) {
+ 			const bScreen *screen = BKE_workspace_active_screen_get(win->workspace_hook);
+ 			for (ScrArea *area = screen->areabase.first; area; area = area->next) {
+ 				if (ELEM(area->butspacetype, SPACE_TIME, SPACE_LOGIC)) {
+ 					do_version_area_change_space_to_space_action(area, win->scene);
+ 
+ 					/* Don't forget to unset! */
+ 					area->butspacetype = SPACE_EMPTY;
+ 				}
+ 			}
+ 		}
+ 
+ 		for (bScreen *screen = main->screen.first; screen; screen = screen->id.next) {
+ 			for (ScrArea *area = screen->areabase.first; area; area = area->next) {
+ 				if (ELEM(area->butspacetype, SPACE_TIME, SPACE_LOGIC)) {
+ 					/* Areas that were already handled won't be handled again */
+ 					do_version_area_change_space_to_space_action(area, scene);
+ 
+ 					/* Don't forget to unset! */
+ 					area->butspacetype = SPACE_EMPTY;
+ 				}
+ 			}
+ 		}
+ 	}
+ }
+ 
 +	/* Grease Pencil Object */
 +	/* Convert grease pencil datablock to GP object */
 +	for (Scene *scene = main->scene.first; scene; scene = scene->id.next) {
 +		if (scene->gpd) {
 +			Object *ob;
 +			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, 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);
 +		}
 +	}
 +
 +	/* 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);
 +			}
 +		}
 +	}
 +
 +}
 +
  static void do_version_layer_collections_idproperties(ListBase *lb)
  {
  	IDPropertyTemplate val = {0};



More information about the Bf-blender-cvs mailing list