diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:17:24 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-04-17 07:21:24 +0300 |
commit | e12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch) | |
tree | 8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/bmesh/intern/bmesh_opdefines.c | |
parent | b3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff) |
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211.
For details on usage and instructions for migrating branches
without conflicts, see:
https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_opdefines.c')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_opdefines.c | 2644 |
1 files changed, 1322 insertions, 1322 deletions
diff --git a/source/blender/bmesh/intern/bmesh_opdefines.c b/source/blender/bmesh/intern/bmesh_opdefines.c index 4ca8e02e94d..2114f9ebd3d 100644 --- a/source/blender/bmesh/intern/bmesh_opdefines.c +++ b/source/blender/bmesh/intern/bmesh_opdefines.c @@ -96,20 +96,20 @@ /* enums shared between multiple operators */ static BMO_FlagSet bmo_enum_axis_xyz[] = { - {0, "X"}, - {1, "Y"}, - {2, "Z"}, - {0, NULL}, + {0, "X"}, + {1, "Y"}, + {2, "Z"}, + {0, NULL}, }; static BMO_FlagSet bmo_enum_falloff_type[] = { - {SUBD_FALLOFF_SMOOTH, "SMOOTH"}, - {SUBD_FALLOFF_SPHERE, "SPHERE"}, - {SUBD_FALLOFF_ROOT, "ROOT"}, - {SUBD_FALLOFF_SHARP, "SHARP"}, - {SUBD_FALLOFF_LIN, "LINEAR"}, - {SUBD_FALLOFF_INVSQUARE, "INVERSE_SQUARE"}, - {0, NULL}, + {SUBD_FALLOFF_SMOOTH, "SMOOTH"}, + {SUBD_FALLOFF_SPHERE, "SPHERE"}, + {SUBD_FALLOFF_ROOT, "ROOT"}, + {SUBD_FALLOFF_SHARP, "SHARP"}, + {SUBD_FALLOFF_LIN, "LINEAR"}, + {SUBD_FALLOFF_INVSQUARE, "INVERSE_SQUARE"}, + {0, NULL}, }; /* @@ -118,22 +118,22 @@ static BMO_FlagSet bmo_enum_falloff_type[] = { * Smooths vertices by using a basic vertex averaging scheme. */ static BMOpDefine bmo_smooth_vert_def = { - "smooth_vert", - /* slots_in */ - {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ - {"factor", BMO_OP_SLOT_FLT}, /* smoothing factor */ - {"mirror_clip_x", BMO_OP_SLOT_BOOL}, /* set vertices close to the x axis before the operation to 0 */ - {"mirror_clip_y", BMO_OP_SLOT_BOOL}, /* set vertices close to the y axis before the operation to 0 */ - {"mirror_clip_z", BMO_OP_SLOT_BOOL}, /* set vertices close to the z axis before the operation to 0 */ - {"clip_dist", BMO_OP_SLOT_FLT}, /* clipping threshold for the above three slots */ - {"use_axis_x", BMO_OP_SLOT_BOOL}, /* smooth vertices along X axis */ - {"use_axis_y", BMO_OP_SLOT_BOOL}, /* smooth vertices along Y axis */ - {"use_axis_z", BMO_OP_SLOT_BOOL}, /* smooth vertices along Z axis */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_smooth_vert_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC), + "smooth_vert", + /* slots_in */ + {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ + {"factor", BMO_OP_SLOT_FLT}, /* smoothing factor */ + {"mirror_clip_x", BMO_OP_SLOT_BOOL}, /* set vertices close to the x axis before the operation to 0 */ + {"mirror_clip_y", BMO_OP_SLOT_BOOL}, /* set vertices close to the y axis before the operation to 0 */ + {"mirror_clip_z", BMO_OP_SLOT_BOOL}, /* set vertices close to the z axis before the operation to 0 */ + {"clip_dist", BMO_OP_SLOT_FLT}, /* clipping threshold for the above three slots */ + {"use_axis_x", BMO_OP_SLOT_BOOL}, /* smooth vertices along X axis */ + {"use_axis_y", BMO_OP_SLOT_BOOL}, /* smooth vertices along Y axis */ + {"use_axis_z", BMO_OP_SLOT_BOOL}, /* smooth vertices along Z axis */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_smooth_vert_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC), }; /* @@ -143,20 +143,20 @@ static BMOpDefine bmo_smooth_vert_def = { * Desbrun, et al. Implicit Fairing of Irregular Meshes using Diffusion and Curvature Flow. */ static BMOpDefine bmo_smooth_laplacian_vert_def = { - "smooth_laplacian_vert", - /* slots_in */ - {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ - {"lambda_factor", BMO_OP_SLOT_FLT}, /* lambda param */ - {"lambda_border", BMO_OP_SLOT_FLT}, /* lambda param in border */ - {"use_x", BMO_OP_SLOT_BOOL}, /* Smooth object along X axis */ - {"use_y", BMO_OP_SLOT_BOOL}, /* Smooth object along Y axis */ - {"use_z", BMO_OP_SLOT_BOOL}, /* Smooth object along Z axis */ - {"preserve_volume", BMO_OP_SLOT_BOOL}, /* Apply volume preservation after smooth */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_smooth_laplacian_vert_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC), + "smooth_laplacian_vert", + /* slots_in */ + {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ + {"lambda_factor", BMO_OP_SLOT_FLT}, /* lambda param */ + {"lambda_border", BMO_OP_SLOT_FLT}, /* lambda param in border */ + {"use_x", BMO_OP_SLOT_BOOL}, /* Smooth object along X axis */ + {"use_y", BMO_OP_SLOT_BOOL}, /* Smooth object along Y axis */ + {"use_z", BMO_OP_SLOT_BOOL}, /* Smooth object along Z axis */ + {"preserve_volume", BMO_OP_SLOT_BOOL}, /* Apply volume preservation after smooth */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_smooth_laplacian_vert_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC), }; /* @@ -165,15 +165,15 @@ static BMOpDefine bmo_smooth_laplacian_vert_def = { * Computes an "outside" normal for the specified input faces. */ static BMOpDefine bmo_recalc_face_normals_def = { - "recalc_face_normals", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_recalc_face_normals_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC), + "recalc_face_normals", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_recalc_face_normals_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC), }; /* @@ -182,20 +182,20 @@ static BMOpDefine bmo_recalc_face_normals_def = { * Iteratively flatten faces. */ static BMOpDefine bmo_planar_faces_def = { - "planar_faces", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input geometry. */ - {"iterations", BMO_OP_SLOT_INT}, /* Number of times to flatten faces (for when connected faces are used) */ - {"factor", BMO_OP_SLOT_FLT}, /* Influence for making planar each iteration */ - {{'\0'}}, - }, - /* slots_out */ - {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* output slot, computed boundary geometry. */ - {{'\0'}}, - }, - bmo_planar_faces_exec, - (BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "planar_faces", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input geometry. */ + {"iterations", BMO_OP_SLOT_INT}, /* Number of times to flatten faces (for when connected faces are used) */ + {"factor", BMO_OP_SLOT_FLT}, /* Influence for making planar each iteration */ + {{'\0'}}, + }, + /* slots_out */ + {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* output slot, computed boundary geometry. */ + {{'\0'}}, + }, + bmo_planar_faces_exec, + (BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -209,21 +209,21 @@ static BMOpDefine bmo_planar_faces_def = { * otherwise it spits out faces. */ static BMOpDefine bmo_region_extend_def = { - "region_extend", - /* slots_in */ - {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* input geometry */ - {"use_contract", BMO_OP_SLOT_BOOL}, /* find boundary inside the regions, not outside. */ - {"use_faces", BMO_OP_SLOT_BOOL}, /* extend from faces instead of edges */ - {"use_face_step", BMO_OP_SLOT_BOOL}, /* step over connected faces */ - {{'\0'}}, - }, - /* slots_out */ - {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* output slot, computed boundary geometry. */ - {{'\0'}}, - }, - bmo_region_extend_exec, - (BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "region_extend", + /* slots_in */ + {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* input geometry */ + {"use_contract", BMO_OP_SLOT_BOOL}, /* find boundary inside the regions, not outside. */ + {"use_faces", BMO_OP_SLOT_BOOL}, /* extend from faces instead of edges */ + {"use_face_step", BMO_OP_SLOT_BOOL}, /* step over connected faces */ + {{'\0'}}, + }, + /* slots_out */ + {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* output slot, computed boundary geometry. */ + {{'\0'}}, + }, + bmo_region_extend_exec, + (BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -233,21 +233,21 @@ static BMOpDefine bmo_region_extend_def = { * Simple example: ``[/] becomes [|] then [\]``. */ static BMOpDefine bmo_rotate_edges_def = { - "rotate_edges", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ - {"use_ccw", BMO_OP_SLOT_BOOL}, /* rotate edge counter-clockwise if true, otherwise clockwise */ - {{'\0'}}, - }, - /* slots_out */ - {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* newly spun edges */ - {{'\0'}}, - }, - bmo_rotate_edges_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "rotate_edges", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ + {"use_ccw", BMO_OP_SLOT_BOOL}, /* rotate edge counter-clockwise if true, otherwise clockwise */ + {{'\0'}}, + }, + /* slots_out */ + {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* newly spun edges */ + {{'\0'}}, + }, + bmo_rotate_edges_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -257,16 +257,16 @@ static BMOpDefine bmo_rotate_edges_def = { * This has the effect of flipping the normal. */ static BMOpDefine bmo_reverse_faces_def = { - "reverse_faces", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ - {"flip_multires", BMO_OP_SLOT_BOOL}, /* maintain multi-res offset */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_reverse_faces_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC), + "reverse_faces", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ + {"flip_multires", BMO_OP_SLOT_BOOL}, /* maintain multi-res offset */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_reverse_faces_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC), }; /* @@ -276,22 +276,22 @@ static BMOpDefine bmo_reverse_faces_def = { * This creates a 2-valence vert. */ static BMOpDefine bmo_bisect_edges_def = { - "bisect_edges", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ - {"cuts", BMO_OP_SLOT_INT}, /* number of cuts */ - {"edge_percents", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_FLT}}, - {{'\0'}}, - }, - /* slots_out */ - {{"geom_split.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* newly created vertices and edges */ - {{'\0'}}, - }, - bmo_bisect_edges_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "bisect_edges", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ + {"cuts", BMO_OP_SLOT_INT}, /* number of cuts */ + {"edge_percents", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_FLT}}, + {{'\0'}}, + }, + /* slots_out */ + {{"geom_split.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* newly created vertices and edges */ + {{'\0'}}, + }, + bmo_bisect_edges_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -302,24 +302,24 @@ static BMOpDefine bmo_bisect_edges_def = { * parameter (which defines the minimum distance for welding to happen). */ static BMOpDefine bmo_mirror_def = { - "mirror", - /* slots_in */ - {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* input geometry */ - {"matrix", BMO_OP_SLOT_MAT}, /* matrix defining the mirror transformation */ - {"merge_dist", BMO_OP_SLOT_FLT}, /* maximum distance for merging. does no merging if 0. */ - {"axis", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_axis_xyz}, /* the axis to use. */ - {"mirror_u", BMO_OP_SLOT_BOOL}, /* mirror UVs across the u axis */ - {"mirror_v", BMO_OP_SLOT_BOOL}, /* mirror UVs across the v axis */ - {{'\0'}}, - }, - /* slots_out */ - {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* output geometry, mirrored */ - {{'\0'}}, - }, - bmo_mirror_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "mirror", + /* slots_in */ + {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* input geometry */ + {"matrix", BMO_OP_SLOT_MAT}, /* matrix defining the mirror transformation */ + {"merge_dist", BMO_OP_SLOT_FLT}, /* maximum distance for merging. does no merging if 0. */ + {"axis", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_axis_xyz}, /* the axis to use. */ + {"mirror_u", BMO_OP_SLOT_BOOL}, /* mirror UVs across the u axis */ + {"mirror_v", BMO_OP_SLOT_BOOL}, /* mirror UVs across the v axis */ + {{'\0'}}, + }, + /* slots_out */ + {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* output geometry, mirrored */ + {{'\0'}}, + }, + bmo_mirror_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -332,19 +332,19 @@ static BMOpDefine bmo_mirror_def = { * with vertices in that set. */ static BMOpDefine bmo_find_doubles_def = { - "find_doubles", - /* slots_in */ - {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ - {"keep_verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* list of verts to keep */ - {"dist", BMO_OP_SLOT_FLT}, /* minimum distance */ - {{'\0'}}, - }, - /* slots_out */ - {{"targetmap.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, - {{'\0'}}, - }, - bmo_find_doubles_exec, - (BMO_OPTYPE_FLAG_NOP), + "find_doubles", + /* slots_in */ + {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ + {"keep_verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* list of verts to keep */ + {"dist", BMO_OP_SLOT_FLT}, /* minimum distance */ + {{'\0'}}, + }, + /* slots_out */ + {{"targetmap.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, + {{'\0'}}, + }, + bmo_find_doubles_exec, + (BMO_OPTYPE_FLAG_NOP), }; /* @@ -354,18 +354,18 @@ static BMOpDefine bmo_find_doubles_def = { * using the weld verts bmop. */ static BMOpDefine bmo_remove_doubles_def = { - "remove_doubles", - /* slots_in */ - {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input verts */ - {"dist", BMO_OP_SLOT_FLT}, /* minimum distance */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_remove_doubles_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "remove_doubles", + /* slots_in */ + {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input verts */ + {"dist", BMO_OP_SLOT_FLT}, /* minimum distance */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_remove_doubles_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -376,18 +376,18 @@ static BMOpDefine bmo_remove_doubles_def = { * **verts** to one in **verts**. */ static BMOpDefine bmo_automerge_def = { - "automerge", - /* slots_in */ - {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input verts */ - {"dist", BMO_OP_SLOT_FLT}, /* minimum distance */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_automerge_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "automerge", + /* slots_in */ + {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input verts */ + {"dist", BMO_OP_SLOT_FLT}, /* minimum distance */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_automerge_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -396,18 +396,18 @@ static BMOpDefine bmo_automerge_def = { * Collapses connected vertices */ static BMOpDefine bmo_collapse_def = { - "collapse", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ - {"uvs", BMO_OP_SLOT_BOOL}, /* also collapse UVs and such */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_collapse_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "collapse", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ + {"uvs", BMO_OP_SLOT_BOOL}, /* also collapse UVs and such */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_collapse_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -416,15 +416,15 @@ static BMOpDefine bmo_collapse_def = { * Merge uv/vcols at a specific vertex. */ static BMOpDefine bmo_pointmerge_facedata_def = { - "pointmerge_facedata", - /* slots_in */ - {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ - {"vert_snap", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | (int)BMO_OP_SLOT_SUBTYPE_ELEM_IS_SINGLE}}, /* snap vertex */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_pointmerge_facedata_exec, - (BMO_OPTYPE_FLAG_NOP), + "pointmerge_facedata", + /* slots_in */ + {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ + {"vert_snap", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | (int)BMO_OP_SLOT_SUBTYPE_ELEM_IS_SINGLE}}, /* snap vertex */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_pointmerge_facedata_exec, + (BMO_OPTYPE_FLAG_NOP), }; /* @@ -435,14 +435,14 @@ static BMOpDefine bmo_pointmerge_facedata_def = { * the vert_snap_to_bb_center is just too long). */ static BMOpDefine bmo_average_vert_facedata_def = { - "average_vert_facedata", - /* slots_in */ - {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_average_vert_facedata_exec, - (BMO_OPTYPE_FLAG_NOP), + "average_vert_facedata", + /* slots_in */ + {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_average_vert_facedata_exec, + (BMO_OPTYPE_FLAG_NOP), }; /* @@ -451,18 +451,18 @@ static BMOpDefine bmo_average_vert_facedata_def = { * Merge verts together at a point. */ static BMOpDefine bmo_pointmerge_def = { - "pointmerge", - /* slots_in */ - {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices (all verts will be merged into the first). */ - {"merge_co", BMO_OP_SLOT_VEC}, /* Position to merge at. */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_pointmerge_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "pointmerge", + /* slots_in */ + {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices (all verts will be merged into the first). */ + {"merge_co", BMO_OP_SLOT_VEC}, /* Position to merge at. */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_pointmerge_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -471,14 +471,14 @@ static BMOpDefine bmo_pointmerge_def = { * Collapses connected UV vertices. */ static BMOpDefine bmo_collapse_uvs_def = { - "collapse_uvs", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_collapse_uvs_exec, - (BMO_OPTYPE_FLAG_NOP), + "collapse_uvs", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_collapse_uvs_exec, + (BMO_OPTYPE_FLAG_NOP), }; /* @@ -489,18 +489,18 @@ static BMOpDefine bmo_collapse_uvs_def = { * they weld with. */ static BMOpDefine bmo_weld_verts_def = { - "weld_verts", - /* slots_in */ - /* maps welded vertices to verts they should weld to */ - {{"targetmap", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_weld_verts_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "weld_verts", + /* slots_in */ + /* maps welded vertices to verts they should weld to */ + {{"targetmap", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_weld_verts_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -510,17 +510,17 @@ static BMOpDefine bmo_weld_verts_def = { * for click-create-vertex. */ static BMOpDefine bmo_create_vert_def = { - "create_vert", - /* slots_in */ - {{"co", BMO_OP_SLOT_VEC}, /* the coordinate of the new vert */ - {{'\0'}}, - }, - /* slots_out */ - {{"vert.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* the new vert */ - {{'\0'}}, - }, - bmo_create_vert_exec, - (BMO_OPTYPE_FLAG_NOP), + "create_vert", + /* slots_in */ + {{"co", BMO_OP_SLOT_VEC}, /* the coordinate of the new vert */ + {{'\0'}}, + }, + /* slots_out */ + {{"vert.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* the new vert */ + {{'\0'}}, + }, + bmo_create_vert_exec, + (BMO_OPTYPE_FLAG_NOP), }; /* @@ -530,27 +530,27 @@ static BMOpDefine bmo_create_vert_def = { * to angle threshold and delimiters. */ static BMOpDefine bmo_join_triangles_def = { - "join_triangles", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input geometry. */ - {"cmp_seam", BMO_OP_SLOT_BOOL}, - {"cmp_sharp", BMO_OP_SLOT_BOOL}, - {"cmp_uvs", BMO_OP_SLOT_BOOL}, - {"cmp_vcols", BMO_OP_SLOT_BOOL}, - {"cmp_materials", BMO_OP_SLOT_BOOL}, - {"angle_face_threshold", BMO_OP_SLOT_FLT}, - {"angle_shape_threshold", BMO_OP_SLOT_FLT}, - {{'\0'}}, - }, - /* slots_out */ - {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* joined faces */ - {{'\0'}}, - }, - bmo_join_triangles_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "join_triangles", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input geometry. */ + {"cmp_seam", BMO_OP_SLOT_BOOL}, + {"cmp_sharp", BMO_OP_SLOT_BOOL}, + {"cmp_uvs", BMO_OP_SLOT_BOOL}, + {"cmp_vcols", BMO_OP_SLOT_BOOL}, + {"cmp_materials", BMO_OP_SLOT_BOOL}, + {"angle_face_threshold", BMO_OP_SLOT_FLT}, + {"angle_shape_threshold", BMO_OP_SLOT_FLT}, + {{'\0'}}, + }, + /* slots_out */ + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* joined faces */ + {{'\0'}}, + }, + bmo_join_triangles_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -564,49 +564,49 @@ static BMOpDefine bmo_join_triangles_def = { * become a wire edge. */ static BMOpDefine bmo_contextual_create_def = { - "contextual_create", - /* slots_in */ - {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* input geometry. */ - {"mat_nr", BMO_OP_SLOT_INT}, /* material to use */ - {"use_smooth", BMO_OP_SLOT_BOOL}, /* smooth to use */ - {{'\0'}}, - }, - /* slots_out */ - {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* newly-made face(s) */ - /* note, this is for stand-alone edges only, not edges which are apart of newly created faces */ - {"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* newly-made edge(s) */ - {{'\0'}}, - }, - bmo_contextual_create_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "contextual_create", + /* slots_in */ + {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* input geometry. */ + {"mat_nr", BMO_OP_SLOT_INT}, /* material to use */ + {"use_smooth", BMO_OP_SLOT_BOOL}, /* smooth to use */ + {{'\0'}}, + }, + /* slots_out */ + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* newly-made face(s) */ + /* note, this is for stand-alone edges only, not edges which are apart of newly created faces */ + {"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* newly-made edge(s) */ + {{'\0'}}, + }, + bmo_contextual_create_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* * Bridge edge loops with faces. */ static BMOpDefine bmo_bridge_loops_def = { - "bridge_loops", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ - {"use_pairs", BMO_OP_SLOT_BOOL}, - {"use_cyclic", BMO_OP_SLOT_BOOL}, - {"use_merge", BMO_OP_SLOT_BOOL}, - {"merge_factor", BMO_OP_SLOT_FLT}, - {"twist_offset", BMO_OP_SLOT_INT}, - {{'\0'}}, - }, - /* slots_out */ - {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* new faces */ - {"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* new edges */ - {{'\0'}}, - }, - bmo_bridge_loops_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "bridge_loops", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ + {"use_pairs", BMO_OP_SLOT_BOOL}, + {"use_cyclic", BMO_OP_SLOT_BOOL}, + {"use_merge", BMO_OP_SLOT_BOOL}, + {"merge_factor", BMO_OP_SLOT_FLT}, + {"twist_offset", BMO_OP_SLOT_INT}, + {{'\0'}}, + }, + /* slots_out */ + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* new faces */ + {"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* new edges */ + {{'\0'}}, + }, + bmo_bridge_loops_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -615,23 +615,23 @@ static BMOpDefine bmo_bridge_loops_def = { * Create faces defined by 2 disconnected edge loops (which share edges). */ static BMOpDefine bmo_grid_fill_def = { - "grid_fill", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ - /* restricts edges to groups. maps edges to integer */ - {"mat_nr", BMO_OP_SLOT_INT}, /* material to use */ - {"use_smooth", BMO_OP_SLOT_BOOL}, /* smooth state to use */ - {"use_interp_simple", BMO_OP_SLOT_BOOL}, /* use simple interpolation */ - {{'\0'}}, - }, - /* slots_out */ - /* maps new faces to the group numbers they came from */ - {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* new faces */ - {{'\0'}}, - }, - bmo_grid_fill_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "grid_fill", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ + /* restricts edges to groups. maps edges to integer */ + {"mat_nr", BMO_OP_SLOT_INT}, /* material to use */ + {"use_smooth", BMO_OP_SLOT_BOOL}, /* smooth state to use */ + {"use_interp_simple", BMO_OP_SLOT_BOOL}, /* use simple interpolation */ + {{'\0'}}, + }, + /* slots_out */ + /* maps new faces to the group numbers they came from */ + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* new faces */ + {{'\0'}}, + }, + bmo_grid_fill_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; @@ -641,20 +641,20 @@ static BMOpDefine bmo_grid_fill_def = { * Fill boundary edges with faces, copying surrounding customdata. */ static BMOpDefine bmo_holes_fill_def = { - "holes_fill", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ - {"sides", BMO_OP_SLOT_INT}, /* number of face sides to fill */ - {{'\0'}}, - }, - /* slots_out */ - /* maps new faces to the group numbers they came from */ - {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* new faces */ - {{'\0'}}, - }, - bmo_holes_fill_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "holes_fill", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ + {"sides", BMO_OP_SLOT_INT}, /* number of face sides to fill */ + {{'\0'}}, + }, + /* slots_out */ + /* maps new faces to the group numbers they came from */ + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* new faces */ + {{'\0'}}, + }, + bmo_holes_fill_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; @@ -664,20 +664,20 @@ static BMOpDefine bmo_holes_fill_def = { * Fill in faces with data from adjacent faces. */ static BMOpDefine bmo_face_attribute_fill_def = { - "face_attribute_fill", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ - {"use_normals", BMO_OP_SLOT_BOOL}, /* copy face winding */ - {"use_data", BMO_OP_SLOT_BOOL}, /* copy face data */ - {{'\0'}}, - }, - /* slots_out */ - /* maps new faces to the group numbers they came from */ - {{"faces_fail.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* faces that could not be handled */ - {{'\0'}}, - }, - bmo_face_attribute_fill_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC), + "face_attribute_fill", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ + {"use_normals", BMO_OP_SLOT_BOOL}, /* copy face winding */ + {"use_data", BMO_OP_SLOT_BOOL}, /* copy face data */ + {{'\0'}}, + }, + /* slots_out */ + /* maps new faces to the group numbers they came from */ + {{"faces_fail.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* faces that could not be handled */ + {{'\0'}}, + }, + bmo_face_attribute_fill_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC), }; /* @@ -686,22 +686,22 @@ static BMOpDefine bmo_face_attribute_fill_def = { * Create faces defined by one or more non overlapping edge loops. */ static BMOpDefine bmo_edgeloop_fill_def = { - "edgeloop_fill", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ - /* restricts edges to groups. maps edges to integer */ - {"mat_nr", BMO_OP_SLOT_INT}, /* material to use */ - {"use_smooth", BMO_OP_SLOT_BOOL}, /* smooth state to use */ - {{'\0'}}, - }, - /* slots_out */ - /* maps new faces to the group numbers they came from */ - {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* new faces */ - {{'\0'}}, - }, - bmo_edgeloop_fill_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "edgeloop_fill", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ + /* restricts edges to groups. maps edges to integer */ + {"mat_nr", BMO_OP_SLOT_INT}, /* material to use */ + {"use_smooth", BMO_OP_SLOT_BOOL}, /* smooth state to use */ + {{'\0'}}, + }, + /* slots_out */ + /* maps new faces to the group numbers they came from */ + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* new faces */ + {{'\0'}}, + }, + bmo_edgeloop_fill_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; @@ -711,22 +711,22 @@ static BMOpDefine bmo_edgeloop_fill_def = { * Create faces defined by enclosed edges. */ static BMOpDefine bmo_edgenet_fill_def = { - "edgenet_fill", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ - {"mat_nr", BMO_OP_SLOT_INT}, /* material to use */ - {"use_smooth", BMO_OP_SLOT_BOOL}, /* smooth state to use */ - {"sides", BMO_OP_SLOT_INT}, /* number of sides */ - {{'\0'}}, - }, - /* slots_out */ - /* maps new faces to the group numbers they came from */ - {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* new faces */ - {{'\0'}}, - }, - bmo_edgenet_fill_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "edgenet_fill", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ + {"mat_nr", BMO_OP_SLOT_INT}, /* material to use */ + {"use_smooth", BMO_OP_SLOT_BOOL}, /* smooth state to use */ + {"sides", BMO_OP_SLOT_INT}, /* number of sides */ + {{'\0'}}, + }, + /* slots_out */ + /* maps new faces to the group numbers they came from */ + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* new faces */ + {{'\0'}}, + }, + bmo_edgenet_fill_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -740,17 +740,17 @@ static BMOpDefine bmo_edgenet_fill_def = { * shortest distance between each endpont). */ static BMOpDefine bmo_edgenet_prepare_def = { - "edgenet_prepare", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ - {{'\0'}}, - }, - /* slots_out */ - {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* new edges */ - {{'\0'}}, - }, - bmo_edgenet_prepare_exec, - (BMO_OPTYPE_FLAG_NOP), + "edgenet_prepare", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ + {{'\0'}}, + }, + /* slots_out */ + {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* new edges */ + {{'\0'}}, + }, + bmo_edgenet_prepare_exec, + (BMO_OPTYPE_FLAG_NOP), }; /* @@ -759,17 +759,17 @@ static BMOpDefine bmo_edgenet_prepare_def = { * Rotate vertices around a center, using a 3x3 rotation matrix. */ static BMOpDefine bmo_rotate_def = { - "rotate", - /* slots_in */ - {{"cent", BMO_OP_SLOT_VEC}, /* center of rotation */ - {"matrix", BMO_OP_SLOT_MAT}, /* matrix defining rotation */ - {"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ - {"space", BMO_OP_SLOT_MAT}, /* matrix to define the space (typically object matrix) */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_rotate_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC), + "rotate", + /* slots_in */ + {{"cent", BMO_OP_SLOT_VEC}, /* center of rotation */ + {"matrix", BMO_OP_SLOT_MAT}, /* matrix defining rotation */ + {"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ + {"space", BMO_OP_SLOT_MAT}, /* matrix to define the space (typically object matrix) */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_rotate_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC), }; /* @@ -778,16 +778,16 @@ static BMOpDefine bmo_rotate_def = { * Translate vertices by an offset. */ static BMOpDefine bmo_translate_def = { - "translate", - /* slots_in */ - {{"vec", BMO_OP_SLOT_VEC}, /* translation offset */ - {"space", BMO_OP_SLOT_MAT}, /* matrix to define the space (typically object matrix) */ - {"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_translate_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC), + "translate", + /* slots_in */ + {{"vec", BMO_OP_SLOT_VEC}, /* translation offset */ + {"space", BMO_OP_SLOT_MAT}, /* matrix to define the space (typically object matrix) */ + {"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_translate_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC), }; /* @@ -796,16 +796,16 @@ static BMOpDefine bmo_translate_def = { * Scales vertices by an offset. */ static BMOpDefine bmo_scale_def = { - "scale", - /* slots_in */ - {{"vec", BMO_OP_SLOT_VEC}, /* scale factor */ - {"space", BMO_OP_SLOT_MAT}, /* matrix to define the space (typically object matrix) */ - {"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_scale_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC), + "scale", + /* slots_in */ + {{"vec", BMO_OP_SLOT_VEC}, /* scale factor */ + {"space", BMO_OP_SLOT_MAT}, /* matrix to define the space (typically object matrix) */ + {"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_scale_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC), }; @@ -816,16 +816,16 @@ static BMOpDefine bmo_scale_def = { * the vertex coordinates with the matrix. */ static BMOpDefine bmo_transform_def = { - "transform", - /* slots_in */ - {{"matrix", BMO_OP_SLOT_MAT}, /* transform matrix */ - {"space", BMO_OP_SLOT_MAT}, /* matrix to define the space (typically object matrix) */ - {"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_transform_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC), + "transform", + /* slots_in */ + {{"matrix", BMO_OP_SLOT_MAT}, /* transform matrix */ + {"space", BMO_OP_SLOT_MAT}, /* matrix to define the space (typically object matrix) */ + {"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_transform_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC), }; /* @@ -835,15 +835,15 @@ static BMOpDefine bmo_transform_def = { * bmop. */ static BMOpDefine bmo_object_load_bmesh_def = { - "object_load_bmesh", - /* slots_in */ - {{"scene", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_SCENE}}, - {"object", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_OBJECT}}, - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_object_load_bmesh_exec, - (BMO_OPTYPE_FLAG_NOP), + "object_load_bmesh", + /* slots_in */ + {{"scene", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_SCENE}}, + {"object", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_OBJECT}}, + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_object_load_bmesh_exec, + (BMO_OPTYPE_FLAG_NOP), }; @@ -853,18 +853,18 @@ static BMOpDefine bmo_object_load_bmesh_def = { * Converts a bmesh to a Mesh. This is reserved for exiting editmode. */ static BMOpDefine bmo_bmesh_to_mesh_def = { - "bmesh_to_mesh", - /* slots_in */ - { - /* pointer to a mesh structure to fill in */ - {"mesh", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_MESH}}, - /* pointer to an object structure */ - {"object", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_OBJECT}}, - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_bmesh_to_mesh_exec, - (BMO_OPTYPE_FLAG_NOP), + "bmesh_to_mesh", + /* slots_in */ + { + /* pointer to a mesh structure to fill in */ + {"mesh", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_MESH}}, + /* pointer to an object structure */ + {"object", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_OBJECT}}, + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_bmesh_to_mesh_exec, + (BMO_OPTYPE_FLAG_NOP), }; /* @@ -874,19 +874,19 @@ static BMOpDefine bmo_bmesh_to_mesh_def = { * reserved exclusively for entering editmode. */ static BMOpDefine bmo_mesh_to_bmesh_def = { - "mesh_to_bmesh", - /* slots_in */ - { - /* pointer to a Mesh structure */ - {"mesh", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_MESH}}, - /* pointer to an Object structure */ - {"object", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_OBJECT}}, - {"use_shapekey", BMO_OP_SLOT_BOOL}, /* load active shapekey coordinates into verts */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_mesh_to_bmesh_exec, - (BMO_OPTYPE_FLAG_NOP), + "mesh_to_bmesh", + /* slots_in */ + { + /* pointer to a Mesh structure */ + {"mesh", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_MESH}}, + /* pointer to an Object structure */ + {"object", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_OBJECT}}, + {"use_shapekey", BMO_OP_SLOT_BOOL}, /* load active shapekey coordinates into verts */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_mesh_to_bmesh_exec, + (BMO_OPTYPE_FLAG_NOP), }; /* @@ -895,19 +895,19 @@ static BMOpDefine bmo_mesh_to_bmesh_def = { * Extrudes faces individually. */ static BMOpDefine bmo_extrude_discrete_faces_def = { - "extrude_discrete_faces", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ - {"use_normal_flip", BMO_OP_SLOT_BOOL}, /* Create faces with reversed direction. */ - {"use_select_history", BMO_OP_SLOT_BOOL}, /* pass to duplicate */ - {{'\0'}}, - }, - /* slots_out */ - {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ - {{'\0'}}, - }, - bmo_extrude_discrete_faces_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC), + "extrude_discrete_faces", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ + {"use_normal_flip", BMO_OP_SLOT_BOOL}, /* Create faces with reversed direction. */ + {"use_select_history", BMO_OP_SLOT_BOOL}, /* pass to duplicate */ + {{'\0'}}, + }, + /* slots_out */ + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ + {{'\0'}}, + }, + bmo_extrude_discrete_faces_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC), }; /* @@ -917,19 +917,19 @@ static BMOpDefine bmo_extrude_discrete_faces_def = { * winged extrusion. */ static BMOpDefine bmo_extrude_edge_only_def = { - "extrude_edge_only", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input vertices */ - {"use_normal_flip", BMO_OP_SLOT_BOOL}, /* Create faces with reversed direction. */ - {"use_select_history", BMO_OP_SLOT_BOOL}, /* pass to duplicate */ - {{'\0'}}, - }, - /* slots_out */ - {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* output geometry */ - {{'\0'}}, - }, - bmo_extrude_edge_only_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC), + "extrude_edge_only", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input vertices */ + {"use_normal_flip", BMO_OP_SLOT_BOOL}, /* Create faces with reversed direction. */ + {"use_select_history", BMO_OP_SLOT_BOOL}, /* pass to duplicate */ + {{'\0'}}, + }, + /* slots_out */ + {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* output geometry */ + {{'\0'}}, + }, + bmo_extrude_edge_only_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC), }; /* @@ -938,19 +938,19 @@ static BMOpDefine bmo_extrude_edge_only_def = { * Extrudes wire edges from vertices. */ static BMOpDefine bmo_extrude_vert_indiv_def = { - "extrude_vert_indiv", - /* slots_in */ - {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ - {"use_select_history", BMO_OP_SLOT_BOOL}, /* pass to duplicate */ - {{'\0'}}, - }, - /* slots_out */ - {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* output wire edges */ - {"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output vertices */ - {{'\0'}}, - }, - bmo_extrude_vert_indiv_exec, - (BMO_OPTYPE_FLAG_SELECT_FLUSH), + "extrude_vert_indiv", + /* slots_in */ + {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ + {"use_select_history", BMO_OP_SLOT_BOOL}, /* pass to duplicate */ + {{'\0'}}, + }, + /* slots_out */ + {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* output wire edges */ + {"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output vertices */ + {{'\0'}}, + }, + bmo_extrude_vert_indiv_exec, + (BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -959,21 +959,21 @@ static BMOpDefine bmo_extrude_vert_indiv_def = { * Split faces by adding edges that connect **verts**. */ static BMOpDefine bmo_connect_verts_def = { - "connect_verts", - /* slots_in */ - {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, - {"faces_exclude", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {"check_degenerate", BMO_OP_SLOT_BOOL}, /* prevent splits with overlaps & intersections */ - {{'\0'}}, - }, - /* slots_out */ - {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, - {{'\0'}}, - }, - bmo_connect_verts_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "connect_verts", + /* slots_in */ + {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, + {"faces_exclude", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {"check_degenerate", BMO_OP_SLOT_BOOL}, /* prevent splits with overlaps & intersections */ + {{'\0'}}, + }, + /* slots_out */ + {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, + {{'\0'}}, + }, + bmo_connect_verts_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -982,20 +982,20 @@ static BMOpDefine bmo_connect_verts_def = { * Ensures all faces are convex **faces**. */ static BMOpDefine bmo_connect_verts_concave_def = { - "connect_verts_concave", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {{'\0'}}, - }, - /* slots_out */ - {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, - {"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {{'\0'}}, - }, - bmo_connect_verts_concave_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "connect_verts_concave", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {{'\0'}}, + }, + /* slots_out */ + {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, + {"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {{'\0'}}, + }, + bmo_connect_verts_concave_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1004,21 +1004,21 @@ static BMOpDefine bmo_connect_verts_concave_def = { * Split faces by connecting edges along non planer **faces**. */ static BMOpDefine bmo_connect_verts_nonplanar_def = { - "connect_verts_nonplanar", - /* slots_in */ - {{"angle_limit", BMO_OP_SLOT_FLT}, /* total rotation angle (radians) */ - {"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {{'\0'}}, - }, - /* slots_out */ - {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, - {"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {{'\0'}}, - }, - bmo_connect_verts_nonplanar_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "connect_verts_nonplanar", + /* slots_in */ + {{"angle_limit", BMO_OP_SLOT_FLT}, /* total rotation angle (radians) */ + {"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {{'\0'}}, + }, + /* slots_out */ + {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, + {"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {{'\0'}}, + }, + bmo_connect_verts_nonplanar_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1027,21 +1027,21 @@ static BMOpDefine bmo_connect_verts_nonplanar_def = { * Split faces by adding edges that connect **verts**. */ static BMOpDefine bmo_connect_vert_pair_def = { - "connect_vert_pair", - /* slots_in */ - {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, - {"verts_exclude", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, - {"faces_exclude", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {{'\0'}}, - }, - /* slots_out */ - {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, - {{'\0'}}, - }, - bmo_connect_vert_pair_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "connect_vert_pair", + /* slots_in */ + {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, + {"verts_exclude", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, + {"faces_exclude", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {{'\0'}}, + }, + /* slots_out */ + {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, + {{'\0'}}, + }, + bmo_connect_vert_pair_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; @@ -1051,93 +1051,93 @@ static BMOpDefine bmo_connect_vert_pair_def = { * Extrude operator (does not transform) */ static BMOpDefine bmo_extrude_face_region_def = { - "extrude_face_region", - /* slots_in */ - {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* edges and faces */ - {"edges_exclude", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_EMPTY}}, - {"use_keep_orig", BMO_OP_SLOT_BOOL}, /* keep original geometry (requires ``geom`` to include edges). */ - {"use_normal_flip", BMO_OP_SLOT_BOOL}, /* Create faces with reversed direction. */ - {"use_normal_from_adjacent", BMO_OP_SLOT_BOOL}, /* Use winding from surrounding faces instead of this region. */ - {"use_select_history", BMO_OP_SLOT_BOOL}, /* pass to duplicate */ - {{'\0'}}, - }, - /* slots_out */ - {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {{'\0'}}, - }, - bmo_extrude_face_region_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC), + "extrude_face_region", + /* slots_in */ + {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* edges and faces */ + {"edges_exclude", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_EMPTY}}, + {"use_keep_orig", BMO_OP_SLOT_BOOL}, /* keep original geometry (requires ``geom`` to include edges). */ + {"use_normal_flip", BMO_OP_SLOT_BOOL}, /* Create faces with reversed direction. */ + {"use_normal_from_adjacent", BMO_OP_SLOT_BOOL}, /* Use winding from surrounding faces instead of this region. */ + {"use_select_history", BMO_OP_SLOT_BOOL}, /* pass to duplicate */ + {{'\0'}}, + }, + /* slots_out */ + {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {{'\0'}}, + }, + bmo_extrude_face_region_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC), }; /* * Dissolve Verts. */ static BMOpDefine bmo_dissolve_verts_def = { - "dissolve_verts", - /* slots_in */ - {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, - {"use_face_split", BMO_OP_SLOT_BOOL}, - {"use_boundary_tear", BMO_OP_SLOT_BOOL}, - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_dissolve_verts_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "dissolve_verts", + /* slots_in */ + {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, + {"use_face_split", BMO_OP_SLOT_BOOL}, + {"use_boundary_tear", BMO_OP_SLOT_BOOL}, + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_dissolve_verts_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* * Dissolve Edges. */ static BMOpDefine bmo_dissolve_edges_def = { - "dissolve_edges", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, - {"use_verts", BMO_OP_SLOT_BOOL}, /* dissolve verts left between only 2 edges. */ - {"use_face_split", BMO_OP_SLOT_BOOL}, - {{'\0'}}, - }, - /* slots_out */ - {{"region.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {{'\0'}}, - }, - bmo_dissolve_edges_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "dissolve_edges", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, + {"use_verts", BMO_OP_SLOT_BOOL}, /* dissolve verts left between only 2 edges. */ + {"use_face_split", BMO_OP_SLOT_BOOL}, + {{'\0'}}, + }, + /* slots_out */ + {{"region.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {{'\0'}}, + }, + bmo_dissolve_edges_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* * Dissolve Faces. */ static BMOpDefine bmo_dissolve_faces_def = { - "dissolve_faces", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {"use_verts", BMO_OP_SLOT_BOOL}, /* dissolve verts left between only 2 edges. */ - {{'\0'}}, - }, - /* slots_out */ - {{"region.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {{'\0'}}, - }, - bmo_dissolve_faces_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "dissolve_faces", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {"use_verts", BMO_OP_SLOT_BOOL}, /* dissolve verts left between only 2 edges. */ + {{'\0'}}, + }, + /* slots_out */ + {{"region.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {{'\0'}}, + }, + bmo_dissolve_faces_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; static BMO_FlagSet bmo_enum_dissolve_limit_flags[] = { - {BMO_DELIM_NORMAL, "NORMAL"}, - {BMO_DELIM_MATERIAL, "MATERIAL"}, - {BMO_DELIM_SEAM, "SEAM"}, - {BMO_DELIM_SHARP, "SHARP"}, - {BMO_DELIM_UV, "UV"}, - {0, NULL}, + {BMO_DELIM_NORMAL, "NORMAL"}, + {BMO_DELIM_MATERIAL, "MATERIAL"}, + {BMO_DELIM_SEAM, "SEAM"}, + {BMO_DELIM_SHARP, "SHARP"}, + {BMO_DELIM_UV, "UV"}, + {0, NULL}, }; /* @@ -1146,23 +1146,23 @@ static BMO_FlagSet bmo_enum_dissolve_limit_flags[] = { * Dissolve planar faces and co-linear edges. */ static BMOpDefine bmo_dissolve_limit_def = { - "dissolve_limit", - /* slots_in */ - {{"angle_limit", BMO_OP_SLOT_FLT}, /* total rotation angle (radians) */ - {"use_dissolve_boundaries", BMO_OP_SLOT_BOOL}, - {"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, - {"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, - {"delimit", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_FLAG}, bmo_enum_dissolve_limit_flags}, - {{'\0'}}, - }, - /* slots_out */ - {{"region.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {{'\0'}}}, - bmo_dissolve_limit_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "dissolve_limit", + /* slots_in */ + {{"angle_limit", BMO_OP_SLOT_FLT}, /* total rotation angle (radians) */ + {"use_dissolve_boundaries", BMO_OP_SLOT_BOOL}, + {"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, + {"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, + {"delimit", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_FLAG}, bmo_enum_dissolve_limit_flags}, + {{'\0'}}, + }, + /* slots_out */ + {{"region.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {{'\0'}}}, + bmo_dissolve_limit_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -1171,57 +1171,57 @@ static BMOpDefine bmo_dissolve_limit_def = { * Dissolve edges with no length, faces with no area. */ static BMOpDefine bmo_dissolve_degenerate_def = { - "dissolve_degenerate", - /* slots_in */ - {{"dist", BMO_OP_SLOT_FLT}, /* minimum distance to consider degenerate */ - {"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, - {{'\0'}}, - }, - /* slots_out */ - {{{'\0'}}}, - bmo_dissolve_degenerate_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "dissolve_degenerate", + /* slots_in */ + {{"dist", BMO_OP_SLOT_FLT}, /* minimum distance to consider degenerate */ + {"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, + {{'\0'}}, + }, + /* slots_out */ + {{{'\0'}}}, + bmo_dissolve_degenerate_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; static BMO_FlagSet bmo_enum_triangulate_quad_method[] = { - {MOD_TRIANGULATE_QUAD_BEAUTY, "BEAUTY"}, - {MOD_TRIANGULATE_QUAD_FIXED, "FIXED"}, - {MOD_TRIANGULATE_QUAD_ALTERNATE, "ALTERNATE"}, - {MOD_TRIANGULATE_QUAD_SHORTEDGE, "SHORT_EDGE"}, - {0, NULL}, + {MOD_TRIANGULATE_QUAD_BEAUTY, "BEAUTY"}, + {MOD_TRIANGULATE_QUAD_FIXED, "FIXED"}, + {MOD_TRIANGULATE_QUAD_ALTERNATE, "ALTERNATE"}, + {MOD_TRIANGULATE_QUAD_SHORTEDGE, "SHORT_EDGE"}, + {0, NULL}, }; static BMO_FlagSet bmo_enum_triangulate_ngon_method[] = { - {MOD_TRIANGULATE_NGON_BEAUTY, "BEAUTY"}, - {MOD_TRIANGULATE_NGON_EARCLIP, "EAR_CLIP"}, - {0, NULL}, + {MOD_TRIANGULATE_NGON_BEAUTY, "BEAUTY"}, + {MOD_TRIANGULATE_NGON_EARCLIP, "EAR_CLIP"}, + {0, NULL}, }; /* * Triangulate. */ static BMOpDefine bmo_triangulate_def = { - "triangulate", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {"quad_method", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_triangulate_quad_method}, - {"ngon_method", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_triangulate_ngon_method}, - {{'\0'}}, - }, - /* slots_out */ - {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, - {"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {"face_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, - {"face_map_double.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, /* duplicate faces */ - {{'\0'}}, - }, - bmo_triangulate_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "triangulate", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {"quad_method", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_triangulate_quad_method}, + {"ngon_method", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_triangulate_ngon_method}, + {{'\0'}}, + }, + /* slots_out */ + {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, + {"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {"face_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, + {"face_map_double.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, /* duplicate faces */ + {{'\0'}}, + }, + bmo_triangulate_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1230,26 +1230,26 @@ static BMOpDefine bmo_triangulate_def = { * Reduce detail in geometry containing grids. */ static BMOpDefine bmo_unsubdivide_def = { - "unsubdivide", - /* slots_in */ - {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ - {"iterations", BMO_OP_SLOT_INT}, - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_unsubdivide_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "unsubdivide", + /* slots_in */ + {{"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* input vertices */ + {"iterations", BMO_OP_SLOT_INT}, + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_unsubdivide_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; static BMO_FlagSet bmo_enum_subdivide_edges_quad_corner_type[] = { - {SUBD_CORNER_STRAIGHT_CUT, "STRAIGHT_CUT"}, - {SUBD_CORNER_INNERVERT, "INNER_VERT"}, - {SUBD_CORNER_PATH, "PATH"}, - {SUBD_CORNER_FAN, "FAN"}, - {0, NULL}, + {SUBD_CORNER_STRAIGHT_CUT, "STRAIGHT_CUT"}, + {SUBD_CORNER_INNERVERT, "INNER_VERT"}, + {SUBD_CORNER_PATH, "PATH"}, + {SUBD_CORNER_FAN, "FAN"}, + {0, NULL}, }; /* @@ -1259,44 +1259,44 @@ static BMO_FlagSet bmo_enum_subdivide_edges_quad_corner_type[] = { * with options for face patterns, smoothing and randomization. */ static BMOpDefine bmo_subdivide_edges_def = { - "subdivide_edges", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, - {"smooth", BMO_OP_SLOT_FLT}, - {"smooth_falloff", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_falloff_type}, /* smooth falloff type */ - {"fractal", BMO_OP_SLOT_FLT}, - {"along_normal", BMO_OP_SLOT_FLT}, - {"cuts", BMO_OP_SLOT_INT}, - {"seed", BMO_OP_SLOT_INT}, - {"custom_patterns", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_INTERNAL}}, /* uses custom pointers */ - {"edge_percents", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_FLT}}, - {"quad_corner_type", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_subdivide_edges_quad_corner_type}, /* quad corner type */ - {"use_grid_fill", BMO_OP_SLOT_BOOL}, /* fill in fully-selected faces with a grid */ - {"use_single_edge", BMO_OP_SLOT_BOOL}, /* tessellate the case of one edge selected in a quad or triangle */ - {"use_only_quads", BMO_OP_SLOT_BOOL}, /* only subdivide quads (for loopcut) */ - {"use_sphere", BMO_OP_SLOT_BOOL}, /* for making new primitives only */ - {"use_smooth_even", BMO_OP_SLOT_BOOL}, /* maintain even offset when smoothing */ - {{'\0'}}, - }, - /* slots_out */ - {/* these next three can have multiple types of elements in them */ - {"geom_inner.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {"geom_split.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* contains all output geometry */ - {{'\0'}}, - }, - bmo_subdivide_edges_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "subdivide_edges", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, + {"smooth", BMO_OP_SLOT_FLT}, + {"smooth_falloff", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_falloff_type}, /* smooth falloff type */ + {"fractal", BMO_OP_SLOT_FLT}, + {"along_normal", BMO_OP_SLOT_FLT}, + {"cuts", BMO_OP_SLOT_INT}, + {"seed", BMO_OP_SLOT_INT}, + {"custom_patterns", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_INTERNAL}}, /* uses custom pointers */ + {"edge_percents", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_FLT}}, + {"quad_corner_type", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_subdivide_edges_quad_corner_type}, /* quad corner type */ + {"use_grid_fill", BMO_OP_SLOT_BOOL}, /* fill in fully-selected faces with a grid */ + {"use_single_edge", BMO_OP_SLOT_BOOL}, /* tessellate the case of one edge selected in a quad or triangle */ + {"use_only_quads", BMO_OP_SLOT_BOOL}, /* only subdivide quads (for loopcut) */ + {"use_sphere", BMO_OP_SLOT_BOOL}, /* for making new primitives only */ + {"use_smooth_even", BMO_OP_SLOT_BOOL}, /* maintain even offset when smoothing */ + {{'\0'}}, + }, + /* slots_out */ + {/* these next three can have multiple types of elements in them */ + {"geom_inner.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {"geom_split.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* contains all output geometry */ + {{'\0'}}, + }, + bmo_subdivide_edges_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; static BMO_FlagSet bmo_enum_subdivide_edgering_interp_mode[] = { - {SUBD_RING_INTERP_LINEAR, "LINEAR"}, - {SUBD_RING_INTERP_PATH, "PATH"}, - {SUBD_RING_INTERP_SURF, "SURFACE"}, - {0, NULL}, + {SUBD_RING_INTERP_LINEAR, "LINEAR"}, + {SUBD_RING_INTERP_PATH, "PATH"}, + {SUBD_RING_INTERP_SURF, "SURFACE"}, + {0, NULL}, }; /* @@ -1305,23 +1305,23 @@ static BMO_FlagSet bmo_enum_subdivide_edgering_interp_mode[] = { * Take an edge-ring, and subdivide with interpolation options. */ static BMOpDefine bmo_subdivide_edgering_def = { - "subdivide_edgering", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input vertices */ - {"interp_mode", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_subdivide_edgering_interp_mode}, /* interpolation method */ - {"smooth", BMO_OP_SLOT_FLT}, - {"cuts", BMO_OP_SLOT_INT}, - {"profile_shape", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_falloff_type}, /* profile shape type */ - {"profile_shape_factor", BMO_OP_SLOT_FLT}, - {{'\0'}}, - }, - {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ - {{'\0'}}}, - bmo_subdivide_edgering_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "subdivide_edgering", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input vertices */ + {"interp_mode", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_subdivide_edgering_interp_mode}, /* interpolation method */ + {"smooth", BMO_OP_SLOT_FLT}, + {"cuts", BMO_OP_SLOT_INT}, + {"profile_shape", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_falloff_type}, /* profile shape type */ + {"profile_shape_factor", BMO_OP_SLOT_FLT}, + {{'\0'}}, + }, + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ + {{'\0'}}}, + bmo_subdivide_edgering_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -1330,36 +1330,36 @@ static BMOpDefine bmo_subdivide_edgering_def = { * Bisects the mesh by a plane (cut the mesh in half). */ static BMOpDefine bmo_bisect_plane_def = { - "bisect_plane", - /* slots_in */ - {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {"dist", BMO_OP_SLOT_FLT}, /* minimum distance when testing if a vert is exactly on the plane */ - {"plane_co", BMO_OP_SLOT_VEC}, /* point on the plane */ - {"plane_no", BMO_OP_SLOT_VEC}, /* direction of the plane */ - {"use_snap_center", BMO_OP_SLOT_BOOL}, /* snap axis aligned verts to the center */ - {"clear_outer", BMO_OP_SLOT_BOOL}, /* when enabled. remove all geometry on the positive side of the plane */ - {"clear_inner", BMO_OP_SLOT_BOOL}, /* when enabled. remove all geometry on the negative side of the plane */ - {{'\0'}}, - }, - {{"geom_cut.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE}}, /* output geometry aligned with the plane (new and existing) */ - {"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* input and output geometry (result of cut) */ - {{'\0'}}}, - bmo_bisect_plane_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "bisect_plane", + /* slots_in */ + {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {"dist", BMO_OP_SLOT_FLT}, /* minimum distance when testing if a vert is exactly on the plane */ + {"plane_co", BMO_OP_SLOT_VEC}, /* point on the plane */ + {"plane_no", BMO_OP_SLOT_VEC}, /* direction of the plane */ + {"use_snap_center", BMO_OP_SLOT_BOOL}, /* snap axis aligned verts to the center */ + {"clear_outer", BMO_OP_SLOT_BOOL}, /* when enabled. remove all geometry on the positive side of the plane */ + {"clear_inner", BMO_OP_SLOT_BOOL}, /* when enabled. remove all geometry on the negative side of the plane */ + {{'\0'}}, + }, + {{"geom_cut.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE}}, /* output geometry aligned with the plane (new and existing) */ + {"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* input and output geometry (result of cut) */ + {{'\0'}}}, + bmo_bisect_plane_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; static BMO_FlagSet bmo_enum_delete_context[] = { - {DEL_VERTS, "VERTS"}, - {DEL_EDGES, "EDGES"}, - {DEL_ONLYFACES, "FACES_ONLY"}, - {DEL_EDGESFACES, "EDGES_FACES"}, - {DEL_FACES, "FACES"}, - {DEL_FACES_KEEP_BOUNDARY, "FACES_KEEP_BOUNDARY"}, - {DEL_ONLYTAGGED, "TAGGED_ONLY"}, - {0, NULL}, + {DEL_VERTS, "VERTS"}, + {DEL_EDGES, "EDGES"}, + {DEL_ONLYFACES, "FACES_ONLY"}, + {DEL_EDGESFACES, "EDGES_FACES"}, + {DEL_FACES, "FACES"}, + {DEL_FACES_KEEP_BOUNDARY, "FACES_KEEP_BOUNDARY"}, + {DEL_ONLYTAGGED, "TAGGED_ONLY"}, + {0, NULL}, }; /* @@ -1368,17 +1368,17 @@ static BMO_FlagSet bmo_enum_delete_context[] = { * Utility operator to delete geometry. */ static BMOpDefine bmo_delete_def = { - "delete", - /* slots_in */ - {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {"context", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_delete_context}, /* geometry types to delete */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_delete_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "delete", + /* slots_in */ + {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {"context", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_delete_context}, /* geometry types to delete */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_delete_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -1388,30 +1388,30 @@ static BMOpDefine bmo_delete_def = { * optionally into a destination mesh. */ static BMOpDefine bmo_duplicate_def = { - "duplicate", - /* slots_in */ - {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - /* destination bmesh, if NULL will use current on */ - {"dest", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_BMESH}}, - {"use_select_history", BMO_OP_SLOT_BOOL}, - {"use_edge_flip_from_face", BMO_OP_SLOT_BOOL}, - {{'\0'}}, - }, - /* slots_out */ - {{"geom_orig.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - /* facemap maps from source faces to dupe - * faces, and from dupe faces to source faces */ - {"vert_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, - {"edge_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, - {"face_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, - {"boundary_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, - {"isovert_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, - {{'\0'}}, - }, - bmo_duplicate_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "duplicate", + /* slots_in */ + {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + /* destination bmesh, if NULL will use current on */ + {"dest", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_BMESH}}, + {"use_select_history", BMO_OP_SLOT_BOOL}, + {"use_edge_flip_from_face", BMO_OP_SLOT_BOOL}, + {{'\0'}}, + }, + /* slots_out */ + {{"geom_orig.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + /* facemap maps from source faces to dupe + * faces, and from dupe faces to source faces */ + {"vert_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, + {"edge_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, + {"face_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, + {"boundary_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, + {"isovert_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, + {{'\0'}}, + }, + bmo_duplicate_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1421,23 +1421,23 @@ static BMOpDefine bmo_duplicate_def = { * optionally into a destination mesh. */ static BMOpDefine bmo_split_def = { - "split", - /* slots_in */ - {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - /* destination bmesh, if NULL will use current one */ - {"dest", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_BMESH}}, - {"use_only_faces", BMO_OP_SLOT_BOOL}, /* when enabled. don't duplicate loose verts/edges */ - {{'\0'}}, - }, - /* slots_out */ - {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {"boundary_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, - {"isovert_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, - {{'\0'}}, - }, - bmo_split_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "split", + /* slots_in */ + {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + /* destination bmesh, if NULL will use current one */ + {"dest", BMO_OP_SLOT_PTR, {(int)BMO_OP_SLOT_SUBTYPE_PTR_BMESH}}, + {"use_only_faces", BMO_OP_SLOT_BOOL}, /* when enabled. don't duplicate loose verts/edges */ + {{'\0'}}, + }, + /* slots_out */ + {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {"boundary_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, + {"isovert_map.out", BMO_OP_SLOT_MAPPING, {(int)BMO_OP_SLOT_SUBTYPE_MAP_ELEM}}, + {{'\0'}}, + }, + bmo_split_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1447,27 +1447,27 @@ static BMOpDefine bmo_split_def = { * rotating and possibly translating after each step */ static BMOpDefine bmo_spin_def = { - "spin", - /* slots_in */ - {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {"cent", BMO_OP_SLOT_VEC}, /* rotation center */ - {"axis", BMO_OP_SLOT_VEC}, /* rotation axis */ - {"dvec", BMO_OP_SLOT_VEC}, /* translation delta per step */ - {"angle", BMO_OP_SLOT_FLT}, /* total rotation angle (radians) */ - {"space", BMO_OP_SLOT_MAT}, /* matrix to define the space (typically object matrix) */ - {"steps", BMO_OP_SLOT_INT}, /* number of steps */ - {"use_merge", BMO_OP_SLOT_BOOL}, /* Merge first/last when the angle is a full revolution. */ - {"use_normal_flip", BMO_OP_SLOT_BOOL}, /* Create faces with reversed direction. */ - {"use_duplicate", BMO_OP_SLOT_BOOL}, /* duplicate or extrude? */ - {{'\0'}}, - }, - /* slots_out */ - {{"geom_last.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* result of last step */ - {{'\0'}}, - }, - bmo_spin_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "spin", + /* slots_in */ + {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {"cent", BMO_OP_SLOT_VEC}, /* rotation center */ + {"axis", BMO_OP_SLOT_VEC}, /* rotation axis */ + {"dvec", BMO_OP_SLOT_VEC}, /* translation delta per step */ + {"angle", BMO_OP_SLOT_FLT}, /* total rotation angle (radians) */ + {"space", BMO_OP_SLOT_MAT}, /* matrix to define the space (typically object matrix) */ + {"steps", BMO_OP_SLOT_INT}, /* number of steps */ + {"use_merge", BMO_OP_SLOT_BOOL}, /* Merge first/last when the angle is a full revolution. */ + {"use_normal_flip", BMO_OP_SLOT_BOOL}, /* Create faces with reversed direction. */ + {"use_duplicate", BMO_OP_SLOT_BOOL}, /* duplicate or extrude? */ + {{'\0'}}, + }, + /* slots_out */ + {{"geom_last.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* result of last step */ + {{'\0'}}, + }, + bmo_spin_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1476,15 +1476,15 @@ static BMOpDefine bmo_spin_def = { * Cycle the loop UV's */ static BMOpDefine bmo_rotate_uvs_def = { - "rotate_uvs", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ - {"use_ccw", BMO_OP_SLOT_BOOL}, /* rotate counter-clockwise if true, otherwise clockwise */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_rotate_uvs_exec, - (BMO_OPTYPE_FLAG_NOP), + "rotate_uvs", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ + {"use_ccw", BMO_OP_SLOT_BOOL}, /* rotate counter-clockwise if true, otherwise clockwise */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_rotate_uvs_exec, + (BMO_OPTYPE_FLAG_NOP), }; /* @@ -1493,14 +1493,14 @@ static BMOpDefine bmo_rotate_uvs_def = { * Reverse the UV's */ static BMOpDefine bmo_reverse_uvs_def = { - "reverse_uvs", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_reverse_uvs_exec, - (BMO_OPTYPE_FLAG_NOP), + "reverse_uvs", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_reverse_uvs_exec, + (BMO_OPTYPE_FLAG_NOP), }; /* @@ -1509,15 +1509,15 @@ static BMOpDefine bmo_reverse_uvs_def = { * Cycle the loop colors */ static BMOpDefine bmo_rotate_colors_def = { - "rotate_colors", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ - {"use_ccw", BMO_OP_SLOT_BOOL}, /* rotate counter-clockwise if true, otherwise clockwise */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_rotate_colors_exec, - (BMO_OPTYPE_FLAG_NOP), + "rotate_colors", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ + {"use_ccw", BMO_OP_SLOT_BOOL}, /* rotate counter-clockwise if true, otherwise clockwise */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_rotate_colors_exec, + (BMO_OPTYPE_FLAG_NOP), }; /* @@ -1526,14 +1526,14 @@ static BMOpDefine bmo_rotate_colors_def = { * Reverse the loop colors. */ static BMOpDefine bmo_reverse_colors_def = { - "reverse_colors", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ - {{'\0'}}, - }, - {{{'\0'}}}, /* no output */ - bmo_reverse_colors_exec, - (BMO_OPTYPE_FLAG_NOP), + "reverse_colors", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ + {{'\0'}}, + }, + {{{'\0'}}}, /* no output */ + bmo_reverse_colors_exec, + (BMO_OPTYPE_FLAG_NOP), }; /* @@ -1542,22 +1542,22 @@ static BMOpDefine bmo_reverse_colors_def = { * Disconnects faces along input edges. */ static BMOpDefine bmo_split_edges_def = { - "split_edges", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ - /* needed for vertex rip so we can rip only half an edge at a boundary wich would otherwise split off */ - {"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* optional tag verts, use to have greater control of splits */ - {"use_verts", BMO_OP_SLOT_BOOL}, /* use 'verts' for splitting, else just find verts to split from edges */ - {{'\0'}}, - }, - /* slots_out */ - {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* old output disconnected edges */ - {{'\0'}}, - }, - bmo_split_edges_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "split_edges", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ + /* needed for vertex rip so we can rip only half an edge at a boundary wich would otherwise split off */ + {"verts", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* optional tag verts, use to have greater control of splits */ + {"use_verts", BMO_OP_SLOT_BOOL}, /* use 'verts' for splitting, else just find verts to split from edges */ + {{'\0'}}, + }, + /* slots_out */ + {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* old output disconnected edges */ + {{'\0'}}, + }, + bmo_split_edges_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1566,22 +1566,22 @@ static BMOpDefine bmo_split_edges_def = { * Creates a grid with a variable number of subdivisions */ static BMOpDefine bmo_create_grid_def = { - "create_grid", - /* slots_in */ - {{"x_segments", BMO_OP_SLOT_INT}, /* number of x segments */ - {"y_segments", BMO_OP_SLOT_INT}, /* number of y segments */ - {"size", BMO_OP_SLOT_FLT}, /* size of the grid */ - {"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ - {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ - {{'\0'}}, - }, - /* slots_out */ - {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ - {{'\0'}}, - }, - bmo_create_grid_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "create_grid", + /* slots_in */ + {{"x_segments", BMO_OP_SLOT_INT}, /* number of x segments */ + {"y_segments", BMO_OP_SLOT_INT}, /* number of y segments */ + {"size", BMO_OP_SLOT_FLT}, /* size of the grid */ + {"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ + {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ + {{'\0'}}, + }, + /* slots_out */ + {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ + {{'\0'}}, + }, + bmo_create_grid_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1590,22 +1590,22 @@ static BMOpDefine bmo_create_grid_def = { * Creates a grid with a variable number of subdivisions */ static BMOpDefine bmo_create_uvsphere_def = { - "create_uvsphere", - /* slots_in */ - {{"u_segments", BMO_OP_SLOT_INT}, /* number of u segments */ - {"v_segments", BMO_OP_SLOT_INT}, /* number of v segment */ - {"diameter", BMO_OP_SLOT_FLT}, /* diameter */ - {"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ - {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ - {{'\0'}}, - }, - /* slots_out */ - {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ - {{'\0'}}, - }, - bmo_create_uvsphere_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "create_uvsphere", + /* slots_in */ + {{"u_segments", BMO_OP_SLOT_INT}, /* number of u segments */ + {"v_segments", BMO_OP_SLOT_INT}, /* number of v segment */ + {"diameter", BMO_OP_SLOT_FLT}, /* diameter */ + {"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ + {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ + {{'\0'}}, + }, + /* slots_out */ + {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ + {{'\0'}}, + }, + bmo_create_uvsphere_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1614,21 +1614,21 @@ static BMOpDefine bmo_create_uvsphere_def = { * Creates a grid with a variable number of subdivisions */ static BMOpDefine bmo_create_icosphere_def = { - "create_icosphere", - /* slots_in */ - {{"subdivisions", BMO_OP_SLOT_INT}, /* how many times to recursively subdivide the sphere */ - {"diameter", BMO_OP_SLOT_FLT}, /* diameter */ - {"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ - {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ - {{'\0'}}, - }, - /* slots_out */ - {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ - {{'\0'}}, - }, - bmo_create_icosphere_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "create_icosphere", + /* slots_in */ + {{"subdivisions", BMO_OP_SLOT_INT}, /* how many times to recursively subdivide the sphere */ + {"diameter", BMO_OP_SLOT_FLT}, /* diameter */ + {"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ + {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ + {{'\0'}}, + }, + /* slots_out */ + {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ + {{'\0'}}, + }, + bmo_create_icosphere_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1637,19 +1637,19 @@ static BMOpDefine bmo_create_icosphere_def = { * Creates a monkey (standard blender primitive). */ static BMOpDefine bmo_create_monkey_def = { - "create_monkey", - /* slots_in */ - {{"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ - {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ - {{'\0'}}, - }, - /* slots_out */ - {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ - {{'\0'}}, - }, - bmo_create_monkey_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "create_monkey", + /* slots_in */ + {{"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ + {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ + {{'\0'}}, + }, + /* slots_out */ + {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ + {{'\0'}}, + }, + bmo_create_monkey_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1658,48 +1658,48 @@ static BMOpDefine bmo_create_monkey_def = { * Creates a cone with variable depth at both ends */ static BMOpDefine bmo_create_cone_def = { - "create_cone", - /* slots_in */ - {{"cap_ends", BMO_OP_SLOT_BOOL}, /* whether or not to fill in the ends with faces */ - {"cap_tris", BMO_OP_SLOT_BOOL}, /* fill ends with triangles instead of ngons */ - {"segments", BMO_OP_SLOT_INT}, - {"diameter1", BMO_OP_SLOT_FLT}, /* diameter of one end */ - {"diameter2", BMO_OP_SLOT_FLT}, /* diameter of the opposite */ - {"depth", BMO_OP_SLOT_FLT}, /* distance between ends */ - {"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ - {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ - {{'\0'}}, - }, - /* slots_out */ - {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ - {{'\0'}}, - }, - bmo_create_cone_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "create_cone", + /* slots_in */ + {{"cap_ends", BMO_OP_SLOT_BOOL}, /* whether or not to fill in the ends with faces */ + {"cap_tris", BMO_OP_SLOT_BOOL}, /* fill ends with triangles instead of ngons */ + {"segments", BMO_OP_SLOT_INT}, + {"diameter1", BMO_OP_SLOT_FLT}, /* diameter of one end */ + {"diameter2", BMO_OP_SLOT_FLT}, /* diameter of the opposite */ + {"depth", BMO_OP_SLOT_FLT}, /* distance between ends */ + {"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ + {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ + {{'\0'}}, + }, + /* slots_out */ + {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ + {{'\0'}}, + }, + bmo_create_cone_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* * Creates a Circle. */ static BMOpDefine bmo_create_circle_def = { - "create_circle", - /* slots_in */ - {{"cap_ends", BMO_OP_SLOT_BOOL}, /* whether or not to fill in the ends with faces */ - {"cap_tris", BMO_OP_SLOT_BOOL}, /* fill ends with triangles instead of ngons */ - {"segments", BMO_OP_SLOT_INT}, - {"radius", BMO_OP_SLOT_FLT}, /* Radius of the circle. */ - {"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ - {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ - {{'\0'}}, - }, - /* slots_out */ - {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ - {{'\0'}}, - }, - bmo_create_circle_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "create_circle", + /* slots_in */ + {{"cap_ends", BMO_OP_SLOT_BOOL}, /* whether or not to fill in the ends with faces */ + {"cap_tris", BMO_OP_SLOT_BOOL}, /* fill ends with triangles instead of ngons */ + {"segments", BMO_OP_SLOT_INT}, + {"radius", BMO_OP_SLOT_FLT}, /* Radius of the circle. */ + {"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ + {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ + {{'\0'}}, + }, + /* slots_out */ + {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ + {{'\0'}}, + }, + bmo_create_circle_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1708,43 +1708,43 @@ static BMOpDefine bmo_create_circle_def = { * Creates a cube. */ static BMOpDefine bmo_create_cube_def = { - "create_cube", - /* slots_in */ - {{"size", BMO_OP_SLOT_FLT}, /* size of the cube */ - {"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ - {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ - {{'\0'}}, - }, - /* slots_out */ - {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ - {{'\0'}}, - }, - bmo_create_cube_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "create_cube", + /* slots_in */ + {{"size", BMO_OP_SLOT_FLT}, /* size of the cube */ + {"matrix", BMO_OP_SLOT_MAT}, /* matrix to multiply the new geometry with */ + {"calc_uvs", BMO_OP_SLOT_BOOL}, /* calculate default UVs */ + {{'\0'}}, + }, + /* slots_out */ + {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ + {{'\0'}}, + }, + bmo_create_cube_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; static BMO_FlagSet bmo_enum_bevel_offset_type[] = { - {BEVEL_AMT_OFFSET, "OFFSET"}, - {BEVEL_AMT_WIDTH, "WIDTH"}, - {BEVEL_AMT_DEPTH, "DEPTH"}, - {BEVEL_AMT_PERCENT, "PERCENT"}, - {0, NULL}, + {BEVEL_AMT_OFFSET, "OFFSET"}, + {BEVEL_AMT_WIDTH, "WIDTH"}, + {BEVEL_AMT_DEPTH, "DEPTH"}, + {BEVEL_AMT_PERCENT, "PERCENT"}, + {0, NULL}, }; static BMO_FlagSet bmo_enum_bevel_face_strength_type[] = { - {BEVEL_FACE_STRENGTH_NONE, "NONE"}, - {BEVEL_FACE_STRENGTH_NEW, "NEW"}, - {BEVEL_FACE_STRENGTH_AFFECTED, "AFFECTED"}, - {BEVEL_FACE_STRENGTH_ALL, "ALL"}, - {0, NULL}, + {BEVEL_FACE_STRENGTH_NONE, "NONE"}, + {BEVEL_FACE_STRENGTH_NEW, "NEW"}, + {BEVEL_FACE_STRENGTH_AFFECTED, "AFFECTED"}, + {BEVEL_FACE_STRENGTH_ALL, "ALL"}, + {0, NULL}, }; static BMO_FlagSet bmo_enum_bevel_miter_type[] = { - {BEVEL_MITER_SHARP, "SHARP"}, - {BEVEL_MITER_PATCH, "PATCH"}, - {BEVEL_MITER_ARC, "ARC"}, - {0, NULL}, + {BEVEL_MITER_SHARP, "SHARP"}, + {BEVEL_MITER_PATCH, "PATCH"}, + {BEVEL_MITER_ARC, "ARC"}, + {0, NULL}, }; /* @@ -1753,49 +1753,49 @@ static BMO_FlagSet bmo_enum_bevel_miter_type[] = { * Bevels edges and vertices */ static BMOpDefine bmo_bevel_def = { - "bevel", - /* slots_in */ - {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* input edges and vertices */ - {"offset", BMO_OP_SLOT_FLT}, /* amount to offset beveled edge */ - {"offset_type", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_bevel_offset_type}, /* how to measure the offset */ - {"segments", BMO_OP_SLOT_INT}, /* number of segments in bevel */ - {"profile", BMO_OP_SLOT_FLT}, /* profile shape, 0->1 (.5=>round) */ - {"vertex_only", BMO_OP_SLOT_BOOL}, /* only bevel vertices, not edges */ - {"clamp_overlap", BMO_OP_SLOT_BOOL}, /* do not allow beveled edges/vertices to overlap each other */ - {"material", BMO_OP_SLOT_INT}, /* material for bevel faces, -1 means get from adjacent faces */ - {"loop_slide", BMO_OP_SLOT_BOOL}, /* prefer to slide along edges to having even widths */ - {"mark_seam", BMO_OP_SLOT_BOOL}, /* extend edge data to allow seams to run across bevels */ - {"mark_sharp", BMO_OP_SLOT_BOOL}, /* extend edge data to allow sharp edges to run across bevels */ - {"harden_normals", BMO_OP_SLOT_BOOL}, /* harden normals */ - {"face_strength_mode", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, - bmo_enum_bevel_face_strength_type}, /* whether to set face strength, and which faces to set if so */ - {"miter_outer", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, - bmo_enum_bevel_miter_type}, /* outer miter kind */ - {"miter_inner", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, - bmo_enum_bevel_miter_type}, /* outer miter kind */ - {"spread", BMO_OP_SLOT_FLT}, /* amount to offset beveled edge */ - {"smoothresh", BMO_OP_SLOT_FLT}, /* for passing mesh's smoothresh, used in hardening */ - {{'\0'}}, - }, - /* slots_out */ - {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ - {"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* output edges */ - {"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ - {{'\0'}}, - }, - - bmo_bevel_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "bevel", + /* slots_in */ + {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* input edges and vertices */ + {"offset", BMO_OP_SLOT_FLT}, /* amount to offset beveled edge */ + {"offset_type", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_bevel_offset_type}, /* how to measure the offset */ + {"segments", BMO_OP_SLOT_INT}, /* number of segments in bevel */ + {"profile", BMO_OP_SLOT_FLT}, /* profile shape, 0->1 (.5=>round) */ + {"vertex_only", BMO_OP_SLOT_BOOL}, /* only bevel vertices, not edges */ + {"clamp_overlap", BMO_OP_SLOT_BOOL}, /* do not allow beveled edges/vertices to overlap each other */ + {"material", BMO_OP_SLOT_INT}, /* material for bevel faces, -1 means get from adjacent faces */ + {"loop_slide", BMO_OP_SLOT_BOOL}, /* prefer to slide along edges to having even widths */ + {"mark_seam", BMO_OP_SLOT_BOOL}, /* extend edge data to allow seams to run across bevels */ + {"mark_sharp", BMO_OP_SLOT_BOOL}, /* extend edge data to allow sharp edges to run across bevels */ + {"harden_normals", BMO_OP_SLOT_BOOL}, /* harden normals */ + {"face_strength_mode", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, + bmo_enum_bevel_face_strength_type}, /* whether to set face strength, and which faces to set if so */ + {"miter_outer", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, + bmo_enum_bevel_miter_type}, /* outer miter kind */ + {"miter_inner", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, + bmo_enum_bevel_miter_type}, /* outer miter kind */ + {"spread", BMO_OP_SLOT_FLT}, /* amount to offset beveled edge */ + {"smoothresh", BMO_OP_SLOT_FLT}, /* for passing mesh's smoothresh, used in hardening */ + {{'\0'}}, + }, + /* slots_out */ + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ + {"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* output edges */ + {"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ + {{'\0'}}, + }, + + bmo_bevel_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* no enum is defined for this */ static BMO_FlagSet bmo_enum_beautify_fill_method[] = { - {0, "AREA"}, - {1, "ANGLE"}, - {0, NULL}, + {0, "AREA"}, + {1, "ANGLE"}, + {0, NULL}, }; /* @@ -1804,23 +1804,23 @@ static BMO_FlagSet bmo_enum_beautify_fill_method[] = { * Rotate edges to create more evenly spaced triangles. */ static BMOpDefine bmo_beautify_fill_def = { - "beautify_fill", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ - {"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* edges that can be flipped */ - {"use_restrict_tag", BMO_OP_SLOT_BOOL}, /* restrict edge rotation to mixed tagged vertices */ - {"method", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_beautify_fill_method}, /* method to define what is beautiful */ - {{'\0'}}, - }, - /* slots_out */ - {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* new flipped faces and edges */ - {{'\0'}}, - }, - bmo_beautify_fill_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "beautify_fill", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ + {"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* edges that can be flipped */ + {"use_restrict_tag", BMO_OP_SLOT_BOOL}, /* restrict edge rotation to mixed tagged vertices */ + {"method", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_beautify_fill_method}, /* method to define what is beautiful */ + {{'\0'}}, + }, + /* slots_out */ + {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* new flipped faces and edges */ + {{'\0'}}, + }, + bmo_beautify_fill_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* @@ -1829,22 +1829,22 @@ static BMOpDefine bmo_beautify_fill_def = { * Fill edges with triangles */ static BMOpDefine bmo_triangle_fill_def = { - "triangle_fill", - /* slots_in */ - {{"use_beauty", BMO_OP_SLOT_BOOL}, - {"use_dissolve", BMO_OP_SLOT_BOOL}, /* dissolve resulting faces */ - {"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ - {"normal", BMO_OP_SLOT_VEC}, /* optionally pass the fill normal to use */ - {{'\0'}}, - }, - /* slots_out */ - {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* new faces and edges */ - {{'\0'}}, - }, - bmo_triangle_fill_exec, - (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | - BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "triangle_fill", + /* slots_in */ + {{"use_beauty", BMO_OP_SLOT_BOOL}, + {"use_dissolve", BMO_OP_SLOT_BOOL}, /* dissolve resulting faces */ + {"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ + {"normal", BMO_OP_SLOT_VEC}, /* optionally pass the fill normal to use */ + {{'\0'}}, + }, + /* slots_out */ + {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, /* new faces and edges */ + {{'\0'}}, + }, + bmo_triangle_fill_exec, + (BMO_OPTYPE_FLAG_UNTAN_MULTIRES | + BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1853,19 +1853,19 @@ static BMOpDefine bmo_triangle_fill_def = { * Turns a mesh into a shell with thickness */ static BMOpDefine bmo_solidify_def = { - "solidify", - /* slots_in */ - {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {"thickness", BMO_OP_SLOT_FLT}, - {{'\0'}}, - }, - /* slots_out */ - {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {{'\0'}}, - }, - bmo_solidify_face_region_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "solidify", + /* slots_in */ + {{"geom", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {"thickness", BMO_OP_SLOT_FLT}, + {{'\0'}}, + }, + /* slots_out */ + {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {{'\0'}}, + }, + bmo_solidify_face_region_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1874,23 +1874,23 @@ static BMOpDefine bmo_solidify_def = { * Insets individual faces. */ static BMOpDefine bmo_inset_individual_def = { - "inset_individual", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ - {"thickness", BMO_OP_SLOT_FLT}, - {"depth", BMO_OP_SLOT_FLT}, - {"use_even_offset", BMO_OP_SLOT_BOOL}, - {"use_interpolate", BMO_OP_SLOT_BOOL}, - {"use_relative_offset", BMO_OP_SLOT_BOOL}, - {{'\0'}}, - }, - /* slots_out */ - {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ - {{'\0'}}, - }, - bmo_inset_individual_exec, - /* caller needs to handle BMO_OPTYPE_FLAG_SELECT_FLUSH */ - (BMO_OPTYPE_FLAG_NORMALS_CALC), + "inset_individual", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ + {"thickness", BMO_OP_SLOT_FLT}, + {"depth", BMO_OP_SLOT_FLT}, + {"use_even_offset", BMO_OP_SLOT_BOOL}, + {"use_interpolate", BMO_OP_SLOT_BOOL}, + {"use_relative_offset", BMO_OP_SLOT_BOOL}, + {{'\0'}}, + }, + /* slots_out */ + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ + {{'\0'}}, + }, + bmo_inset_individual_exec, + /* caller needs to handle BMO_OPTYPE_FLAG_SELECT_FLUSH */ + (BMO_OPTYPE_FLAG_NORMALS_CALC), }; /* @@ -1899,27 +1899,27 @@ static BMOpDefine bmo_inset_individual_def = { * Inset or outset face regions. */ static BMOpDefine bmo_inset_region_def = { - "inset_region", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ - {"faces_exclude", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, - {"use_boundary", BMO_OP_SLOT_BOOL}, - {"use_even_offset", BMO_OP_SLOT_BOOL}, - {"use_interpolate", BMO_OP_SLOT_BOOL}, - {"use_relative_offset", BMO_OP_SLOT_BOOL}, - {"use_edge_rail", BMO_OP_SLOT_BOOL}, - {"thickness", BMO_OP_SLOT_FLT}, - {"depth", BMO_OP_SLOT_FLT}, - {"use_outset", BMO_OP_SLOT_BOOL}, - {{'\0'}}, - }, - /* slots_out */ - {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ - {{'\0'}}, - }, - bmo_inset_region_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "inset_region", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ + {"faces_exclude", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, + {"use_boundary", BMO_OP_SLOT_BOOL}, + {"use_even_offset", BMO_OP_SLOT_BOOL}, + {"use_interpolate", BMO_OP_SLOT_BOOL}, + {"use_relative_offset", BMO_OP_SLOT_BOOL}, + {"use_edge_rail", BMO_OP_SLOT_BOOL}, + {"thickness", BMO_OP_SLOT_FLT}, + {"depth", BMO_OP_SLOT_FLT}, + {"use_outset", BMO_OP_SLOT_BOOL}, + {{'\0'}}, + }, + /* slots_out */ + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ + {{'\0'}}, + }, + bmo_inset_region_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1928,19 +1928,19 @@ static BMOpDefine bmo_inset_region_def = { * Creates edge loops based on simple edge-outset method. */ static BMOpDefine bmo_offset_edgeloops_def = { - "offset_edgeloops", - /* slots_in */ - {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input faces */ - {"use_cap_endpoint", BMO_OP_SLOT_BOOL}, - {{'\0'}}, - }, - /* slots_out */ - {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* output faces */ - {{'\0'}}, - }, - bmo_offset_edgeloops_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH), + "offset_edgeloops", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input faces */ + {"use_cap_endpoint", BMO_OP_SLOT_BOOL}, + {{'\0'}}, + }, + /* slots_out */ + {{"edges.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* output faces */ + {{'\0'}}, + }, + bmo_offset_edgeloops_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH), }; /* @@ -1949,35 +1949,35 @@ static BMOpDefine bmo_offset_edgeloops_def = { * Makes a wire-frame copy of faces. */ static BMOpDefine bmo_wireframe_def = { - "wireframe", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ - {"thickness", BMO_OP_SLOT_FLT}, - {"offset", BMO_OP_SLOT_FLT}, - {"use_replace", BMO_OP_SLOT_BOOL}, - {"use_boundary", BMO_OP_SLOT_BOOL}, - {"use_even_offset", BMO_OP_SLOT_BOOL}, - {"use_crease", BMO_OP_SLOT_BOOL}, - {"crease_weight", BMO_OP_SLOT_FLT}, - {"use_relative_offset", BMO_OP_SLOT_BOOL}, - {"material_offset", BMO_OP_SLOT_INT}, - {{'\0'}}, - }, - /* slots_out */ - {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ - {{'\0'}}, - }, - bmo_wireframe_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "wireframe", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ + {"thickness", BMO_OP_SLOT_FLT}, + {"offset", BMO_OP_SLOT_FLT}, + {"use_replace", BMO_OP_SLOT_BOOL}, + {"use_boundary", BMO_OP_SLOT_BOOL}, + {"use_even_offset", BMO_OP_SLOT_BOOL}, + {"use_crease", BMO_OP_SLOT_BOOL}, + {"crease_weight", BMO_OP_SLOT_FLT}, + {"use_relative_offset", BMO_OP_SLOT_BOOL}, + {"material_offset", BMO_OP_SLOT_INT}, + {{'\0'}}, + }, + /* slots_out */ + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ + {{'\0'}}, + }, + bmo_wireframe_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; static BMO_FlagSet bmo_enum_poke_center_mode[] = { - {BMOP_POKE_MEDIAN_WEIGHTED, "MEAN_WEIGHTED"}, - {BMOP_POKE_MEDIAN, "MEAN"}, - {BMOP_POKE_BOUNDS, "BOUNDS"}, - {0, NULL}, + {BMOP_POKE_MEDIAN_WEIGHTED, "MEAN_WEIGHTED"}, + {BMOP_POKE_MEDIAN, "MEAN"}, + {BMOP_POKE_BOUNDS, "BOUNDS"}, + {0, NULL}, }; /* @@ -1986,23 +1986,23 @@ static BMO_FlagSet bmo_enum_poke_center_mode[] = { * Splits a face into a triangle fan. */ static BMOpDefine bmo_poke_def = { - "poke", - /* slots_in */ - {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ - {"offset", BMO_OP_SLOT_FLT}, /* center vertex offset along normal */ - {"center_mode", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_poke_center_mode}, /* calculation mode for center vertex */ - {"use_relative_offset", BMO_OP_SLOT_BOOL}, /* apply offset */ - {{'\0'}}, - }, - /* slots_out */ - {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ - {"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ - {{'\0'}}, - }, - bmo_poke_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "poke", + /* slots_in */ + {{"faces", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* input faces */ + {"offset", BMO_OP_SLOT_FLT}, /* center vertex offset along normal */ + {"center_mode", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_poke_center_mode}, /* calculation mode for center vertex */ + {"use_relative_offset", BMO_OP_SLOT_BOOL}, /* apply offset */ + {{'\0'}}, + }, + /* slots_out */ + {{"verts.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT}}, /* output verts */ + {"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* output faces */ + {{'\0'}}, + }, + bmo_poke_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; #ifdef WITH_BULLET @@ -2022,23 +2022,23 @@ static BMOpDefine bmo_poke_def = { * that were in the input and are part of the hull. */ static BMOpDefine bmo_convex_hull_def = { - "convex_hull", - /* slots_in */ - {{"input", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {"use_existing_faces", BMO_OP_SLOT_BOOL}, - {{'\0'}}, - }, - /* slots_out */ - {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {"geom_interior.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {"geom_unused.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {"geom_holes.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {{'\0'}}, - }, - bmo_convex_hull_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "convex_hull", + /* slots_in */ + {{"input", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {"use_existing_faces", BMO_OP_SLOT_BOOL}, + {{'\0'}}, + }, + /* slots_out */ + {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {"geom_interior.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {"geom_unused.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {"geom_holes.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {{'\0'}}, + }, + bmo_convex_hull_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; #endif @@ -2053,108 +2053,108 @@ static BMOpDefine bmo_convex_hull_def = { * All new vertices, edges, and faces are added to the "geom.out" slot. */ static BMOpDefine bmo_symmetrize_def = { - "symmetrize", - /* slots_in */ - {{"input", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {"direction", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_axis_xyz}, /* axis to use */ - {"dist", BMO_OP_SLOT_FLT}, /* minimum distance */ - {{'\0'}}, - }, - /* slots_out */ - {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, - {{'\0'}}, - }, - bmo_symmetrize_exec, - (BMO_OPTYPE_FLAG_NORMALS_CALC | - BMO_OPTYPE_FLAG_SELECT_FLUSH | - BMO_OPTYPE_FLAG_SELECT_VALIDATE), + "symmetrize", + /* slots_in */ + {{"input", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {"direction", BMO_OP_SLOT_INT, {(int)BMO_OP_SLOT_SUBTYPE_INT_ENUM}, bmo_enum_axis_xyz}, /* axis to use */ + {"dist", BMO_OP_SLOT_FLT}, /* minimum distance */ + {{'\0'}}, + }, + /* slots_out */ + {{"geom.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_VERT | BM_EDGE | BM_FACE}}, + {{'\0'}}, + }, + bmo_symmetrize_exec, + (BMO_OPTYPE_FLAG_NORMALS_CALC | + BMO_OPTYPE_FLAG_SELECT_FLUSH | + BMO_OPTYPE_FLAG_SELECT_VALIDATE), }; /* clang-format on */ const BMOpDefine *bmo_opdefines[] = { - &bmo_automerge_def, - &bmo_average_vert_facedata_def, - &bmo_beautify_fill_def, - &bmo_bevel_def, - &bmo_bisect_edges_def, - &bmo_bmesh_to_mesh_def, - &bmo_bridge_loops_def, - &bmo_collapse_def, - &bmo_collapse_uvs_def, - &bmo_connect_verts_def, - &bmo_connect_verts_concave_def, - &bmo_connect_verts_nonplanar_def, - &bmo_connect_vert_pair_def, - &bmo_contextual_create_def, + &bmo_automerge_def, + &bmo_average_vert_facedata_def, + &bmo_beautify_fill_def, + &bmo_bevel_def, + &bmo_bisect_edges_def, + &bmo_bmesh_to_mesh_def, + &bmo_bridge_loops_def, + &bmo_collapse_def, + &bmo_collapse_uvs_def, + &bmo_connect_verts_def, + &bmo_connect_verts_concave_def, + &bmo_connect_verts_nonplanar_def, + &bmo_connect_vert_pair_def, + &bmo_contextual_create_def, #ifdef WITH_BULLET - &bmo_convex_hull_def, + &bmo_convex_hull_def, #endif - &bmo_create_circle_def, - &bmo_create_cone_def, - &bmo_create_cube_def, - &bmo_create_grid_def, - &bmo_create_icosphere_def, - &bmo_create_monkey_def, - &bmo_create_uvsphere_def, - &bmo_create_vert_def, - &bmo_delete_def, - &bmo_dissolve_edges_def, - &bmo_dissolve_faces_def, - &bmo_dissolve_verts_def, - &bmo_dissolve_limit_def, - &bmo_dissolve_degenerate_def, - &bmo_duplicate_def, - &bmo_holes_fill_def, - &bmo_face_attribute_fill_def, - &bmo_offset_edgeloops_def, - &bmo_edgeloop_fill_def, - &bmo_edgenet_fill_def, - &bmo_edgenet_prepare_def, - &bmo_extrude_discrete_faces_def, - &bmo_extrude_edge_only_def, - &bmo_extrude_face_region_def, - &bmo_extrude_vert_indiv_def, - &bmo_find_doubles_def, - &bmo_grid_fill_def, - &bmo_inset_individual_def, - &bmo_inset_region_def, - &bmo_join_triangles_def, - &bmo_mesh_to_bmesh_def, - &bmo_mirror_def, - &bmo_object_load_bmesh_def, - &bmo_pointmerge_def, - &bmo_pointmerge_facedata_def, - &bmo_poke_def, - &bmo_recalc_face_normals_def, - &bmo_planar_faces_def, - &bmo_region_extend_def, - &bmo_remove_doubles_def, - &bmo_reverse_colors_def, - &bmo_reverse_faces_def, - &bmo_reverse_uvs_def, - &bmo_rotate_colors_def, - &bmo_rotate_def, - &bmo_rotate_edges_def, - &bmo_rotate_uvs_def, - &bmo_scale_def, - &bmo_smooth_vert_def, - &bmo_smooth_laplacian_vert_def, - &bmo_solidify_def, - &bmo_spin_def, - &bmo_split_def, - &bmo_split_edges_def, - &bmo_subdivide_edges_def, - &bmo_subdivide_edgering_def, - &bmo_bisect_plane_def, - &bmo_symmetrize_def, - &bmo_transform_def, - &bmo_translate_def, - &bmo_triangle_fill_def, - &bmo_triangulate_def, - &bmo_unsubdivide_def, - &bmo_weld_verts_def, - &bmo_wireframe_def, + &bmo_create_circle_def, + &bmo_create_cone_def, + &bmo_create_cube_def, + &bmo_create_grid_def, + &bmo_create_icosphere_def, + &bmo_create_monkey_def, + &bmo_create_uvsphere_def, + &bmo_create_vert_def, + &bmo_delete_def, + &bmo_dissolve_edges_def, + &bmo_dissolve_faces_def, + &bmo_dissolve_verts_def, + &bmo_dissolve_limit_def, + &bmo_dissolve_degenerate_def, + &bmo_duplicate_def, + &bmo_holes_fill_def, + &bmo_face_attribute_fill_def, + &bmo_offset_edgeloops_def, + &bmo_edgeloop_fill_def, + &bmo_edgenet_fill_def, + &bmo_edgenet_prepare_def, + &bmo_extrude_discrete_faces_def, + &bmo_extrude_edge_only_def, + &bmo_extrude_face_region_def, + &bmo_extrude_vert_indiv_def, + &bmo_find_doubles_def, + &bmo_grid_fill_def, + &bmo_inset_individual_def, + &bmo_inset_region_def, + &bmo_join_triangles_def, + &bmo_mesh_to_bmesh_def, + &bmo_mirror_def, + &bmo_object_load_bmesh_def, + &bmo_pointmerge_def, + &bmo_pointmerge_facedata_def, + &bmo_poke_def, + &bmo_recalc_face_normals_def, + &bmo_planar_faces_def, + &bmo_region_extend_def, + &bmo_remove_doubles_def, + &bmo_reverse_colors_def, + &bmo_reverse_faces_def, + &bmo_reverse_uvs_def, + &bmo_rotate_colors_def, + &bmo_rotate_def, + &bmo_rotate_edges_def, + &bmo_rotate_uvs_def, + &bmo_scale_def, + &bmo_smooth_vert_def, + &bmo_smooth_laplacian_vert_def, + &bmo_solidify_def, + &bmo_spin_def, + &bmo_split_def, + &bmo_split_edges_def, + &bmo_subdivide_edges_def, + &bmo_subdivide_edgering_def, + &bmo_bisect_plane_def, + &bmo_symmetrize_def, + &bmo_transform_def, + &bmo_translate_def, + &bmo_triangle_fill_def, + &bmo_triangulate_def, + &bmo_unsubdivide_def, + &bmo_weld_verts_def, + &bmo_wireframe_def, }; const int bmo_opdefines_total = ARRAY_SIZE(bmo_opdefines); |