43 float mat[4][4], mat_space[4][4], imat_space[4][4];
61 if (shape_keys_len != 0) {
63 for (
int i = 0; i < shape_keys_len; i++, co_dst++) {
72 float mat[4][4], vec[3];
81 "transform matrix=%m4 space=%s verts=%s use_shapekey=%s",
93 float mat[3][3], vec[3];
104 "transform matrix=%m3 space=%s verts=%s use_shapekey=%s",
125 "transform matrix=%m4 space=%s verts=%s use_shapekey=%s",
160 }
while ((l_iter = l_iter->
next) != l_first);
165 const bool use_faces,
166 const bool use_faces_step)
189 if (!use_faces_step) {
236 if (!use_faces_step) {
265 const bool use_faces,
266 const bool use_faces_step)
276 if (!use_faces_step) {
335 if (!use_faces_step) {
390 int i, j, clipx, clipy, clipz;
391 int xaxis, yaxis, zaxis;
423 if (clipx &&
fabsf(
v->
co[0]) <= clip_dist) {
426 if (clipy &&
fabsf(
v->
co[1]) <= clip_dist) {
429 if (clipz &&
fabsf(
v->
co[2]) <= clip_dist) {
467 if (cd_loop_uv_offset != -1) {
469 if (use_ccw ==
false) {
550 if (cd_loop_uv_offset != -1) {
562 int *r_cd_color_offset,
563 int *r_cd_color_type)
574 *r_cd_color_offset = -1;
581 *r_cd_color_type = layer->
type;
594 int cd_loop_color_offset;
595 int cd_loop_color_type;
599 if (cd_loop_color_offset == -1) {
606 void *t_col = alloca(
size);
609 if (use_ccw ==
false) {
623 memcpy(t_col, lcol,
size);
624 memcpy(lcol, p_col,
size);
625 memcpy(p_col, t_col,
size);
630 memcpy(f_lcol, p_col,
size);
642 memcpy(t_col, lcol,
size);
645 memcpy(p_lcol, lcol,
size);
651 memcpy(lcol, t_col,
size);
660 const int cd_loop_color_offset,
661 const int cd_loop_color_type)
669 char *cols = alloca(
size * f->
len);
674 memcpy((
void *)
col, lcol,
size);
684 memcpy(lcol, (
void *)
col,
size);
695 int cd_loop_color_offset;
696 int cd_loop_color_type;
700 if (cd_loop_color_offset == -1) {
typedef float(TangentPoint)[2]
Generic geometry attributes built on CustomData.
CustomDataLayer * BKE_id_attribute_from_index(struct ID *id, int lookup_index, eAttrDomainMask domain_mask, eCustomDataMask layer_mask)
eAttrDomain BKE_id_attribute_domain(const struct ID *id, const struct CustomDataLayer *layer)
#define ATTR_DOMAIN_MASK_COLOR
void BKE_id_attribute_copy_domains_temp(short id_type, const struct CustomData *vdata, const struct CustomData *edata, const struct CustomData *ldata, const struct CustomData *pdata, const struct CustomData *cdata, struct ID *r_id)
CustomData interface, see also DNA_customdata_types.h.
int CustomData_number_of_layers(const struct CustomData *data, int type)
int CustomData_get_layer_index(const struct CustomData *data, int type)
int CustomData_get_offset(const struct CustomData *data, int type)
General operations, lookup, etc. for blender objects.
#define BLI_array_alloca(arr, realsize)
void unit_m3(float m[3][3])
void unit_m4(float m[4][4])
bool invert_m4_m4(float R[4][4], const float A[4][4])
void transform_pivot_set_m4(float mat[4][4], const float pivot[3])
void mul_m4_v3(const float M[4][4], float r[3])
#define mul_m4_series(...)
bool is_zero_m4(const float mat[4][4])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
void interp_v3_v3v3(float r[3], const float a[3], const float b[3], float t)
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void zero_v3(float r[3])
#define CD_MASK_COLOR_ALL
Object is a sort of wrapper for general info.
NSNotificationCenter * center
Read Guarded memory(de)allocation.
#define BM_FACE_FIRST_LOOP(p)
#define BM_ELEM_CD_GET_VOID_P(ele, offset)
BMVert * BM_vert_create(BMesh *bm, const float co[3], const BMVert *v_example, const eBMCreateFlag create_flag)
Main function for creating a new vertex.
void BMO_error_raise(BMesh *bm, BMOperator *owner, eBMOpErrorLevel level, const char *msg) ATTR_NONNULL(1
#define BM_elem_flag_test(ele, hflag)
#define BM_ITER_ELEM(ele, iter, data, itype)
#define BM_ITER_ELEM_INDEX(ele, iter, data, itype, indexvar)
ATTR_WARN_UNUSED_RESULT BMesh * bm
void BMO_slot_mat4_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, float r_mat[4][4])
void BMO_slot_buffer_flag_enable(BMesh *bm, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, char htype, short oflag)
BMO_FLAG_BUFFER.
#define BMO_edge_flag_test(bm, e, oflag)
void BMO_slot_vec_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, float r_vec[3])
#define BMO_edge_flag_enable(bm, e, oflag)
float BMO_slot_float_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
#define BMO_vert_flag_enable(bm, e, oflag)
#define BMO_vert_flag_set(bm, e, oflag, val)
#define BMO_edge_flag_set(bm, e, oflag, val)
void BMO_slot_buffer_from_enabled_flag(BMesh *bm, BMOperator *op, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, char htype, short oflag)
#define BMO_face_flag_enable(bm, e, oflag)
#define BMO_ITER(ele, iter, slot_args, slot_name, restrict_flag)
#define BMO_face_flag_set(bm, e, oflag, val)
int BMO_slot_int_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
int BMO_slot_buffer_len(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
bool BMO_op_callf(BMesh *bm, int flag, const char *fmt,...)
#define BMO_face_flag_test(bm, e, oflag)
bool BMO_slot_bool_get(BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name)
ATTR_WARN_UNUSED_RESULT const BMFlagLayer const short oflag
void BM_face_normal_flip_ex(BMesh *bm, BMFace *f, const int cd_loop_mdisp_offset, const bool use_loop_mdisp_flip)
Face Flip Normal.
BLI_INLINE BMVert * BM_edge_other_vert(BMEdge *e, const BMVert *v) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
BLI_INLINE bool BM_edge_is_wire(const BMEdge *e) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
ATTR_WARN_UNUSED_RESULT const BMLoop * l
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
void bmo_rotate_exec(BMesh *bm, BMOperator *op)
void bmo_region_extend_exec(BMesh *bm, BMOperator *op)
void bmo_reverse_uvs_exec(BMesh *bm, BMOperator *op)
static void bmo_region_extend_expand(BMesh *bm, BMOperator *op, const bool use_faces, const bool use_faces_step)
void bmo_transform_exec(BMesh *bm, BMOperator *op)
static void bmo_face_flag_set_flush(BMesh *bm, BMFace *f, const short oflag, const bool value)
void bmo_reverse_colors_exec(BMesh *bm, BMOperator *op)
void bmo_rotate_colors_exec(BMesh *bm, BMOperator *op)
static void bm_face_reverse_uvs(BMFace *f, const int cd_loop_uv_offset)
void bmo_rotate_uvs_exec(BMesh *bm, BMOperator *op)
static void bm_face_reverse_colors(BMFace *f, const int cd_loop_color_offset, const int cd_loop_color_type)
void bmo_translate_exec(BMesh *bm, BMOperator *op)
void bmo_create_vert_exec(BMesh *bm, BMOperator *op)
void bmo_smooth_vert_exec(BMesh *UNUSED(bm), BMOperator *op)
static void bmo_get_loop_color_ref(BMesh *bm, int index, int *r_cd_color_offset, int *r_cd_color_type)
void bmo_scale_exec(BMesh *bm, BMOperator *op)
static void bmo_region_extend_contract(BMesh *bm, BMOperator *op, const bool use_faces, const bool use_faces_step)
void bmo_reverse_faces_exec(BMesh *bm, BMOperator *op)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_mallocN)(size_t len, const char *str)
INLINE Rall1d< T, V, S > cos(const Rall1d< T, V, S > &arg)
struct BMOpSlot slots_out[BMO_OP_MAX_SLOTS]
struct BMOpSlot slots_in[BMO_OP_MAX_SLOTS]