[Bf-blender-cvs] [b8f91e8bff0] hair_object: Merge HairPattern into HairCurveData, no reason to keep these separate any more.
Lukas Tönne
noreply at git.blender.org
Sun Nov 18 12:31:33 CET 2018
Commit: b8f91e8bff04681a5926fb0e0028e4590f88deef
Author: Lukas Tönne
Date: Sun Nov 18 11:26:43 2018 +0000
Branches: hair_object
https://developer.blender.org/rBb8f91e8bff04681a5926fb0e0028e4590f88deef
Merge HairPattern into HairCurveData, no reason to keep these separate any more.
===================================================================
M source/blender/blenkernel/BKE_hair.h
M source/blender/blenkernel/BKE_hair_iterators.h
M source/blender/blenkernel/intern/hair.c
M source/blender/blenloader/intern/readfile.c
M source/blender/blenloader/intern/writefile.c
M source/blender/draw/intern/draw_cache_impl_hair.c
M source/blender/editors/hair/edithair.c
M source/blender/editors/hair/edithair_select.c
M source/blender/editors/hair/edithair_test.c
M source/blender/editors/space_view3d/view3d_iterators.c
M source/blender/makesdna/DNA_hair_types.h
M source/blender/makesrna/intern/rna_hair.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_hair.h b/source/blender/blenkernel/BKE_hair.h
index 4e795cf601c..bbdeefc3cf4 100644
--- a/source/blender/blenkernel/BKE_hair.h
+++ b/source/blender/blenkernel/BKE_hair.h
@@ -38,7 +38,6 @@ static const unsigned int HAIR_CURVE_INDEX_NONE = 0xFFFFFFFF;
struct Depsgraph;
struct HairFollicle;
-struct HairPattern;
struct HairSystem;
struct HairDrawSettings;
struct HairCurveData;
@@ -74,10 +73,6 @@ bool BKE_hair_minmax(struct HairSystem *hsys, float min[3], float max[3]);
void BKE_hair_boundbox_calc(struct HairSystem *hsys);
struct BoundBox *BKE_hair_boundbox_get(struct Object *ob);
-struct HairPattern *BKE_hair_pattern_new(void);
-void BKE_hair_pattern_free(struct HairPattern *pattern);
-struct HairPattern *BKE_hair_pattern_copy(const struct HairPattern *src_pattern, int flag);
-
void BKE_hair_curve_data_init(struct HairCurveData *data);
/* Does not free the data pointer itself! */
void BKE_hair_curve_data_free(struct HairCurveData *data);
@@ -177,6 +172,7 @@ void BKE_hair_draw_settings_free(struct HairDrawSettings *draw_settings);
/* === Depsgraph evaluation === */
void BKE_hair_eval_geometry(const struct Depsgraph *depsgraph, struct HairSystem *hsys);
+void BKE_hair_ensure_follicle_space(const struct Mesh *scalp, struct HairCurveData *curve_data);
void BKE_hair_modifiers_calc(const struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob);
diff --git a/source/blender/blenkernel/BKE_hair_iterators.h b/source/blender/blenkernel/BKE_hair_iterators.h
index 3962d30a9af..8f67b4a0b0b 100644
--- a/source/blender/blenkernel/BKE_hair_iterators.h
+++ b/source/blender/blenkernel/BKE_hair_iterators.h
@@ -127,10 +127,10 @@ BLI_INLINE HairFiberVertex* BKE_hair_iter__verts_next(HairIterator *iter)
/* Follicles */
-BLI_INLINE HairFollicle* BKE_hair_iter__follicles_init(HairIterator *iter, const HairPattern *pattern)
+BLI_INLINE HairFollicle* BKE_hair_iter__follicles_init(HairIterator *iter, const HairCurveData *curve_data)
{
- iter->data.follicles.last = pattern->follicles + pattern->num_follicles;
- iter->data.follicles.follicle = pattern->follicles;
+ iter->data.follicles.last = curve_data->follicles + curve_data->totfollicles;
+ iter->data.follicles.follicle = curve_data->follicles;
return iter->data.follicles.follicle;
}
@@ -147,14 +147,14 @@ BLI_INLINE HairFollicle* BKE_hair_iter__follicles_next(HairIterator *iter)
/* Follicle Curves */
-BLI_INLINE HairFollicle* BKE_hair_iter__follicle_curves_init(HairIterator *iter, const HairPattern *pattern, const HairCurveData *curve_data)
+BLI_INLINE HairFollicle* BKE_hair_iter__follicle_curves_init(HairIterator *iter, const HairCurveData *curve_data)
{
HairIter__follicle_curves *intern = &iter->data.follicle_curves;
- intern->last = pattern->follicles + pattern->num_follicles;
+ intern->last = curve_data->follicles + curve_data->totfollicles;
intern->curves_array = curve_data->curves;
- intern->follicle = pattern->follicles;
+ intern->follicle = curve_data->follicles;
while (intern->follicle != intern->last) {
if (intern->follicle->curve != HAIR_CURVE_INDEX_NONE) {
intern->curve = &intern->curves_array[intern->follicle->curve];
@@ -235,18 +235,18 @@ BLI_INLINE HairFiberVertex* BKE_hair_iter__curve_verts_next(HairIterator *iter)
BKE_hair_iter__verts_valid(iter); \
(ele) = BKE_hair_iter__verts_next(iter), ++(indexvar))
-#define BKE_HAIR_ITER_FOLLICLES(ele, iter, pattern) \
- for ((ele) = BKE_hair_iter__follicles_init((iter), (pattern)); \
+#define BKE_HAIR_ITER_FOLLICLES(ele, iter, curve_data) \
+ for ((ele) = BKE_hair_iter__follicles_init((iter), (curve_data)); \
BKE_hair_iter__follicles_valid(iter); \
(ele) = BKE_hair_iter__follicles_next(iter))
-#define BKE_HAIR_ITER_FOLLICLES_INDEX(ele, iter, pattern, indexvar) \
- for ((ele) = BKE_hair_iter__follicles_init((iter), (pattern)), (indexvar = 0); \
+#define BKE_HAIR_ITER_FOLLICLES_INDEX(ele, iter, curve_data, indexvar) \
+ for ((ele) = BKE_hair_iter__follicles_init((iter), (curve_data)), (indexvar = 0); \
BKE_hair_iter__follicles_valid(iter); \
(ele) = BKE_hair_iter__follicles_next(iter), ++(indexvar))
-#define BKE_HAIR_ITER_FOLLICLE_CURVES(ele, curvevar, iter, pattern, curve_data) \
- for ((ele) = BKE_hair_iter__follicle_curves_init((iter), (pattern), (curve_data)), \
+#define BKE_HAIR_ITER_FOLLICLE_CURVES(ele, curvevar, iter, curve_data) \
+ for ((ele) = BKE_hair_iter__follicle_curves_init((iter), (curve_data)), \
(curvevar) = (iter)->data.follicle_curves.curve; \
BKE_hair_iter__follicle_curves_valid(iter); \
(ele) = BKE_hair_iter__follicle_curves_next((iter)), \
diff --git a/source/blender/blenkernel/intern/hair.c b/source/blender/blenkernel/intern/hair.c
index 24d814fb5f3..28b6a50a1de 100644
--- a/source/blender/blenkernel/intern/hair.c
+++ b/source/blender/blenkernel/intern/hair.c
@@ -72,7 +72,6 @@ void BKE_hair_init(HairSystem *hsys)
hsys->bb = BKE_boundbox_alloc_unit();
BKE_hair_curve_data_init(&hsys->curve_data);
- hsys->pattern = BKE_hair_pattern_new();
hsys->draw_settings = BKE_hair_draw_settings_new();
}
@@ -85,39 +84,11 @@ void *BKE_hair_add(Main *bmain, const char *name)
return hsys;
}
-HairPattern *BKE_hair_pattern_new(void)
-{
- HairPattern *pattern = MEM_callocN(sizeof(HairPattern), "hair pattern");
- CustomData_reset(&pattern->fdata);
- return pattern;
-}
-
-void BKE_hair_pattern_free(HairPattern *pattern)
-{
- if (pattern) {
- MEM_SAFE_FREE(pattern->follicles);
- CustomData_free(&pattern->fdata, pattern->num_follicles);
- MEM_freeN(pattern);
- }
-}
-
-HairPattern *BKE_hair_pattern_copy(const HairPattern *src_pattern, int flag)
-{
- HairPattern *dst_pattern = MEM_dupallocN(src_pattern);
- if (src_pattern) {
- dst_pattern->follicles = MEM_dupallocN(src_pattern->follicles);
-
- CustomDataMask mask = CD_MASK_EVERYTHING;
- const eCDAllocType alloc_type = (flag & LIB_ID_COPY_CD_REFERENCE) ? CD_REFERENCE : CD_DUPLICATE;
- CustomData_copy(&src_pattern->fdata, &dst_pattern->fdata, mask, alloc_type, dst_pattern->num_follicles);
- }
- return dst_pattern;
-}
-
void BKE_hair_curve_data_init(HairCurveData *data)
{
CustomData_reset(&data->vdata);
CustomData_reset(&data->cdata);
+ CustomData_reset(&data->fdata);
}
/* Does not free the data pointer itself! */
@@ -125,27 +96,33 @@ void BKE_hair_curve_data_free(HairCurveData *data)
{
MEM_SAFE_FREE(data->curves);
MEM_SAFE_FREE(data->verts);
+ MEM_SAFE_FREE(data->follicles);
CustomData_free(&data->vdata, data->totverts);
CustomData_free(&data->cdata, data->totcurves);
+ CustomData_free(&data->fdata, data->totfollicles);
}
void BKE_hair_curve_data_copy(HairCurveData *dst_data, const HairCurveData *src_data, int flag)
{
- if (src_data->curves)
- {
+ if (src_data->curves) {
dst_data->curves = MEM_dupallocN(src_data->curves);
}
- if (src_data->verts)
- {
+ if (src_data->verts) {
dst_data->verts = MEM_dupallocN(src_data->verts);
}
+ if (src_data->follicles) {
+ dst_data->follicles = MEM_dupallocN(src_data->follicles);
+ }
+
dst_data->totcurves = src_data->totcurves;
dst_data->totverts = src_data->totverts;
+ dst_data->totfollicles = src_data->totfollicles;
CustomDataMask mask = CD_MASK_EVERYTHING;
const eCDAllocType alloc_type = (flag & LIB_ID_COPY_CD_REFERENCE) ? CD_REFERENCE : CD_DUPLICATE;
CustomData_copy(&src_data->vdata, &dst_data->vdata, mask, alloc_type, dst_data->totverts);
CustomData_copy(&src_data->cdata, &dst_data->cdata, mask, alloc_type, dst_data->totcurves);
+ CustomData_copy(&src_data->fdata, &dst_data->fdata, mask, alloc_type, dst_data->totfollicles);
}
/** Free (or release) any data used by this hair system (does not free the hair system itself). */
@@ -160,14 +137,12 @@ void BKE_hair_free(HairSystem *hsys)
EditHair *edit = hsys->edithair;
BKE_hair_curve_data_free(&edit->curve_data);
- BKE_hair_pattern_free(edit->pattern);
MEM_freeN(edit);
hsys->edithair = NULL;
}
BKE_hair_curve_data_free(&hsys->curve_data);
- BKE_hair_pattern_free(hsys->pattern);
MEM_SAFE_FREE(hsys->draw_settings);
MEM_SAFE_FREE(hsys->mat);
@@ -188,7 +163,6 @@ void BKE_hair_copy_data(Main *UNUSED(bmain), HairSystem *hsys_dst, const HairSys
hsys_dst->edithair = NULL;
- hsys_dst->pattern = BKE_hair_pattern_copy(hsys_src->pattern, flag);
BKE_hair_curve_data_copy(&hsys_dst->curve_data, &hsys_src->curve_data, flag);
hsys_dst->mat = MEM_dupallocN(hsys_src->mat);
@@ -211,7 +185,7 @@ HairSystem *BKE_hair_copy(Main *bmain, const HairSystem *hsys)
/* Custom data layer functions; those assume that totXXX are set correctly. */
static void hair_ensure_cdlayers_primary(HairSystem *hsys)
{
- // if (!CustomData_get_layer(&hsys->pattern->fdata, CD_MVERT))
+ // if (!CustomData_get_layer(&hsys->curve_data.fdata, CD_MVERT))
// CustomData_add_layer(&mesh->vdata, CD_MVERT, CD_CALLOC, NULL, mesh->totvert);
}
@@ -232,13 +206,13 @@ HairSystem *BKE_hair_new_nomain(int verts_len, int curves_len, int follicles_len
BKE_libblock_init_empty(&hsys->id);
/* don't use CustomData_reset(...); because we dont want to touch customdata */
- copy_vn_i(hsys->pattern->fdata.typemap, CD_NUMTYPES, -1);
+ copy_vn_i(hsys->curve_data.fdata.typemap, CD_NUMTYPES, -1);
copy_vn_i(hsys->curve_data.vdata.typemap, CD_NUMTYPES, -1);
copy_vn_i(hsys->curve_data.cdata.typemap, CD_NUMTYPES, -1);
hsys->curve_data.totverts = verts_len;
hsys->curve_data.totcurves = curves_len;
- hsys->pattern->num_follicles = follicles_len;
+ hsys->curve_data.totfollicles = follicles_len;
hair_ensure_cdlayers_primary(hsys);
hair_ensure_cdlayers_origindex(hsys);
@@ -257,9 +231,9 @@ static HairSystem *hair_new_nomain_from_template_ex(
hsys_dst->curve_data.totverts = verts_len;
hsys_dst->curve_data.totcurves = curves_len;
- hsys_dst->pattern->num_follicles = follicles_len;
+ hsys_dst->curve_data.totfollicles = follicles_len;
- CustomData_copy(&hsys_src->pattern->fdata, &hsys_dst->pattern->fdata, mask, CD_CALLOC, follicles_len);
+ CustomData_copy(&hsys_src->curve_data.fdata, &hsys_dst->curve_data.fdata, mask, CD_CALLOC, follicles_len);
CustomData_copy(&hsys_src->curve_data.vdata, &hsys_dst->c
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list