44 float mat[4][4], mat_space[4][4], imat_space[4][4];
62 if (shape_keys_len != 0) {
64 for (
int i = 0; i < shape_keys_len; i++, co_dst++) {
73 float mat[4][4], vec[3];
82 "transform matrix=%m4 space=%s verts=%s use_shapekey=%s",
94 float mat[3][3], vec[3];
105 "transform matrix=%m3 space=%s verts=%s use_shapekey=%s",
126 "transform matrix=%m4 space=%s verts=%s use_shapekey=%s",
155 bool changed =
false;
177 }
while ((l_iter = l_iter->
next) != l_first);
182 const bool use_faces,
183 const bool use_faces_step)
206 if (!use_faces_step) {
253 if (!use_faces_step) {
284 const bool use_faces,
285 const bool use_faces_step)
295 if (!use_faces_step) {
354 if (!use_faces_step) {
405 float(*
cos)[3] =
static_cast<float(*)[3]
>(
409 int i, j, clipx, clipy, clipz;
410 int xaxis, yaxis, zaxis;
442 if (clipx &&
fabsf(
v->
co[0]) <= clip_dist) {
445 if (clipy &&
fabsf(
v->
co[1]) <= clip_dist) {
448 if (clipz &&
fabsf(
v->
co[2]) <= clip_dist) {
486 if (cd_loop_uv_offset != -1) {
488 if (use_ccw ==
false) {
569 if (cd_loop_uv_offset != -1) {
582 int *r_cd_color_offset,
583 int *r_cd_color_type)
585 Mesh me_query = blender::dna::shallow_zero_initialize();
596 *r_cd_color_offset = -1;
600 *r_cd_color_offset = layer->offset;
601 *r_cd_color_type = layer->type;
614 int cd_loop_color_offset;
615 int cd_loop_color_type;
619 if (cd_loop_color_offset == -1) {
626 void *t_col = alloca(size);
629 if (use_ccw ==
false) {
643 memcpy(t_col, lcol, size);
644 memcpy(lcol, p_col, size);
645 memcpy(p_col, t_col, size);
650 memcpy(f_lcol, p_col, size);
662 memcpy(t_col, lcol, size);
665 memcpy(p_lcol, lcol, size);
671 memcpy(lcol, t_col, size);
680 const int cd_loop_color_offset,
681 const int cd_loop_color_type)
689 char *cols =
static_cast<char *
>(alloca(size * f->
len));
694 memcpy((
void *)
col, lcol, size);
703 col = cols + (f->
len - i - 1) * size;
704 memcpy(lcol, (
void *)
col, size);
715 int cd_loop_color_offset;
716 int cd_loop_color_type;
720 if (cd_loop_color_offset == -1) {
CustomDataLayer * BKE_attribute_from_index(AttributeOwner &owner, int lookup_index, AttrDomainMask domain_mask, eCustomDataMask layer_mask)
@ ATTR_DOMAIN_MASK_CORNER
CustomData interface, see also DNA_customdata_types.h.
int CustomData_get_offset(const CustomData *data, eCustomDataType type)
void CustomData_reset(CustomData *data)
int CustomData_number_of_layers(const CustomData *data, eCustomDataType type)
#define BLI_array_alloca(arr, realsize)
void unit_m3(float m[3][3])
void unit_m4(float m[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 invert_m4_m4(float inverse[4][4], const float mat[4][4])
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
Read Guarded memory(de)allocation.
#define BM_FACE_FIRST_LOOP(p)
#define BM_ELEM_CD_GET_FLOAT_P(ele, offset)
#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)
void bmo_flip_quad_tessellation_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 *, 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)
static AttributeOwner from_id(ID *id)
draw_view in_light_buf[] float
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
ccl_device_inline float3 cos(float3 v)
struct BMOpSlot slots_out[BMO_OP_MAX_SLOTS]
struct BMOpSlot slots_in[BMO_OP_MAX_SLOTS]