74 const float twmat[4][4],
75 const float scale[3]);
79 #define MAN_TRANS_X (1 << 0)
80 #define MAN_TRANS_Y (1 << 1)
81 #define MAN_TRANS_Z (1 << 2)
82 #define MAN_TRANS_C (MAN_TRANS_X | MAN_TRANS_Y | MAN_TRANS_Z)
84 #define MAN_ROT_X (1 << 3)
85 #define MAN_ROT_Y (1 << 4)
86 #define MAN_ROT_Z (1 << 5)
87 #define MAN_ROT_C (MAN_ROT_X | MAN_ROT_Y | MAN_ROT_Z)
89 #define MAN_SCALE_X (1 << 8)
90 #define MAN_SCALE_Y (1 << 9)
91 #define MAN_SCALE_Z (1 << 10)
92 #define MAN_SCALE_C (MAN_SCALE_X | MAN_SCALE_Y | MAN_SCALE_Z)
115 #define MAN_AXIS_RANGE_TRANS_START MAN_AXIS_TRANS_X
116 #define MAN_AXIS_RANGE_TRANS_END (MAN_AXIS_TRANS_ZX + 1)
123 #define MAN_AXIS_RANGE_ROT_START MAN_AXIS_ROT_X
124 #define MAN_AXIS_RANGE_ROT_END (MAN_AXIS_ROT_T + 1)
133 #define MAN_AXIS_RANGE_SCALE_START MAN_AXIS_SCALE_X
134 #define MAN_AXIS_RANGE_SCALE_END (MAN_AXIS_SCALE_ZX + 1)
172 #define MAN_ITER_AXES_BEGIN(axis, axis_idx) \
176 for (axis_idx = 0; axis_idx < MAN_AXIS_LAST; axis_idx++) { \
177 axis = gizmo_get_axis_from_index(ggd, axis_idx);
179 #define MAN_ITER_AXES_END \
187 return ggd->
gizmos[axis_idx];
251 bool is_plane =
false;
255 float idot_axis = idot[aidx_norm];
257 idot_axis = 1.0f - idot_axis;
328 const float alpha = 0.6f;
329 const float alpha_hi = 1.0f;
338 bool is_plane =
false;
342 if (axis_idx_norm < 3) {
345 float idot_axis = idot[axis_idx_norm];
347 idot_axis = 1.0f - idot_axis;
349 alpha_fac = ((idot_axis > idot_max) ? 1.0f :
350 (idot_axis < idot_min) ? 0.0f :
351 ((idot_axis - idot_min) / (idot_max - idot_min)));
390 r_col[3] = alpha * alpha_fac;
391 r_col_hi[3] = alpha_hi * alpha_fac;
416 r_axis[0] = r_axis[1] = 1;
420 r_axis[1] = r_axis[2] = 1;
424 r_axis[2] = r_axis[0] = 1;
438 for (
int i = 0; i < 3; i++) {
450 for (
int i = 0; i < 3; i++) {
459 const bool use_matrix,
460 const float matrix[4][4])
506 short orientation_index)
533 cross_vec[0] = axis[1];
534 cross_vec[1] = axis[2];
535 cross_vec[2] = axis[0];
561 float mat[3][3], tmat[3][3], obmat[3][3];
576 float parent_mat[3][3];
610 float parent_mat[3][3];
638 const short orient_index =
params->orientation_index ?
639 (
params->orientation_index - 1) :
646 if (obpose !=
NULL) {
667 scene, view_layer, v3d, rv3d, ob, obedit, orient_index, pivot_point, mat);
676 float diff_mat[3][3];
688 float diff_mat[4][4];
689 const bool use_mat_local =
true;
705 if (gps->editcurve ==
NULL) {
732 for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
751 #define FOREACH_EDIT_OBJECT_BEGIN(ob_iter, use_mat_local) \
753 invert_m4_m4(obedit->imat, obedit->obmat); \
754 uint objects_len = 0; \
755 Object **objects = BKE_view_layer_array_from_objects_in_edit_mode( \
756 view_layer, CTX_wm_view3d(C), &objects_len); \
757 for (uint ob_index = 0; ob_index < objects_len; ob_index++) { \
758 Object *ob_iter = objects[ob_index]; \
759 const bool use_mat_local = (ob_iter != obedit);
761 #define FOREACH_EDIT_OBJECT_END() \
763 MEM_freeN(objects); \
780 float mat_local[4][4];
800 float mat_local[4][4];
827 Curve *cu = ob_iter->data;
833 float mat_local[4][4];
893 float mat_local[4][4];
913 float mat_local[4][4];
929 #undef FOREACH_EDIT_OBJECT_BEGIN
930 #undef FOREACH_EDIT_OBJECT_END
943 uint objects_len = 0;
946 for (
uint ob_index = 0; ob_index < objects_len; ob_index++) {
947 Object *ob_iter = objects[ob_index];
948 const bool use_mat_local = (ob_iter != ob);
954 float mat_local[4][4];
1000 for (k = 0, ek =
point->keys; k < point->totkey; k++, ek++) {
1017 base =
BASACT(view_layer);
1018 ob =
OBACT(view_layer);
1033 if (
params->use_only_center ==
false) {
1037 if (
params->use_only_center || (bb ==
NULL)) {
1041 for (
uint j = 0; j < 8; j++) {
1080 float view_vec[3], axis_vec[3];
1082 for (
int i = 0; i < 3; i++) {
1134 static void gizmo_line_range(
const int twtype,
const short axis_type,
float *r_start,
float *r_len)
1136 const float ofs = 0.2f;
1141 switch (axis_type) {
1144 *r_start = *r_len - ofs + 0.075f;
1152 *r_len -= ofs + 0.025f;
1166 const void *type_fn)
1175 int orient_flag = 0;
1197 &rna_Scene_transform_orientation_slots,
1199 for (
int i = 0; i <
ARRAY_SIZE(props); i++) {
1214 &rna_TransformOrientationSlot_type,
1215 &rna_TransformOrientationSlot_use,
1217 for (
int i = 0; i <
ARRAY_SIZE(props); i++) {
1220 mbus, &orient_ref_ptr, props[i], &msg_sub_value_gz_tag_refresh, __func__);
1230 &rna_ToolSettings_transform_pivot_point,
1232 for (
int i = 0; i <
ARRAY_SIZE(props); i++) {
1234 mbus, &toolsettings_ptr, props[i], &msg_sub_value_gz_tag_refresh, __func__);
1240 &rna_ToolSettings_workspace_tool_type,
1242 for (
int i = 0; i <
ARRAY_SIZE(props); i++) {
1244 mbus, &toolsettings_ptr, props[i], &msg_sub_value_gz_tag_refresh, __func__);
1255 &rna_SpaceView3D_show_gizmo_object_translate,
1256 &rna_SpaceView3D_show_gizmo_object_rotate,
1257 &rna_SpaceView3D_show_gizmo_object_scale,
1259 for (
int i = 0; i <
ARRAY_SIZE(props); i++) {
1280 float center_global[3],
1282 float r_mat_basis[4][4])
1286 r_mat_basis[2][3] = -
dot_v3v3(axis, center_global);
1289 sub_v3_v3(r_mat_basis[1], center_global);
1291 cross_v3_v3v3(r_mat_basis[0], r_mat_basis[1], r_mat_basis[2]);
1299 r_mat_basis[0][3] = 0.0f;
1300 r_mat_basis[1][3] = 0.0f;
1301 r_mat_basis[2][3] = 0.0f;
1302 r_mat_basis[3][3] = 1.0f;
1312 #define MAN_AXIS_SCALE_PLANE_SCALE 0.07f
1314 #define MAN_AXIS_SCALE_PLANE_OFFSET 7.0f
1325 ggd->
rotation = *(
const float *)value;
1341 #define GIZMO_NEW_ARROW(v, draw_style) \
1343 ggd->gizmos[v] = WM_gizmo_new_ptr(gzt_arrow, gzgroup, NULL); \
1344 RNA_enum_set(ggd->gizmos[v]->ptr, "draw_style", draw_style); \
1347 #define GIZMO_NEW_DIAL(v, draw_options) \
1349 ggd->gizmos[v] = WM_gizmo_new_ptr(gzt_dial, gzgroup, NULL); \
1350 RNA_enum_set(ggd->gizmos[v]->ptr, "draw_options", draw_options); \
1351 WM_gizmo_target_property_def_func(ggd->gizmos[v], "offset", ¶ms); \
1354 #define GIZMO_NEW_PRIM(v, draw_style) \
1356 ggd->gizmos[v] = WM_gizmo_new_ptr(gzt_prim, gzgroup, NULL); \
1357 RNA_enum_set(ggd->gizmos[v]->ptr, "draw_style", draw_style); \
1434 .use_only_center =
true,
1446 short axis_type = 0;
1448 if (
axis == widget) {
1462 if (
axis == widget) {
1466 bool is_plane_dummy;
1469 if (aidx_norm == 3) {
1490 float *scale =
NULL;
1525 } ot_store = {
NULL};
1530 bool constraint_axis[3] = {1, 0, 0};
1546 int draw_options = 0;
1595 switch (axis_type) {
1597 if (ot_store.translate ==
NULL) {
1605 if (ot_store.trackball ==
NULL) {
1608 ot_rotate = ot_store.trackball;
1611 if (ot_store.rotate ==
NULL) {
1614 ot_rotate = ot_store.rotate;
1620 if (ot_store.resize ==
NULL) {
1653 if (tref &&
STREQ(tref->
idname,
"builtin.move")) {
1656 else if (tref &&
STREQ(tref->
idname,
"builtin.rotate")) {
1659 else if (tref &&
STREQ(tref->
idname,
"builtin.scale")) {
1662 else if (tref &&
STREQ(tref->
idname,
"builtin.transform")) {
1688 const float twmat[4][4],
1689 const float scale[3])
1705 float start_co[3] = {0.0f, 0.0f, 0.0f};
1710 const float *z_axis = twmat[aidx_norm];
1714 const int aidx_norm_y = (aidx_norm + 2) % 3;
1715 const float *y_axis = twmat[aidx_norm_y];
1725 start_co[2] += 0.215f;
1731 len = ((start_co[2] +
len) * scale[aidx_norm]) - start_co[2];
1764 const int aidx_norm_x = (aidx_norm + 1) % 3;
1765 const int aidx_norm_y = (aidx_norm + 2) % 3;
1766 const float *y_axis = twmat[aidx_norm_y];
1767 const float *z_axis = twmat[aidx_norm];
1773 ofs[0] *= scale[aidx_norm_x];
1774 ofs[1] *= scale[aidx_norm_y];
1785 float rotate_select_bias = 0.0f;
1787 rotate_select_bias = -2.0f;
1825 .use_only_center =
true,
1826 .orientation_index = orient_index + 1,
1856 float viewinv_m3[3][3];
1861 bool is_modal =
false;
1898 float color[4], color_hi[4];
1922 switch (orient_slot->
type) {
1980 const bool flip = (
event->modifier &
KM_SHIFT) != 0;
1987 if (prop_constraint_axis) {
1988 bool constraint[3] = {
false};
1989 constraint[
axis] =
true;
1991 for (
int i = 0; i <
ARRAY_SIZE(constraint); i++) {
1992 constraint[i] = !constraint[i];
2003 (
float[2]){UNPACK2(event->mval)},
2072 gzgt->
name =
"3D View: Transform Gizmo";
2073 gzgt->
idname =
"VIEW3D_GGT_xform_gizmo";
2093 {0,
"NONE", 0,
"None",
""},
2098 rna_enum_gizmo_items,
2106 gzgt->
name =
"3D View: Transform Gizmo Context";
2107 gzgt->
idname =
"VIEW3D_GGT_xform_gizmo_context";
2176 for (
int x = 0;
x < 3;
x++) {
2177 for (
int y = 0;
y < 3;
y++) {
2178 for (
int z = 0;
z < 3;
z++) {
2179 const bool constraint[3] = {
x != 1,
y != 1,
z != 1};
2181 if (prop_release_confirm ==
NULL) {
2209 .use_local_axis =
true,
2210 .orientation_index = orient_index + 1,
2238 float matrix_offset_global[4][4];
2243 float center_global[3];
2245 for (
int x = 0;
x < 3;
x++) {
2247 for (
int y = 0;
y < 3;
y++) {
2249 for (
int z = 0;
z < 3;
z++) {
2252 if (prop_center_override ==
NULL) {
2287 switch (orient_slot->
type) {
2304 gzgt->
name =
"Transform Cage";
2305 gzgt->
idname =
"VIEW3D_GGT_xform_cage";
2357 float axis_color[3][3];
2358 for (
int i = 0; i < 3; i++) {
2362 for (
int i = 0; i < 3; i++) {
2363 for (
int j = 0; j < 2; j++) {
2366 const int i_ortho_a = (i + j + 1) % 3;
2367 const int i_ortho_b = (i + (1 - j) + 1) % 3;
2369 gz->
color[3] = 0.5f;
2372 xgzgroup->
gizmo[i][j] = gz;
2376 for (
int i = 0; i < 4; i++) {
2381 gz->
color[3] = 0.5f;
2416 .use_local_axis =
false,
2417 .orientation_index = orient_index + 1,
2420 for (
int i = 0; i < 3; i++) {
2421 for (
int j = 0; j < 2; j++) {
2427 for (
int i = 0; i < 4; i++) {
2434 for (
int i = 0; i < 3; i++) {
2435 for (
int j = 0; j < 2; j++) {
2441 const int i_ortho_a = (i + j + 1) % 3;
2442 const int i_ortho_b = (i + (1 - j) + 1) % 3;
2457 for (
int i = 0; i < 4; i++) {
2485 switch (orient_slot->
type) {
2499 for (
int i = 0; i < 4; i++) {
2500 const float outer_thin = 0.3f;
2501 const float outer_offset = 1.0f / 0.3f;
2525 float axis_order[3], axis_bias[3];
2540 gzgt->
name =
"Transform Shear";
2541 gzgt->
idname =
"VIEW3D_GGT_xform_shear";
typedef float(TangentPoint)[2]
Blender kernel action and pose functionality.
struct ScrArea * CTX_wm_area(const bContext *C)
struct Scene * CTX_data_scene(const bContext *C)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct bGPdata * CTX_data_gpencil_data(const bContext *C)
struct View3D * CTX_wm_view3d(const bContext *C)
struct Depsgraph * CTX_data_expect_evaluated_depsgraph(const bContext *C)
struct bScreen * CTX_wm_screen(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
struct RegionView3D * CTX_wm_region_view3d(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
struct ListBase * BKE_curve_editNurbs_get(struct Curve *cu)
BMEditMesh * BKE_editmesh_from_object(struct Object *ob)
Return the BMEditMesh for a given object.
bool BKE_gpencil_layer_is_editable(const struct bGPDlayer *gpl)
void BKE_gpencil_layer_transform_matrix_get(const struct Depsgraph *depsgraph, struct Object *obact, struct bGPDlayer *gpl, float diff_mat[4][4])
General operations, lookup, etc. for blender objects.
struct Object * BKE_object_pose_armature_get(struct Object *ob)
struct Object ** BKE_object_pose_array_get(struct ViewLayer *view_layer, struct View3D *v3d, unsigned int *r_objects_len)
const struct BoundBox * BKE_object_boundbox_get(struct Object *ob)
int BKE_scene_orientation_slot_get_index(const struct TransformOrientationSlot *orient_slot)
int BKE_scene_orientation_get_index(struct Scene *scene, int slot_index)
struct TransformOrientationSlot * BKE_scene_orientation_slot_get(struct Scene *scene, int slot_index)
struct TransformOrientationSlot * BKE_scene_orientation_slot_get_from_flag(struct Scene *scene, int flag)
int BKE_scene_orientation_get_index_from_flag(struct Scene *scene, int flag)
Generic array manipulation API.
#define BLI_array_findindex(arr, arr_len, p)
#define LISTBASE_FOREACH(type, var, list)
void void BLI_listbase_sort(struct ListBase *listbase, int(*cmp)(const void *, const void *)) ATTR_NONNULL(1
MINLINE float max_ff(float a, float b)
MINLINE float min_ff(float a, float b)
void mul_m3_v3(const float M[3][3], float r[3])
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void mul_m3_m3_pre(float R[3][3], const float A[3][3])
void copy_m3_m3(float m1[3][3], const float m2[3][3])
void unit_m3(float m[3][3])
void copy_m3_m4(float m1[3][3], const float m2[4][4])
void unit_m4(float m[4][4])
void copy_m4_m3(float m1[4][4], const float m2[3][3])
bool invert_m4_m4(float R[4][4], const float A[4][4])
void normalize_m3(float R[3][3]) ATTR_NONNULL()
bool equals_m3m3(const float mat1[3][3], const float mat2[3][3])
void mul_m4_v3(const float M[4][4], float r[3])
void copy_m4_m4(float m1[4][4], const float m2[4][4])
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
bool invert_m3(float R[3][3])
void mul_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3])
void eulO_to_gimbal_axis(float gmat[3][3], const float eul[3], short order)
void axis_angle_to_quat(float r[4], const float axis[3], float angle)
void mul_qt_v3(const float q[4], float r[3])
MINLINE void copy_v4_v4(float r[4], const float a[4])
void minmax_v3v3_v3(float min[3], float max[3], const float vec[3])
MINLINE void madd_v3_v3fl(float r[3], const float a[3], float f)
MINLINE float normalize_v3(float r[3])
MINLINE void sub_v3_v3(float r[3], const float a[3])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE float dot_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
void interp_v3_v3v3(float r[3], const float a[3], const float b[3], float t)
MINLINE void cross_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void negate_v3(float r[3])
MINLINE float normalize_v3_v3(float r[3], const float a[3])
MINLINE bool equals_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
void mid_v3_v3v3(float r[3], const float a[3], const float b[3])
void ortho_basis_v3v3_v3(float r_n1[3], float r_n2[3], const float n[3])
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE void zero_v3(float r[3])
MINLINE void add_v3_v3(float r[3], const float a[3])
#define INIT_MINMAX(min, max)
#define ARRAY_SET_ITEMS(...)
#define IN_RANGE_INCL(a, b, c)
struct Depsgraph Depsgraph
#define BEZT_ISSEL_IDX(bezt, i)
@ GP_DATA_STROKE_EDITMODE
#define GPENCIL_ANY_MODE(gpd)
#define GPENCIL_CURVE_EDIT_SESSIONS_ON(gpd)
#define OB_MODE_ALL_PAINT
#define OB_MODE_ALL_SCULPT
#define BASE_SELECTED_EDITABLE(v3d, base)
#define OBEDIT_FROM_OBACT(ob)
#define BASACT(_view_layer)
#define OBACT(_view_layer)
@ V3D_AROUND_CENTER_BOUNDS
@ V3D_AROUND_CENTER_MEDIAN
@ V3D_AROUND_LOCAL_ORIGINS
@ V3D_GIZMO_SHOW_OBJECT_ROTATE
@ V3D_GIZMO_SHOW_OBJECT_SCALE
@ V3D_GIZMO_SHOW_OBJECT_TRANSLATE
#define EBONE_VISIBLE(arm, ebone)
@ ED_GIZMO_ARROW_DRAW_FLAG_STEM
@ ED_GIZMO_DIAL_DRAW_FLAG_FILL_SELECT
@ ED_GIZMO_DIAL_DRAW_FLAG_FILL
@ ED_GIZMO_DIAL_DRAW_FLAG_NOP
@ ED_GIZMO_DIAL_DRAW_FLAG_ANGLE_VALUE
@ ED_GIZMO_DIAL_DRAW_FLAG_CLIP
@ ED_GIZMO_PRIMITIVE_STYLE_PLANE
@ ED_GIZMO_CAGE3D_PART_SCALE_MIN_X_MIN_Y_MIN_Z
@ ED_GIZMO_CAGE2D_XFORM_FLAG_TRANSLATE
@ ED_GIZMO_CAGE2D_XFORM_FLAG_SCALE
@ ED_GIZMO_ARROW_STYLE_BOX
@ ED_GIZMO_ARROW_STYLE_NORMAL
bool ED_gizmo_poll_or_unlink_delayed_from_tool(const struct bContext *C, struct wmGizmoGroupType *gzgt)
bool ED_object_calc_active_center(struct Object *ob, bool select_only, float r_center[3])
struct PTCacheEdit * PE_get_current(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
void ED_region_tag_redraw_editor_overlays(struct ARegion *region)
bool ED_view3d_win_to_3d_on_plane(const struct ARegion *region, const float plane[4], const float mval[2], bool do_clip, float r_out[3])
float ED_view3d_pixel_size(const struct RegionView3D *rv3d, const float co[3])
void ED_view3d_global_to_vector(const struct RegionView3D *rv3d, const float coord[3], float vec[3])
NSNotificationCenter * center
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble z
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
Read Guarded memory(de)allocation.
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a point
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a color
void UI_GetThemeColor3fv(int colorid, float col[3])
void UI_GetThemeColor4fv(int colorid, float col[4])
eWM_GizmoFlagTweak
Gizmo tweak flag. Bit-flag passed to gizmo while tweaking.
@ WM_GIZMO_DRAW_OFFSET_SCALE
@ WM_GIZMO_SELECT_BACKGROUND
@ WM_GIZMOGROUPTYPE_DRAW_MODAL_EXCLUDE
@ WM_GIZMOGROUPTYPE_TOOL_FALLBACK_KEYMAP
@ WM_GIZMOGROUPTYPE_DELAY_REFRESH_FOR_TWEAK
@ WM_GIZMOGROUPTYPE_PERSISTENT
#define BM_elem_flag_test(ele, hflag)
#define BM_ITER_MESH(ele, iter, bm, itype)
ATTR_WARN_UNUSED_RESULT BMesh * bm
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
SIMD_FORCE_INLINE btVector3 rotate(const btVector3 &wAxis, const btScalar angle) const
Return a rotated version of this vector.
const Depsgraph * depsgraph
bool ED_gpencil_stroke_can_use(const bContext *C, const bGPDstroke *gps)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void area(int d1, int d2, int e1, int e2, float weights[2])
static void update(bNodeTree *ntree)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
void RNA_id_pointer_create(ID *id, PointerRNA *r_ptr)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
void RNA_float_set(PointerRNA *ptr, const char *name, float value)
void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const float *values)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
void RNA_float_set_array(PointerRNA *ptr, const char *name, const float *values)
void RNA_property_unset(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const bool *values)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
struct wmGizmoMap * gizmo_map
struct wmGizmo * gizmos[MAN_AXIS_LAST]
struct GizmoGroup::@612 prev
struct EditLatt * editlatt
struct SculptSession * sculpt
PTCacheEditPoint * points
float tw_axis_matrix[3][3]
struct ToolSettings * toolsettings
TransformOrientationSlot orientation_slots[4]
bGPDcurve_point * curve_points
struct bPoseChannel * parent
wmGizmoGroupFnSetupKeymap setup_keymap
wmGizmoGroupFnMsgBusSubscribe message_subscribe
wmGizmoGroupFnRefresh refresh
wmGizmoGroupFnInvokePrepare invoke_prepare
eWM_GizmoFlagGroupTypeFlag flag
struct wmGizmoMapType_Params gzmap_params
wmGizmoGroupFnDrawPrepare draw_prepare
struct wmGizmoMap * parent_gzmap
struct wmOperatorType * type
struct wmGizmoProperty::@1185 custom_func
struct wmGizmoGroup * parent_gzgroup
float matrix_offset[4][4]
wmOperator * WM_operator_find_modal_by_type(wmWindow *win, const wmOperatorType *ot)
void WM_gizmo_set_matrix_offset_location(wmGizmo *gz, const float offset[3])
void WM_gizmo_set_fn_custom_modal(struct wmGizmo *gz, wmGizmoFnModal fn)
PointerRNA * WM_gizmo_operator_set(wmGizmo *gz, int part_index, wmOperatorType *ot, IDProperty *properties)
void WM_gizmo_set_color_highlight(wmGizmo *gz, const float color_hi[4])
void WM_gizmo_set_line_width(wmGizmo *gz, const float line_width)
void WM_gizmo_set_matrix_rotation_from_yz_axis(wmGizmo *gz, const float y_axis[3], const float z_axis[3])
wmGizmo * WM_gizmo_new_ptr(const wmGizmoType *gzt, wmGizmoGroup *gzgroup, PointerRNA *properties)
void WM_gizmo_set_scale(wmGizmo *gz, const float scale)
void WM_gizmo_set_matrix_location(wmGizmo *gz, const float origin[3])
void WM_gizmo_set_flag(wmGizmo *gz, const int flag, const bool enable)
void WM_gizmo_set_matrix_rotation_from_z_axis(wmGizmo *gz, const float z_axis[3])
struct wmGizmoOpElem * WM_gizmo_operator_get(wmGizmo *gz, int part_index)
void WM_gizmo_set_color(wmGizmo *gz, const float color[4])
int WM_gizmo_cmp_temp_fl_reverse(const void *gz_a_ptr, const void *gz_b_ptr)
wmKeyMap * WM_gizmogroup_setup_keymap_generic_maybe_drag(const wmGizmoGroupType *UNUSED(gzgt), wmKeyConfig *kc)
wmGizmo * WM_gizmomap_get_modal(const wmGizmoMap *gzmap)
void WM_gizmo_do_msg_notify_tag_refresh(bContext *UNUSED(C), wmMsgSubscribeKey *UNUSED(msg_key), wmMsgSubscribeValue *msg_val)
const wmGizmoType * WM_gizmotype_find(const char *idname, bool quiet)
#define WM_msg_subscribe_rna_anon_prop(mbus, type_, prop_, value)
void WM_msg_subscribe_rna(struct wmMsgBus *mbus, PointerRNA *ptr, const PropertyRNA *prop, const wmMsgSubscribeValue *msg_val_params, const char *id_repr)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)