Blender V4.3
ED_transform_snap_object_context.hh File Reference
#include "DNA_scene_types.h"

Go to the source code of this file.

Classes

struct  SnapObjectHitDepth
 
struct  SnapObjectParams
 

Macros

#define ED_transform_snap_object_time_average_print()   void(0)
 

Enumerations

enum  eSnapEditType { SNAP_GEOM_FINAL = 0 , SNAP_GEOM_CAGE = 1 , SNAP_GEOM_EDIT = 2 }
 
enum  eSnapOcclusionTest { SNAP_OCCLUSION_NEVER = 0 , SNAP_OCCLUSION_AS_SEEM = 1 , SNAP_OCCLUSION_ALWAYS = 2 }
 

Functions

SnapObjectContextED_transform_snap_object_context_create (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)(BMVert *, void *user_data), bool(*test_edge_fn)(BMEdge *, void *user_data), bool(*test_face_fn)(BMFace *, void *user_data), void *user_data)
 
bool ED_transform_snap_object_project_ray_ex (SnapObjectContext *sctx, Depsgraph *depsgraph, const View3D *v3d, const 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, const Object **r_ob, float r_obmat[4][4])
 
bool ED_transform_snap_object_project_ray (SnapObjectContext *sctx, Depsgraph *depsgraph, const View3D *v3d, const SnapObjectParams *params, const float ray_start[3], const float ray_normal[3], float *ray_depth, float r_co[3], float r_no[3])
 
bool ED_transform_snap_object_project_ray_all (SnapObjectContext *sctx, Depsgraph *depsgraph, const View3D *v3d, const SnapObjectParams *params, const float ray_start[3], const float ray_normal[3], float ray_depth, bool sort, ListBase *r_hit_list)
 
eSnapMode ED_transform_snap_object_project_view3d_ex (SnapObjectContext *sctx, Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const eSnapMode snap_to, const 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, const Object **r_ob, float r_obmat[4][4], float r_face_nor[3])
 
eSnapMode ED_transform_snap_object_project_view3d (SnapObjectContext *sctx, Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const eSnapMode snap_to, const 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, Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const SnapObjectParams *params, const float mval[2], float ray_depth, bool sort, ListBase *r_hit_list)
 

Macro Definition Documentation

◆ ED_transform_snap_object_time_average_print

#define ED_transform_snap_object_time_average_print ( )    void(0)

Definition at line 215 of file ED_transform_snap_object_context.hh.

Referenced by freeSnapping().

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.hh.

◆ eSnapOcclusionTest

Enumerator
SNAP_OCCLUSION_NEVER 
SNAP_OCCLUSION_AS_SEEM 
SNAP_OCCLUSION_ALWAYS 

Definition at line 36 of file ED_transform_snap_object_context.hh.

Function Documentation

◆ ED_transform_snap_object_context_create()

◆ ED_transform_snap_object_context_destroy()

◆ ED_transform_snap_object_context_set_editmesh_callbacks()

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

◆ ED_transform_snap_object_project_all_view3d_ex()

bool ED_transform_snap_object_project_all_view3d_ex ( SnapObjectContext * sctx,
Depsgraph * depsgraph,
const ARegion * region,
const View3D * v3d,
const 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,
Depsgraph * depsgraph,
const View3D * v3d,
const SnapObjectParams * params,
const float ray_start[3],
const float ray_normal[3],
float * ray_depth,
float r_co[3],
float r_no[3] )

Convenience function for snap ray-casting.

Given a ray, cast it into the scene (snapping to faces).

Returns
Snap success

Definition at line 1277 of file transform_snap_object.cc.

References depsgraph, ED_transform_snap_object_project_ray_ex(), and params.

Referenced by view3d_ruler_item_mousemove(), walk_floor_distance_get(), and walk_ray_cast().

◆ ED_transform_snap_object_project_ray_all()

bool ED_transform_snap_object_project_ray_all ( SnapObjectContext * sctx,
Depsgraph * depsgraph,
const View3D * v3d,
const SnapObjectParams * params,
const float ray_start[3],
const float ray_normal[3],
float ray_depth,
bool sort,
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).

Definition at line 1232 of file transform_snap_object.cc.

References BLI_assert, BLI_listbase_sort(), BVH_RAYCAST_DIST_MAX, depsgraph, hit_depth_cmp(), params, SnapObjectContext::ray_depth_max, raycastObjects(), SnapObjectContext::ret, SCE_SNAP_TO_FACE, and snap_object_context_runtime_init().

Referenced by ED_transform_snap_object_project_all_view3d_ex().

◆ ED_transform_snap_object_project_ray_ex()

◆ ED_transform_snap_object_project_view3d()

eSnapMode ED_transform_snap_object_project_view3d ( SnapObjectContext * sctx,
Depsgraph * depsgraph,
const ARegion * region,
const View3D * v3d,
const eSnapMode snap_to,
const 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.

Definition at line 1499 of file transform_snap_object.cc.

References depsgraph, ED_transform_snap_object_project_view3d_ex(), and params.

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

◆ ED_transform_snap_object_project_view3d_ex()

eSnapMode ED_transform_snap_object_project_view3d_ex ( SnapObjectContext * sctx,
Depsgraph * depsgraph,
const ARegion * region,
const View3D * v3d,
const eSnapMode snap_to,
const 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,
const 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.

Definition at line 1301 of file transform_snap_object.cc.

References BLI_assert, BLI_ASSERT_UNIT_V3, BVH_RAYCAST_DIST_MAX, RegionView3D::clip, clip_segment_v3_plane_n(), copy_m4_m4(), copy_v3_v3(), depsgraph, SnapObjectContext::dist_px_sq, blender::math::dot(), ED_view3d_win_to_ray_clipped_ex(), FLT_MAX, SnapObjectContext::has_occlusion_plane, SnapObjectContext::index, SnapObjectContext::loc, nearestWorldObjects(), SnapObjectContext::no, SnapObjectContext::ob, SnapObjectContext::obmat, SnapObjectContext::occlusion_plane, occlusion_plane_create(), params, blender::MatBase< T, NumCol, NumRow, Alignment >::ptr(), SnapObjectContext::ray_dir, SnapObjectContext::ray_start, raycastObjects(), SnapObjectContext::ret, RegionView3D::rflag, SnapObjectContext::runtime, RV3D_CLIPPING, SCE_SNAP_INDIVIDUAL_NEAREST, SCE_SNAP_TO_EDGE, SCE_SNAP_TO_EDGE_ENDPOINT, SCE_SNAP_TO_EDGE_MIDPOINT, SCE_SNAP_TO_EDGE_PERPENDICULAR, SCE_SNAP_TO_FACE, SCE_SNAP_TO_GEOM, SCE_SNAP_TO_GRID, SCE_SNAP_TO_NONE, SCE_SNAP_TO_POINT, snap_edge_points(), snap_grid(), snap_object_context_runtime_init(), SNAP_OCCLUSION_ALWAYS, SNAP_OCCLUSION_AS_SEEM, SNAP_OCCLUSION_NEVER, snap_polygon(), SNAP_TO_EDGE_ELEMENTS, SnapObjectContext::snap_to_flag, snapObjectsRay(), blender::math::sqrt(), square_f(), and XRAY_ENABLED.

Referenced by ED_transform_snap_object_project_view3d(), ED_view3d_cursor3d_position_rotation(), and v3d_cursor_snap_update().