[Bf-blender-cvs] [94bee8fa251] soc-2019-npr: Modifier: EdgeSplit modifier now has ignore_lanpr option.

YimingWu noreply at git.blender.org
Mon Jul 1 09:16:56 CEST 2019


Commit: 94bee8fa251d30e9be86a819d5e1092ae9b1d73b
Author: YimingWu
Date:   Mon Jul 1 15:15:46 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rB94bee8fa251d30e9be86a819d5e1092ae9b1d73b

Modifier: EdgeSplit modifier now has ignore_lanpr option.

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

M	release/scripts/startup/bl_ui/properties_data_modifier.py
M	source/blender/makesdna/DNA_modifier_types.h
M	source/blender/makesrna/intern/rna_modifier.c
M	source/blender/modifiers/intern/MOD_edgesplit.c

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

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 200dde60849..bc8d415fb1b 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -400,6 +400,10 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
 
         split.prop(md, "use_edge_sharp", text="Sharp Edges")
 
+        layout.prop(md, "ignore_lanpr")
+        if md.ignore_lanpr:
+            layout.label(text="Enabeling edge split may cause problems in LANPR.")
+
     def EXPLODE(self, layout, ob, md):
         split = layout.split()
 
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index a22ba7a9951..b0c883aebd0 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -354,6 +354,8 @@ typedef struct EdgeSplitModifierData {
   /** Angle above which edges should be split. */
   float split_angle;
   int flags;
+  int ignore_lanpr;
+  char _pad[4];
 } EdgeSplitModifierData;
 
 /* EdgeSplitModifierData->flags */
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index 7b9200a6475..77910fce537 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -2603,6 +2603,10 @@ static void rna_def_modifier_edgesplit(BlenderRNA *brna)
   RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_EDGESPLIT_FROMFLAG);
   RNA_def_property_ui_text(prop, "Use Sharp Edges", "Split edges that are marked as sharp");
   RNA_def_property_update(prop, 0, "rna_Modifier_update");
+
+  prop = RNA_def_property(srna, "ignore_lanpr", PROP_BOOLEAN, PROP_NONE);
+  RNA_def_property_ui_text(prop, "Ignore LANPR", "Ignore the presense of LANPR modifier.");
+  RNA_def_property_update(prop, 0, "rna_Modifier_update");
 }
 
 static void rna_def_modifier_displace(BlenderRNA *brna)
diff --git a/source/blender/modifiers/intern/MOD_edgesplit.c b/source/blender/modifiers/intern/MOD_edgesplit.c
index 59d560b9a4a..6565e0c7a96 100644
--- a/source/blender/modifiers/intern/MOD_edgesplit.c
+++ b/source/blender/modifiers/intern/MOD_edgesplit.c
@@ -127,6 +127,35 @@ static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *UNUSED(c
   return result;
 }
 
+static bool isDisabled(const struct Scene *scene, struct ModifierData *md, bool userRenderParams){
+  int lanpr_found=0;
+  ModifierData* imd;
+  EdgeSplitModifierData *emd = (EdgeSplitModifierData *)md;
+
+  for(imd = md->prev; imd; imd=imd->prev){
+    if(imd->type == eModifierType_FeatureLine){
+      lanpr_found = 1;
+      break;
+    }
+  }
+  if(!lanpr_found){
+    for(imd = md->next; imd; imd=imd->next){
+      if(imd->type == eModifierType_FeatureLine){
+        lanpr_found = 1;
+        break;
+      }
+    }
+  }
+  if(!lanpr_found){
+    return false;
+  }else{
+    if(emd->ignore_lanpr){
+      return false;
+    }
+    return true;
+  }
+}
+
 ModifierTypeInfo modifierType_EdgeSplit = {
     /* name */ "EdgeSplit",
     /* structName */ "EdgeSplitModifierData",
@@ -147,7 +176,7 @@ ModifierTypeInfo modifierType_EdgeSplit = {
     /* initData */ initData,
     /* requiredDataMask */ NULL,
     /* freeData */ NULL,
-    /* isDisabled */ NULL,
+    /* isDisabled */ isDisabled,
     /* updateDepsgraph */ NULL,
     /* dependsOnTime */ NULL,
     /* dependsOnNormals */ NULL,



More information about the Bf-blender-cvs mailing list