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

Antonio Vazquez noreply at git.blender.org
Wed Nov 22 19:00:32 CET 2017


Commit: b24034544c3862706069b0cd888e845c29ade9a4
Author: Antonio Vazquez
Date:   Wed Nov 22 18:50:53 2017 +0100
Branches: greasepencil-object
https://developer.blender.org/rBb24034544c3862706069b0cd888e845c29ade9a4

Merge branch 'blender2.8' into greasepencil-object

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



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

diff --cc source/blender/blenloader/intern/versioning_280.c
index 71392448357,3c63832c575..26a395e34dd
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@@ -531,60 -526,21 +531,76 @@@ void do_versions_after_linking_280(Mai
  	if (!MAIN_VERSION_ATLEAST(main, 280, 1)) {
  		do_version_workspaces_after_lib_link(main);
  	}
+ 
+ 	{
+ 		/* 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);
+ 		}
+ 	}
++}
 +	
 +	/* 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);
 +				}
 +
 +				ob = BKE_object_add_for_data(main, scene, scene_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);
 +				}
 +			}
 +		}
 +	}
 +	
  }
  
  static void do_version_layer_collections_idproperties(ListBase *lb)



More information about the Bf-blender-cvs mailing list