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:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-08-06 19:20:14 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-08-06 19:20:14 +0400
commita334b5a4b6bee306ba014aa5f9df608de0259735 (patch)
tree252884b89420517af6f5c585d6f04609ca3492a1 /source/blender
parentfd666b2c78bdf74bebdcde3c6a9192a435d58bdd (diff)
Made feather self-intersection check an option.
Useful in cases when masking stuff like self-intersecting ropes. This could probably be smarter option, but can't currently think about robust approach here.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/intern/mask.c3
-rw-r--r--source/blender/makesdna/DNA_mask_types.h3
-rw-r--r--source/blender/makesrna/intern/rna_mask.c7
3 files changed, 11 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c
index 3208862cef6..4b4dcff229d 100644
--- a/source/blender/blenkernel/intern/mask.c
+++ b/source/blender/blenkernel/intern/mask.c
@@ -779,7 +779,8 @@ float (*BKE_mask_spline_feather_differentiated_points_with_resolution_ex(MaskSpl
*tot_feather_point = tot;
- spline_feather_collapse_inner_loops(spline, feather, tot);
+ if (spline->flag & MASK_SPLINE_NOINTERSECT)
+ spline_feather_collapse_inner_loops(spline, feather, tot);
return feather;
}
diff --git a/source/blender/makesdna/DNA_mask_types.h b/source/blender/makesdna/DNA_mask_types.h
index e7322263a6b..b34a6c9b12f 100644
--- a/source/blender/makesdna/DNA_mask_types.h
+++ b/source/blender/makesdna/DNA_mask_types.h
@@ -141,7 +141,8 @@ typedef struct MaskLayer {
/* reserve (1 << 0) for SELECT */
enum {
MASK_SPLINE_CYCLIC = (1 << 1),
- MASK_SPLINE_NOFILL = (1 << 2)
+ MASK_SPLINE_NOFILL = (1 << 2),
+ MASK_SPLINE_NOINTERSECT = (1 << 3)
};
/* MaskSpline->weight_interp */
diff --git a/source/blender/makesrna/intern/rna_mask.c b/source/blender/makesrna/intern/rna_mask.c
index 9ee2bb99b4e..f197bf8391d 100644
--- a/source/blender/makesrna/intern/rna_mask.c
+++ b/source/blender/makesrna/intern/rna_mask.c
@@ -568,6 +568,13 @@ static void rna_def_maskSpline(BlenderRNA *brna)
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", MASK_SPLINE_NOFILL);
RNA_def_property_ui_text(prop, "Fill", "Make this spline filled");
RNA_def_property_update(prop, NC_MASK | NA_EDITED, "rna_Mask_update_data");
+
+ /* self-intersection check */
+ prop = RNA_def_property(srna, "use_self_intersection_check", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", MASK_SPLINE_NOINTERSECT);
+ RNA_def_property_ui_text(prop, "Self Intersection Check", "Prevent feather from self-intersections");
+ RNA_def_property_update(prop, NC_MASK | NA_EDITED, "rna_Mask_update_data");
}
static void rna_def_mask_layer(BlenderRNA *brna)