Blender  V3.3
Classes | Typedefs | Enumerations | Functions
ED_transform_snap_object_context.h File Reference
#include "DNA_scene_types.h"

Go to the source code of this file.

Classes

struct  SnapObjectHitDepth
 
struct  SnapObjectParams
 

Typedefs

typedef enum eSnapEditType eSnapEditType
 
typedef struct SnapObjectContext SnapObjectContext
 

Enumerations

enum  eSnapEditType { SNAP_GEOM_FINAL = 0 , SNAP_GEOM_CAGE = 1 , SNAP_GEOM_EDIT = 2 }
 

Functions

SnapObjectContextED_transform_snap_object_context_create (struct Scene *scene, int flag)
 
void ED_transform_snap_object_context_destroy (SnapObjectContext *sctx)
 
void ED_transform_snap_object_context_set_editmesh_callbacks (SnapObjectContext *sctx, bool(*test_vert_fn)(struct BMVert *, void *user_data), bool(*test_edge_fn)(struct BMEdge *, void *user_data), bool(*test_face_fn)(struct BMFace *, void *user_data), void *user_data)
 
bool ED_transform_snap_object_project_ray_ex (struct SnapObjectContext *sctx, struct Depsgraph *depsgraph, const View3D *v3d, const struct SnapObjectParams *params, const float ray_start[3], const float ray_normal[3], float *ray_depth, float r_loc[3], float r_no[3], int *r_index, struct Object **r_ob, float r_obmat[4][4])
 
bool ED_transform_snap_object_project_ray (SnapObjectContext *sctx, struct Depsgraph *depsgraph, const View3D *v3d, const struct SnapObjectParams *params, const float ray_origin[3], const float ray_direction[3], float *ray_depth, float r_co[3], float r_no[3])
 
bool ED_transform_snap_object_project_ray_all (SnapObjectContext *sctx, struct Depsgraph *depsgraph, const View3D *v3d, const struct SnapObjectParams *params, const float ray_start[3], const float ray_normal[3], float ray_depth, bool sort, struct ListBase *r_hit_list)
 
eSnapMode ED_transform_snap_object_project_view3d_ex (struct SnapObjectContext *sctx, struct Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const eSnapMode snap_to, const struct SnapObjectParams *params, const float init_co[3], const float mval[2], const float prev_co[3], float *dist_px, float r_loc[3], float r_no[3], int *r_index, struct Object **r_ob, float r_obmat[4][4], float r_face_nor[3])
 
eSnapMode ED_transform_snap_object_project_view3d (struct SnapObjectContext *sctx, struct Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const eSnapMode snap_to, const struct SnapObjectParams *params, const float init_co[3], const float mval[2], const float prev_co[3], float *dist_px, float r_loc[3], float r_no[3])
 
bool ED_transform_snap_object_project_all_view3d_ex (SnapObjectContext *sctx, struct Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const struct SnapObjectParams *params, const float mval[2], float ray_depth, bool sort, ListBase *r_hit_list)
 

Typedef Documentation

◆ eSnapEditType

◆ SnapObjectContext

Definition at line 1 of file ED_transform_snap_object_context.h.

Enumeration Type Documentation

◆ eSnapEditType

Enumerator
SNAP_GEOM_FINAL 
SNAP_GEOM_CAGE 
SNAP_GEOM_EDIT 

Definition at line 30 of file ED_transform_snap_object_context.h.

Function Documentation

◆ ED_transform_snap_object_context_create()

SnapObjectContext* ED_transform_snap_object_context_create ( struct Scene scene,
int  flag 
)

◆ ED_transform_snap_object_context_destroy()

void ED_transform_snap_object_context_destroy ( SnapObjectContext sctx)

◆ ED_transform_snap_object_context_set_editmesh_callbacks()

void ED_transform_snap_object_context_set_editmesh_callbacks ( SnapObjectContext sctx,
bool(*)(struct BMVert *, void *user_data test_vert_fn,
bool(*)(struct BMEdge *, void *user_data test_edge_fn,
bool(*)(struct BMFace *, void *user_data test_face_fn,
void user_data 
)

Referenced by initSnappingMode().

◆ ED_transform_snap_object_project_all_view3d_ex()

bool ED_transform_snap_object_project_all_view3d_ex ( SnapObjectContext sctx,
struct Depsgraph depsgraph,
const ARegion region,
const View3D v3d,
const struct SnapObjectParams params,
const float  mval[2],
float  ray_depth,
bool  sort,
ListBase r_hit_list 
)

◆ ED_transform_snap_object_project_ray()

bool ED_transform_snap_object_project_ray ( SnapObjectContext sctx,
struct Depsgraph depsgraph,
const View3D v3d,
const struct SnapObjectParams params,
const float  ray_origin[3],
const float  ray_direction[3],
float ray_depth,
float  r_co[3],
float  r_no[3] 
)

◆ ED_transform_snap_object_project_ray_all()

bool ED_transform_snap_object_project_ray_all ( SnapObjectContext sctx,
struct Depsgraph depsgraph,
const View3D v3d,
const struct SnapObjectParams params,
const float  ray_start[3],
const float  ray_normal[3],
float  ray_depth,
bool  sort,
struct ListBase r_hit_list 
)

Fill in a list of all hits.

Parameters
ray_depthOnly depths in this range are considered, -1.0 for maximum.
sortOptionally sort the hits by depth.
r_hit_listList of SnapObjectHitDepth (caller must free).

◆ ED_transform_snap_object_project_ray_ex()

bool ED_transform_snap_object_project_ray_ex ( struct SnapObjectContext sctx,
struct Depsgraph depsgraph,
const View3D v3d,
const struct SnapObjectParams params,
const float  ray_start[3],
const float  ray_normal[3],
float ray_depth,
float  r_loc[3],
float  r_no[3],
int *  r_index,
struct Object **  r_ob,
float  r_obmat[4][4] 
)

Referenced by wm_xr_raycast().

◆ ED_transform_snap_object_project_view3d()

eSnapMode ED_transform_snap_object_project_view3d ( struct SnapObjectContext sctx,
struct Depsgraph depsgraph,
const ARegion region,
const View3D v3d,
const eSnapMode  snap_to,
const struct SnapObjectParams params,
const float  init_co[3],
const float  mval[2],
const float  prev_co[3],
float dist_px,
float  r_loc[3],
float  r_no[3] 
)

Convenience function for performing snapping.

Given a 2D region value, snap to vert/edge/face.

Parameters
sctxSnap context.
snap_toTarget elements to snap source to.
paramsAddition snapping options.
init_coInitial world-space coordinate of source (optional).
mvalCurrent transformed screen-space coordinate or mouse position (optional).
prev_coCurrent transformed world-space coordinate of source (optional).
dist_pxMaximum distance to snap (in pixels).
r_locSnapped world-space coordinate.
r_noSnapped world-space normal (optional).
Returns
Snapped-to element, eSnapMode.

Referenced by add_vertex_invoke(), applyFaceNearest(), applyFaceProject(), EDBM_project_snap_verts(), gizmo_move_modal(), snapObjectsTransform(), and view3d_ruler_item_mousemove().

◆ ED_transform_snap_object_project_view3d_ex()

eSnapMode ED_transform_snap_object_project_view3d_ex ( struct SnapObjectContext sctx,
struct Depsgraph depsgraph,
const ARegion region,
const View3D v3d,
const eSnapMode  snap_to,
const struct SnapObjectParams params,
const float  init_co[3],
const float  mval[2],
const float  prev_co[3],
float dist_px,
float  r_loc[3],
float  r_no[3],
int *  r_index,
struct Object **  r_ob,
float  r_obmat[4][4],
float  r_face_nor[3] 
)

Perform snapping.

Given a 2D region value, snap to vert/edge/face/grid.

Parameters
sctxSnap context.
snap_toTarget elements to snap source to.
paramsAddition snapping options.
init_coInitial world-space coordinate of source (optional).
mvalCurrent transformed screen-space coordinate or mouse position (optional).
prev_coCurrent transformed world-space coordinate of source (optional).
dist_pxMaximum distance to snap (in pixels).
r_locSnapped world-space coordinate.
r_noSnapped world-space normal (optional).
r_indexIndex of snapped-to target element (optional).
r_obSnapped-to target object (optional).
r_obmatMatrix of snapped-to target object (optional).
r_face_norWorld-space normal of snapped-to target face (optional).
Returns
Snapped-to element, eSnapMode.

Referenced by ED_view3d_cursor3d_position_rotation(), and v3d_cursor_snap_update().