Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Vazquez <blendergit@gmail.com>2020-05-11 17:18:08 +0300
committerAntonio Vazquez <blendergit@gmail.com>2020-05-11 17:28:15 +0300
commitd63956d0e51c1b5a65941b918d0e055b1c14fa4b (patch)
tree1824ff8bb76f0fe2b50a33927f01a4f4ae6178ad /source/blender/blenloader/intern/versioning_280.c
parent870e081bcda7f8fd99f73366d22bdf372c09f054 (diff)
GPencil: Replace material name with material pointer for Modifiers filter
Before, the material name was used to filter the effect of the stroke, but after the last changes in the ID code, now it's not working. After talking with @severin, we agreed to replace the material name with a pointer. Also, this fix a design issue when the materials were linked. Related to T76594 Differential Revision: https://developer.blender.org/D7681 with some minor changes
Diffstat (limited to 'source/blender/blenloader/intern/versioning_280.c')
-rw-r--r--source/blender/blenloader/intern/versioning_280.c138
1 files changed, 138 insertions, 0 deletions
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index cc9a23dbf68..2e81372aab6 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -1750,6 +1750,144 @@ void do_versions_after_linking_280(Main *bmain, ReportList *UNUSED(reports))
}
}
+ if (!MAIN_VERSION_ATLEAST(bmain, 290, 0)) {
+ /* Patch old grease pencil modifiers material filter. */
+ LISTBASE_FOREACH (Object *, ob, &bmain->objects) {
+ LISTBASE_FOREACH (GpencilModifierData *, md, &ob->greasepencil_modifiers) {
+ switch (md->type) {
+ case eGpencilModifierType_Array: {
+ ArrayGpencilModifierData *gpmd = (ArrayGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ case eGpencilModifierType_Color: {
+ ColorGpencilModifierData *gpmd = (ColorGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ case eGpencilModifierType_Hook: {
+ HookGpencilModifierData *gpmd = (HookGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ case eGpencilModifierType_Lattice: {
+ LatticeGpencilModifierData *gpmd = (LatticeGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ case eGpencilModifierType_Mirror: {
+ MirrorGpencilModifierData *gpmd = (MirrorGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ case eGpencilModifierType_Multiply: {
+ MultiplyGpencilModifierData *gpmd = (MultiplyGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ case eGpencilModifierType_Noise: {
+ NoiseGpencilModifierData *gpmd = (NoiseGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ case eGpencilModifierType_Offset: {
+ OffsetGpencilModifierData *gpmd = (OffsetGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ case eGpencilModifierType_Opacity: {
+ OpacityGpencilModifierData *gpmd = (OpacityGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ case eGpencilModifierType_Simplify: {
+ SimplifyGpencilModifierData *gpmd = (SimplifyGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ case eGpencilModifierType_Smooth: {
+ SmoothGpencilModifierData *gpmd = (SmoothGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ case eGpencilModifierType_Subdiv: {
+ SubdivGpencilModifierData *gpmd = (SubdivGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ case eGpencilModifierType_Texture: {
+ TextureGpencilModifierData *gpmd = (TextureGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ case eGpencilModifierType_Thick: {
+ ThickGpencilModifierData *gpmd = (ThickGpencilModifierData *)md;
+ if (gpmd->materialname[0] != '\0') {
+ gpmd->material = BLI_findstring(
+ &bmain->materials, gpmd->materialname, offsetof(ID, name) + 2);
+ gpmd->materialname[0] = '\0';
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ }
+ }
+
/**
* Versioning code until next subversion bump goes here.
*