diff options
author | Lukas Tönne <lukas.toenne@gmail.com> | 2014-12-05 16:42:22 +0300 |
---|---|---|
committer | Lukas Tönne <lukas.toenne@gmail.com> | 2015-04-20 13:23:15 +0300 |
commit | 56a09434c533e5ca72d2f8ff6e144bfcdd88886c (patch) | |
tree | 9ca26e1fc412da4c3cd21fba2334af8a89103105 /source/blender/bmesh/intern | |
parent | 8672304e30a207767888b75ebe9015ad7f3210a3 (diff) |
Basic Add tool for creating new strands in hair edit mode.
Diffstat (limited to 'source/blender/bmesh/intern')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_strands.c | 28 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_strands.h | 3 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_strands_conv.c | 5 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_strands_conv.h | 2 |
4 files changed, 33 insertions, 5 deletions
diff --git a/source/blender/bmesh/intern/bmesh_strands.c b/source/blender/bmesh/intern/bmesh_strands.c index ae8fd7ae4f1..ec1b7781dd6 100644 --- a/source/blender/bmesh/intern/bmesh_strands.c +++ b/source/blender/bmesh/intern/bmesh_strands.c @@ -27,6 +27,7 @@ #include "MEM_guardedalloc.h" #include "BLI_utildefines.h" +#include "BLI_math.h" #include "BLI_mempool.h" #include "bmesh.h" @@ -115,3 +116,30 @@ int BM_strands_keys_count(BMVert *root) return count; } +/* ------------------------------------------------------------------------- */ + +/* Create a new strand */ +BMVert *BM_strands_create(BMesh *bm, int len, bool set_defaults) +{ + float co[3] = {0.0f, 0.0f, 0.0f}; + + BMVert *root, *v, *vprev; + int k; + + for (k = 0; k < len; ++k) { + vprev = v; + v = BM_vert_create(bm, co, NULL, set_defaults ? BM_CREATE_NOP : BM_CREATE_SKIP_CD); + + zero_v3(v->no); + + /* root */ + if (k == 0) { + root = v; + } + else { + /*BMEdge *e =*/ BM_edge_create(bm, vprev, v, NULL, set_defaults ? BM_CREATE_NOP : BM_CREATE_SKIP_CD); + } + } + + return root; +} diff --git a/source/blender/bmesh/intern/bmesh_strands.h b/source/blender/bmesh/intern/bmesh_strands.h index 8410bfd8443..66284ee62f8 100644 --- a/source/blender/bmesh/intern/bmesh_strands.h +++ b/source/blender/bmesh/intern/bmesh_strands.h @@ -72,6 +72,9 @@ BLI_INLINE bool BM_strands_vert_is_tip(BMVert *v) int BM_strands_count(BMesh *bm); int BM_strands_keys_count(BMVert *root); +/* Create a new strand */ +struct BMVert *BM_strands_create(struct BMesh *bm, int len, bool set_defaults); + /* ==== Iterators ==== */ typedef enum BMStrandsIterType { diff --git a/source/blender/bmesh/intern/bmesh_strands_conv.c b/source/blender/bmesh/intern/bmesh_strands_conv.c index 786b35b486a..b23dbbdf1fe 100644 --- a/source/blender/bmesh/intern/bmesh_strands_conv.c +++ b/source/blender/bmesh/intern/bmesh_strands_conv.c @@ -76,13 +76,10 @@ void BM_strands_cd_validate(BMesh *UNUSED(bm)) { } -void BM_strands_cd_flag_ensure(BMesh *bm, ParticleSystem *psys, const char cd_flag) +void BM_strands_cd_flag_ensure(BMesh *bm, const char cd_flag) { const char cd_flag_all = BM_strands_cd_flag_from_bmesh(bm) | cd_flag; BM_strands_cd_flag_apply(bm, cd_flag_all); - if (psys) { -// psys->cd_flag = cd_flag_all; - } } void BM_strands_cd_flag_apply(BMesh *bm, const char UNUSED(cd_flag)) diff --git a/source/blender/bmesh/intern/bmesh_strands_conv.h b/source/blender/bmesh/intern/bmesh_strands_conv.h index 30bf139c4de..683c1e998ad 100644 --- a/source/blender/bmesh/intern/bmesh_strands_conv.h +++ b/source/blender/bmesh/intern/bmesh_strands_conv.h @@ -45,7 +45,7 @@ extern const char *CD_HAIR_WEIGHT; extern const char *CD_HAIR_ROOT_LOCATION; void BM_strands_cd_validate(struct BMesh *bm); -void BM_strands_cd_flag_ensure(struct BMesh *bm, struct ParticleSystem *psys, const char cd_flag); +void BM_strands_cd_flag_ensure(struct BMesh *bm, const char cd_flag); void BM_strands_cd_flag_apply(struct BMesh *bm, const char cd_flag); char BM_strands_cd_flag_from_bmesh(struct BMesh *bm); |