170 const float plane[4],
172 const float *plane_fallback,
177 if (plane_fallback !=
NULL) {
179 region, plane, mval, do_clip, plane_fallback, r_out);
189 const float dir_test[3],
192 int index_found = -1;
193 float dot_best = -1.0f;
194 for (
int i = 0; i < dirs_len; i++) {
195 float dot_test =
dot_v3v3(dirs[i], dir_test);
196 if (is_signed ==
false) {
197 dot_test =
fabsf(dot_test);
199 if ((index_found == -1) || (dot_test > dot_best)) {
208 idp_gizmogroup_from_region)(
ARegion *region)
235 if (co_relative !=
NULL) {
239 co[0] = roundf(co[0]);
240 co[1] = roundf(co[1]);
241 co[2] = roundf(co[2]);
243 if (co_relative !=
NULL) {
264 for (
int i = 0; i < coords_len; i++) {
288 const float color[4])
296 for (
int i = 0; i < coords_len; i++) {
323 const int edges[12][2] = {
344 for (
int i = 0, j = 0; i <
ARRAY_SIZE(edges); i++) {
374 float matrix_orient_inv[3][3];
380 float quad_base[4][3];
381 float quad_secondary[4][3];
387 float fixed_aspect_dimension;
392 float delta_local[3];
397 mul_m3_v3(matrix_orient_inv, delta_local);
404 delta_a[x_axis] = 0.0f;
405 delta_b[y_axis] = 0.0f;
408 fixed_aspect_dimension =
max_ff(
fabsf(delta_a[y_axis]),
fabsf(delta_b[x_axis]));
411 delta_a[y_axis] =
copysignf(fixed_aspect_dimension, delta_a[y_axis]);
412 delta_b[x_axis] =
copysignf(fixed_aspect_dimension, delta_b[x_axis]);
431 float base_co_dst[3];
433 for (
int i = 0; i <
ARRAY_SIZE(quad_base); i++) {
438 fixed_aspect_dimension *= 2.0f;
443 float delta_local[3];
467 for (
int i = 0; i <
ARRAY_SIZE(quad_base); i++) {
475 for (
int i = 0; i <
ARRAY_SIZE(quad_base); i++) {
476 add_v3_v3v3(quad_secondary[i], quad_base[i], delta_local);
486 for (
int i = 0; i < 4; i++) {
498 const int resolution,
499 const float color[4])
502 const float quad[4][2] = {
509 float(*coords)[3] =
MEM_mallocN(
sizeof(
float[3]) * (resolution + 1), __func__);
510 for (
int i = 0; i <= resolution; i++) {
511 float theta = ((2.0f *
M_PI) * ((
float)i / (
float)resolution)) + 0.01f;
512 float x =
cosf(theta);
513 float y =
sinf(theta);
514 const float pt[2] = {
x,
y};
518 float *co = coords[i];
537 const float color[4],
546 if (flatten_axis == STEP_BASE) {
572 if (flatten_axis == STEP_DEPTH) {
573 const float *base_plane = ipd->
step[0].
plane;
574 for (
int i = 0; i < 4; i++) {
596 float coords_a[4][3];
597 float coords_b[4][3];
599 for (
int i = 0; i < 4; i++) {
612 float v01[3], v12[3], v23[3], v30[3];
618 float v45[3], v56[3], v67[3], v74[3];
624 float v04[3], v15[3], v26[3], v37[3];
666 if (depth_test_enabled ==
false) {
683 float r_matrix_orient[3][3],
685 bool *r_is_snap_invert)
689 if (r_matrix_orient) {
695 if (r_is_snap_invert) {
728 if (snap_state_new) {
738 int flag_orig = snap_state_new->
flag;
745 snap_state_new->
flag = flag_orig;
759 for (
int i = 0; i < 2; i++) {
793 for (
int i = 0; i < 2; i++) {
802 float axis_fallback[4][3];
828 if (degenerate_axis_is_flip) {
852 if (tref &&
STREQ(tref->
idname,
"builtin.primitive_cube_add")) {
855 else if (tref &&
STREQ(tref->
idname,
"builtin.primitive_cylinder_add")) {
858 else if (tref &&
STREQ(tref->
idname,
"builtin.primitive_cone_add")) {
861 else if (tref &&
STREQ(tref->
idname,
"builtin.primitive_uv_sphere_add")) {
864 else if (tref &&
STREQ(tref->
idname,
"builtin.primitive_ico_sphere_add")) {
945 const char *keymap_name =
"View3D Placement Modal";
965 bool do_redraw =
false;
966 bool do_cursor_update =
false;
970 bool is_fallthrough =
false;
971 switch (event->
val) {
973 is_fallthrough =
true;
983 is_fallthrough =
true;
993 is_fallthrough =
true;
1000 do_cursor_update =
true;
1006 switch (event->
type) {
1013 do_cursor_update =
true;
1040 float no[3], no_temp[3];
1079 float matrix_orient_axis[3][3];
1083 swap_v3_v3(matrix_orient_axis[0], matrix_orient_axis[1]);
1100 const int cube_verts[3] = {3, 1, 4};
1101 for (
int i = 0; i < 3; i++) {
1176 if (do_cursor_update) {
1232 float close[3], delta[3];
1349 ot->
name =
"Add Primitive Object";
1351 ot->
idname =
"VIEW3D_OT_interactive_add";
1399 "Select the closest axis when placing objects "
1400 "(surface overrides)");
1410 "Start placing on the surface, using the 3D cursor position as a fallback"},
1415 "Start placement using a point projected onto the orientation axis "
1416 "at the 3D cursor position"},
1421 "Start placement using a point projected onto the view plane at the 3D cursor position"},
1437 "Use the surface normal (using the transform orientation as a fallback)"},
1440 ICON_ORIENTATION_GLOBAL,
1442 "Use the current transform orientation"},
1472 const char *identifiers[2] = {
"plane_origin_base",
"plane_origin_depth"};
1473 for (
int i = 0; i < 2; i++) {
1488 const char *identifiers[2] = {
"plane_aspect_base",
"plane_aspect_depth"};
1489 for (
int i = 0; i < 2; i++) {
1532 gzgt->
name =
"Placement Widget";
typedef float(TangentPoint)[2]
struct ScrArea * CTX_wm_area(const bContext *C)
struct Scene * CTX_data_scene(const bContext *C)
struct View3D * CTX_wm_view3d(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
enum eContextObjectMode CTX_data_mode_enum(const bContext *C)
MINLINE float max_ff(float a, float b)
void plane_from_point_normal_v3(float r_plane[4], const float plane_co[3], const float plane_no[3])
void closest_to_plane_normalized_v3(float r_close[3], const float plane[4], const float pt[3])
float dist_signed_to_plane_v3(const float p[3], const float plane[4])
void barycentric_weights_v2_quad(const float v1[2], const float v2[2], const float v3[2], const float v4[2], const float co[2], float w[4])
void mul_m3_v3(const float M[3][3], float r[3])
void copy_m3_m3(float m1[3][3], const float m2[3][3])
bool invert_m3_m3(float R[3][3], const float A[3][3])
void mat3_to_eul(float eul[3], const float mat[3][3])
void mid_v3_v3v3v3v3(float v[3], const float v1[3], const float v2[3], const float v3[3], const float v4[3])
MINLINE bool compare_v3v3(const float a[3], const float b[3], float limit) ATTR_WARN_UNUSED_RESULT
MINLINE float len_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
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 void negate_v3_v3(float r[3], const float a[3])
MINLINE bool is_zero_v3(const float a[3]) ATTR_WARN_UNUSED_RESULT
MINLINE float dot_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
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 float normalize_v3_length(float r[3], float unit_scale)
void mid_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void swap_v3_v3(float a[3], float b[3])
MINLINE void zero_v3(float r[3])
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
MINLINE void add_v3_v3(float r[3], const float a[3])
@ SCE_SNAP_MODE_INCREMENT
bool ED_gizmo_poll_or_unlink_delayed_from_tool(const struct bContext *C, struct wmGizmoGroupType *gzgt)
void ED_region_tag_redraw(struct ARegion *region)
#define REGION_DRAW_POST_VIEW
void * ED_region_draw_cb_activate(struct ARegionType *art, void(*draw)(const struct bContext *, struct ARegion *, void *), void *customdata, int type)
bool ED_region_draw_cb_exit(struct ARegionType *art, void *handle)
@ V3D_PLACE_ORIENT_DEFAULT
@ V3D_PLACE_ORIENT_SURFACE
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])
#define XRAY_ENABLED(v3d)
void ED_view3d_cursor_snap_state_default_set(V3DSnapCursorState *state)
void ED_view3d_cursor_snap_prevpoint_set(V3DSnapCursorState *state, const float prev_point[3])
V3DSnapCursorData * ED_view3d_cursor_snap_data_get(void)
@ V3D_SNAPCURSOR_TOGGLE_ALWAYS_TRUE
void ED_view3d_cursor_snap_data_update(V3DSnapCursorState *state, const struct bContext *C, int x, int y)
bool ED_view3d_win_to_3d_on_plane_with_fallback(const struct ARegion *region, const float plane[4], const float mval[2], bool do_clip, const float plane_fallback[4], float r_out[3])
float ED_view3d_grid_view_scale(struct Scene *scene, struct View3D *v3d, struct ARegion *region, const char **r_grid_unit)
void ED_view3d_cursor_snap_deactive(V3DSnapCursorState *state)
V3DSnapCursorState * ED_view3d_cursor_snap_active(void)
V3DSnapCursorState * ED_view3d_cursor_snap_state_get(void)
@ V3D_PLACE_DEPTH_CURSOR_VIEW
@ V3D_PLACE_DEPTH_CURSOR_PLANE
@ V3D_PLACE_DEPTH_SURFACE
NSNotificationCenter * center
#define GPU_batch_uniform_1f(batch, name, x)
void GPU_batch_discard(GPUBatch *)
void GPU_batch_program_set_builtin(GPUBatch *batch, eGPUBuiltinShader shader_id)
#define GPU_batch_uniform_2fv(batch, name, val)
GPUBatch * GPU_batch_create_ex(GPUPrimType prim, GPUVertBuf *vert, GPUIndexBuf *elem, eGPUBatchFlag owns_flag)
void GPU_batch_draw(GPUBatch *batch)
#define GPU_batch_uniform_4fv(batch, name, val)
_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
_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 v1
@ GPU_SHADER_3D_POLYLINE_UNIFORM_COLOR
void GPU_blend(eGPUBlend blend)
eGPUDepthTest GPU_depth_test_get(void)
void GPU_depth_test(eGPUDepthTest test)
void GPU_viewport_size_get_f(float coords[4])
#define GPU_vertbuf_create_with_format(format)
struct GPUVertBuf GPUVertBuf
void GPU_vertbuf_data_alloc(GPUVertBuf *, uint v_len)
void GPU_vertbuf_attr_set(GPUVertBuf *, uint a_idx, uint v_idx, const void *data)
Read Guarded memory(de)allocation.
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])
@ WM_GIZMOGROUPTYPE_SCALE
@ WM_GIZMOGROUPTYPE_DRAW_MODAL_ALL
ATTR_WARN_UNUSED_RESULT const BMVert * v2
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_float_set(PointerRNA *ptr, const char *name, float value)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void RNA_float_set_array(PointerRNA *ptr, const char *name, const float *values)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_enum_default(PropertyRNA *prop, int value)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_property_enum_funcs_runtime(PropertyRNA *prop, EnumPropertyGetFunc getfunc, EnumPropertySetFunc setfunc, EnumPropertyItemFunc itemfunc)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_boolean_funcs_runtime(PropertyRNA *prop, BooleanPropertyGetFunc getfunc, BooleanPropertySetFunc setfunc)
const EnumPropertyItem rna_enum_axis_xyz_items[]
struct ARegionType * type
struct InteractivePlaceData::@586 step[2]
enum ePlace_PrimType primitive_type
float degenerate_diagonal_display[3]
float matrix_orient[3][3]
bool is_degenerate_view_align
enum InteractivePlaceData::@587 step_index
enum ePlace_SnapTo snap_to
bool is_fixed_aspect_init
float degenerate_diagonal[3]
V3DSnapCursorState * snap_state
struct ToolSettings * toolsettings
eV3DPlaceOrient plane_orient
struct wmGizmoGroupType * gzgrp_type
eV3DPlaceDepth plane_depth
eSnapMode snap_elem_force
eWM_GizmoFlagGroupTypeFlag flag
struct wmGizmoMapType_Params gzmap_params
struct wmGizmoGroupType * type
void(* customdata_free)(void *)
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
int(* modal)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
void(* cancel)(struct bContext *, struct wmOperator *)
static int idp_rna_plane_depth_get_fn(struct PointerRNA *UNUSED(ptr), struct PropertyRNA *UNUSED(prop))
static int dot_v3_array_find_max_index(const float dirs[][3], const int dirs_len, const float dir_test[3], bool is_signed)
static void draw_line_pairs(const float coords_a[][3], float coords_b[][3], int coords_len, const float color[4])
@ PLACE_PRIMITIVE_TYPE_SPHERE_ICO
@ PLACE_PRIMITIVE_TYPE_CONE
@ PLACE_PRIMITIVE_TYPE_CUBE
@ PLACE_PRIMITIVE_TYPE_SPHERE_UV
@ PLACE_PRIMITIVE_TYPE_CYLINDER
static void draw_primitive_view(const struct bContext *C, ARegion *UNUSED(region), void *arg)
static const char * view3d_gzgt_placement_id
static bool view3d_win_to_3d_on_plane_maybe_fallback(const ARegion *region, const float plane[4], const float mval[2], const float *plane_fallback, float r_out[3])
static void draw_line_loop(const float coords[][3], int coords_len, const float color[4])
static void idp_rna_snap_target_set_fn(struct PointerRNA *UNUSED(ptr), struct PropertyRNA *UNUSED(prop), int value)
static void idp_rna_plane_axis_set_fn(struct PointerRNA *UNUSED(ptr), struct PropertyRNA *UNUSED(prop), int value)
static void draw_line_bounds(const BoundBox *bounds, const float color[4])
static int idp_rna_snap_target_get_fn(struct PointerRNA *UNUSED(ptr), struct PropertyRNA *UNUSED(prop))
static const float eps_view_align
static void view3d_interactive_add_cancel(bContext *C, wmOperator *op)
@ PLACE_MODAL_FIXED_ASPECT_OFF
@ PLACE_MODAL_FIXED_ASPECT_ON
@ PLACE_MODAL_PIVOT_CENTER_OFF
@ PLACE_MODAL_PIVOT_CENTER_ON
static void WIDGETGROUP_placement_setup(const bContext *UNUSED(C), wmGizmoGroup *gzgroup)
static void idp_rna_use_plane_axis_auto_set_fn(struct PointerRNA *UNUSED(ptr), struct PropertyRNA *UNUSED(prop), bool value)
static void idp_rna_plane_depth_set_fn(struct PointerRNA *UNUSED(ptr), struct PropertyRNA *UNUSED(prop), int value)
static bool idp_snap_calc_incremental(Scene *scene, View3D *v3d, ARegion *region, const float co_relative[3], float co[3])
static bool calc_bbox(struct InteractivePlaceData *ipd, BoundBox *bounds)
static void draw_circle_in_quad(const float v1[3], const float v2[3], const float v3[3], const float v4[3], const int resolution, const float color[4])
static bool view3d_interactive_add_poll(bContext *C)
static UNUSED_FUNCTION_WITH_RETURN_TYPE(wmGizmoGroup *, idp_gizmogroup_from_region)
static void preview_plane_free_fn(void *customdata)
static int view3d_interactive_add_modal(bContext *C, wmOperator *op, const wmEvent *event)
void VIEW3D_GGT_placement(wmGizmoGroupType *gzgt)
static bool view3d_interactive_add_calc_snap(bContext *UNUSED(C), const wmEvent *UNUSED(event), float r_co_src[3], float r_matrix_orient[3][3], bool *r_is_enabled, bool *r_is_snap_invert)
static int view3d_interactive_add_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void view3d_interactive_add_exit(bContext *C, wmOperator *op)
static int idp_rna_plane_axis_get_fn(struct PointerRNA *UNUSED(ptr), struct PropertyRNA *UNUSED(prop))
static int idp_rna_plane_orient_get_fn(struct PointerRNA *UNUSED(ptr), struct PropertyRNA *UNUSED(prop))
static void draw_primitive_view_impl(const struct bContext *C, struct InteractivePlaceData *ipd, const float color[4], int flatten_axis)
void VIEW3D_OT_interactive_add(struct wmOperatorType *ot)
static void idp_rna_plane_orient_set_fn(struct PointerRNA *UNUSED(ptr), struct PropertyRNA *UNUSED(prop), int value)
static void view3d_interactive_add_begin(bContext *C, wmOperator *op, const wmEvent *event)
static bool idp_rna_use_plane_axis_auto_get_fn(struct PointerRNA *UNUSED(ptr), struct PropertyRNA *UNUSED(prop))
void viewplace_modal_keymap(wmKeyConfig *keyconf)
void WM_event_drag_start_mval_fl(const wmEvent *event, const ARegion *region, float r_mval[2])
void WM_event_drag_start_mval(const wmEvent *event, const ARegion *region, int r_mval[2])
int WM_userdef_event_type_from_keymap_type(int kmitype)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
int WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
bool WM_gizmo_group_type_ensure(const char *idname)
wmGizmoGroup * WM_gizmomap_group_find(struct wmGizmoMap *gzmap, const char *idname)
wmKeyMap * WM_modalkeymap_find(wmKeyConfig *keyconf, const char *idname)
void WM_modalkeymap_assign(wmKeyMap *km, const char *opname)
wmKeyMap * WM_modalkeymap_ensure(wmKeyConfig *keyconf, const char *idname, const EnumPropertyItem *items)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
void WM_operator_properties_free(PointerRNA *ptr)