|
Blender V4.3
|
#include "BLI_math_matrix.h"#include "BLI_math_matrix.hh"#include "BLI_math_vector.h"#include "DNA_screen_types.h"#include "BKE_bvhutils.hh"#include "BKE_duplilist.hh"#include "BKE_geometry_set_instances.hh"#include "BKE_layer.hh"#include "BKE_mesh.hh"#include "BKE_object.hh"#include "DEG_depsgraph_query.hh"#include "ED_transform_snap_object_context.hh"#include "ED_view3d.hh"#include "transform_snap_object.hh"Go to the source code of this file.
Functions | |
| static float4 | occlusion_plane_create (float3 ray_dir, float3 ray_co, float3 ray_no) |
| static bool | test_projected_vert_dist (const DistProjectedAABBPrecalc *precalc, const float(*clip_plane)[4], const int clip_plane_len, const bool is_persp, const float *co, BVHTreeNearest *nearest) |
| static bool | test_projected_edge_dist (const DistProjectedAABBPrecalc *precalc, const float(*clip_plane)[4], const int clip_plane_len, const bool is_persp, const float va[3], const float vb[3], BVHTreeNearest *nearest) |
Utilities | |
| static ID * | data_for_snap (Object *ob_eval, eSnapEditType edit_mode_type, bool *r_use_hide) |
Ray Cast Functions | |
| static SnapObjectHitDepth * | hit_depth_create (const float depth, const float co[3], uint ob_uuid) |
| static int | hit_depth_cmp (const void *arg1, const void *arg2) |
| void | raycast_all_cb (void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit) |
| bool | raycast_tri_backface_culling_test (const float dir[3], const float v0[3], const float v1[3], const float v2[3], float no[3]) |
| static eSnapMode | raycast_obj_fn (SnapObjectContext *sctx, const Object *ob_eval, const ID *ob_data, const float4x4 &obmat, bool, bool use_hide) |
| static bool | raycastObjects (SnapObjectContext *sctx) |
Surface Snap Functions | |
| static void | nearest_world_tree_co (BVHTree *tree, BVHTree_NearestPointCallback nearest_cb, void *treedata, const float3 &co, BVHTreeNearest *r_nearest) |
| bool | nearest_world_tree (SnapObjectContext *sctx, BVHTree *tree, BVHTree_NearestPointCallback nearest_cb, const blender::float4x4 &obmat, void *treedata, BVHTreeNearest *r_nearest) |
| static eSnapMode | nearest_world_object_fn (SnapObjectContext *sctx, const Object *ob_eval, const ID *ob_data, const float4x4 &obmat, bool, bool use_hide) |
| static bool | nearestWorldObjects (SnapObjectContext *sctx) |
Callbacks | |
| void | cb_snap_vert (void *userdata, int index, const DistProjectedAABBPrecalc *precalc, const float(*clip_plane)[4], const int clip_plane_len, BVHTreeNearest *nearest) |
| void | cb_snap_edge (void *userdata, int index, const DistProjectedAABBPrecalc *precalc, const float(*clip_plane)[4], const int clip_plane_len, BVHTreeNearest *nearest) |
Internal Object Snapping API | |
| static eSnapMode | snap_polygon (SnapObjectContext *sctx, eSnapMode snap_to_flag) |
| static eSnapMode | snap_edge_points (SnapObjectContext *sctx, const float dist_px_sq_orig) |
| eSnapMode | snap_object_center (SnapObjectContext *sctx, const Object *ob_eval, const float4x4 &obmat, eSnapMode snap_to_flag) |
| static eSnapMode | snap_obj_fn (SnapObjectContext *sctx, const Object *ob_eval, const ID *ob_data, const float4x4 &obmat, bool is_object_active, bool use_hide) |
| static eSnapMode | snapObjectsRay (SnapObjectContext *sctx) |
| static bool | snap_grid (SnapObjectContext *sctx) |
Public Object Snapping API | |
| SnapObjectContext * | ED_transform_snap_object_context_create (Scene *scene, int) |
| 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) |
| static bool | snap_object_context_runtime_init (SnapObjectContext *sctx, Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, eSnapMode snap_to_flag, eSnapOcclusionTest occlusion_test, const SnapObjectParams *params, const float ray_start[3], const float ray_dir[3], const float ray_depth, const float mval[2], const float init_co[3], const float prev_co[3], const float dist_px_sq, ListBase *hit_list) |
| 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_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) |
| 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]) |
| eSnapMode | ED_transform_snap_object_project_view3d_ex (SnapObjectContext *sctx, Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, eSnapMode snap_to_flag, 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) |
Iterator | |
| using | IterSnapObjsCallback |
| static bool | snap_object_is_snappable (const SnapObjectContext *sctx, const eSnapTargetOP snap_target_select, const Base *base_act, const Base *base) |
| static eSnapMode | iter_snap_objects (SnapObjectContext *sctx, IterSnapObjsCallback sob_callback) |
| using IterSnapObjsCallback |
Definition at line 397 of file transform_snap_object.cc.
| void cb_snap_edge | ( | void * | userdata, |
| int | index, | ||
| const DistProjectedAABBPrecalc * | precalc, | ||
| const float(*) | clip_plane[4], | ||
| const int | clip_plane_len, | ||
| BVHTreeNearest * | nearest ) |
Definition at line 802 of file transform_snap_object.cc.
References SnapData::get_edge_verts_index(), sub_v3_v3v3(), and test_projected_edge_dist().
Referenced by cb_snap_tri_edges(), snap_polygon_mesh(), and snapMesh().
| void cb_snap_vert | ( | void * | userdata, |
| int | index, | ||
| const DistProjectedAABBPrecalc * | precalc, | ||
| const float(*) | clip_plane[4], | ||
| const int | clip_plane_len, | ||
| BVHTreeNearest * | nearest ) |
Definition at line 784 of file transform_snap_object.cc.
References SnapData::get_vert_co(), and test_projected_vert_dist().
Referenced by cb_snap_edge_verts(), cb_snap_tri_verts(), snap_polygon_mesh(), and snapMesh().
|
static |
Mesh used for snapping.
BKE_editmesh_from_object(ob_eval) should be used.Definition at line 351 of file transform_snap_object.cc.
References BKE_object_get_editmesh_eval_cage(), BKE_object_get_editmesh_eval_final(), BKE_object_get_evaluated_mesh(), BKE_object_is_in_editmode(), Object::data, ME_WRAPPER_TYPE_BMESH, OB_MESH, Mesh::runtime, SNAP_GEOM_CAGE, SNAP_GEOM_EDIT, SNAP_GEOM_FINAL, and Object::type.
Referenced by iter_snap_objects().
| SnapObjectContext * ED_transform_snap_object_context_create | ( | Scene * | scene, |
| int | flag ) |
Definition at line 1015 of file transform_snap_object.cc.
References scene, and SnapObjectContext::scene.
Referenced by add_vertex_invoke(), ED_view3d_cursor3d_position_rotation(), EDBM_project_snap_verts(), gizmo_move_invoke(), initSnappingMode(), initWalkInfo(), v3d_cursor_snap_context_ensure(), and wm_xr_raycast().
| void ED_transform_snap_object_context_destroy | ( | SnapObjectContext * | sctx | ) |
Definition at line 1024 of file transform_snap_object.cc.
Referenced by add_vertex_invoke(), ED_view3d_cursor3d_position_rotation(), EDBM_project_snap_verts(), freeSnapping(), gizmo_move_exit(), v3d_cursor_snap_context_ensure(), v3d_cursor_snap_free(), walkEnd(), and wm_xr_raycast().
| 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 ) |
Callbacks to filter how snap works.
Definition at line 1029 of file transform_snap_object.cc.
References SnapObjectContext::callbacks, SnapObjectContext::edit_mesh, SnapObjectContext::editmesh_caches, SnapObjectContext::test_edge_fn, SnapObjectContext::test_face_fn, SnapObjectContext::test_vert_fn, and SnapObjectContext::user_data.
Referenced by snap_object_context_init(), and transform_mode_snap_source_init().
| 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 ) |
see: ED_transform_snap_object_project_ray_all
Definition at line 1530 of file transform_snap_object.cc.
References RegionView3D::clip, clip_segment_v3_plane_n(), depsgraph, blender::math::dot(), ED_transform_snap_object_project_ray_all(), ED_view3d_win_to_ray_clipped_ex(), params, RegionView3D::rflag, and RV3D_CLIPPING.
Referenced by peelObjectsTransform().
| 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).
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().
| 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.
| ray_depth | Only depths in this range are considered, -1.0 for maximum. |
| sort | Optionally sort the hits by depth. |
| r_hit_list | List 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().
| 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] ) |
Definition at line 1177 of file transform_snap_object.cc.
References BVH_RAYCAST_DIST_MAX, copy_m4_m4(), copy_v3_v3(), depsgraph, SnapObjectContext::index, SnapObjectContext::loc, SnapObjectContext::no, SnapObjectContext::ob, SnapObjectContext::obmat, params, blender::MatBase< T, NumCol, NumRow, Alignment >::ptr(), SnapObjectContext::ray_depth_max, raycastObjects(), SnapObjectContext::ret, SCE_SNAP_TO_FACE, and snap_object_context_runtime_init().
Referenced by ED_transform_snap_object_project_ray(), and wm_xr_raycast().
| 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.
| sctx | Snap context. |
| snap_to | Target elements to snap source to. |
| params | Addition snapping options. |
| init_co | Initial world-space coordinate of source (optional). |
| mval | Current transformed screen-space coordinate or mouse position (optional). |
| prev_co | Current transformed world-space coordinate of source (optional). |
| dist_px | Maximum distance to snap (in pixels). |
| r_loc | Snapped world-space coordinate. |
| r_no | Snapped world-space normal (optional). |
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().
| 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.
| sctx | Snap context. |
| snap_to | Target elements to snap source to. |
| params | Addition snapping options. |
| init_co | Initial world-space coordinate of source (optional). |
| mval | Current transformed screen-space coordinate or mouse position (optional). |
| prev_co | Current transformed world-space coordinate of source (optional). |
| dist_px | Maximum distance to snap (in pixels). |
| r_loc | Snapped world-space coordinate. |
| r_no | Snapped world-space normal (optional). |
| r_index | Index of snapped-to target element (optional). |
| r_ob | Snapped-to target object (optional). |
| r_obmat | Matrix of snapped-to target object (optional). |
| r_face_nor | World-space normal of snapped-to target face (optional). |
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().
|
static |
Definition at line 532 of file transform_snap_object.cc.
References SnapObjectHitDepth::depth.
Referenced by ED_transform_snap_object_project_ray_all().
|
static |
Definition at line 521 of file transform_snap_object.cc.
References copy_v3_v3().
Referenced by raycast_all_cb().
|
static |
Walks through all objects in the scene to create the list of objects to snap.
Definition at line 463 of file transform_snap_object.cc.
References BKE_view_layer_active_base_get(), BKE_view_layer_object_bases_get(), BKE_view_layer_synced_ensure(), BLI_assert, data_for_snap(), DEG_get_evaluated_object(), DEG_get_input_scene(), DEG_get_input_view_layer(), DEG_is_evaluated_object(), SnapObjectContext::depsgraph, SnapObjectParams::edit_mode_type, free_object_duplilist(), LISTBASE_FOREACH, SnapObjectContext::ob, OB_DUPLI, object_duplilist(), blender::bke::object_has_geometry_set_instances(), SnapObjectContext::params, ret, SnapObjectContext::runtime, SCE_SNAP_TO_NONE, SnapObjectContext::scene, snap_object_is_snappable(), SnapObjectParams::snap_target_select, and Object::transflag.
Referenced by nearestWorldObjects(), raycastObjects(), and snapObjectsRay().
|
static |
Definition at line 724 of file transform_snap_object.cc.
References BKE_object_is_in_editmode(), SnapObjectParams::edit_mode_type, ELEM, GS, ID_ME, ID::name, OB_CURVES_LEGACY, OB_MESH, OB_SURF, SnapObjectContext::params, SnapObjectContext::runtime, SCE_SNAP_INDIVIDUAL_NEAREST, SCE_SNAP_TO_NONE, SNAP_GEOM_FINAL, snap_object_editmesh(), snap_object_mesh(), and Object::type.
Referenced by nearestWorldObjects().
| bool nearest_world_tree | ( | SnapObjectContext * | sctx, |
| BVHTree * | tree, | ||
| BVHTree_NearestPointCallback | nearest_cb, | ||
| const blender::float4x4 & | obmat, | ||
| void * | treedata, | ||
| BVHTreeNearest * | r_nearest ) |
Definition at line 667 of file transform_snap_object.cc.
References SnapObjectContext::curr_co, BVHTreeNearest::dist_sq, SnapObjectParams::face_nearest_steps, SnapObjectContext::init_co, blender::math::invert(), SnapObjectParams::keep_on_same_target, blender::math::length_squared(), max_ff(), nearest_world_tree_co(), SnapObjectContext::params, SnapObjectContext::runtime, blender::math::transform_direction(), blender::math::transform_point(), and tree.
Referenced by nearest_world_mesh().
|
static |
Definition at line 654 of file transform_snap_object.cc.
References BLI_bvhtree_find_nearest(), BVHTreeNearest::co, copy_v3_fl(), BVHTreeNearest::dist_sq, FLT_MAX, BVHTreeNearest::index, and tree.
Referenced by nearest_world_tree().
|
static |
Walks through all objects in the scene to find the nearest location on target surface.
| sctx | Snap context to store data. |
| params | Settings for snapping. |
| init_co | Initial location of source point. |
| prev_co | Current location of source point after transformation but before snapping. |
Definition at line 773 of file transform_snap_object.cc.
References iter_snap_objects(), nearest_world_object_fn(), and SCE_SNAP_TO_NONE.
Referenced by ED_transform_snap_object_project_view3d_ex().
Definition at line 43 of file transform_snap_object.cc.
References dot_v3v3(), negate_v4(), and plane_from_point_normal_v3().
Referenced by ED_transform_snap_object_project_view3d_ex(), and SnapData::register_result_raycast().
| void raycast_all_cb | ( | void * | userdata, |
| int | index, | ||
| const BVHTreeRay * | ray, | ||
| BVHTreeRayHit * | hit ) |
Definition at line 548 of file transform_snap_object.cc.
References BLI_addtail(), hit_depth_create(), mul_v3_m4v3(), and RayCastAll_Data::raycast_callback.
Referenced by raycastMesh().
|
static |
Definition at line 576 of file transform_snap_object.cc.
References BKE_object_is_in_editmode(), Object::dt, SnapObjectParams::edit_mode_type, ELEM, GS, ID_ME, ID::name, OB_BOUNDBOX, OB_CURVES_LEGACY, OB_MESH, OB_SURF, OB_WIRE, SnapObjectParams::occlusion_test, SnapObjectContext::occlusion_test_edit, SnapObjectContext::params, SnapObjectContext::runtime, SCE_SNAP_TO_FACE, SCE_SNAP_TO_NONE, SNAP_GEOM_FINAL, snap_object_editmesh(), snap_object_mesh(), SNAP_OCCLUSION_AS_SEEM, and Object::type.
Referenced by raycastObjects().
| bool raycast_tri_backface_culling_test | ( | const float | dir[3], |
| const float | v0[3], | ||
| const float | v1[3], | ||
| const float | v2[3], | ||
| float | no[3] ) |
Definition at line 566 of file transform_snap_object.cc.
References cross_tri_v3(), dot_v3v3(), and v2.
Referenced by cb_snap_tri_edges(), cb_snap_tri_verts(), and mesh_corner_tris_raycast_backface_culling_cb().
|
static |
Walks through all objects in the scene to find the hit on object surface.
| sctx | Snap context to store data. |
| ray_depth | maximum depth allowed for r_co, elements deeper than this value will be ignored. |
Definition at line 643 of file transform_snap_object.cc.
References iter_snap_objects(), raycast_obj_fn(), and SCE_SNAP_TO_NONE.
Referenced by ED_transform_snap_object_project_ray_all(), ED_transform_snap_object_project_ray_ex(), and ED_transform_snap_object_project_view3d_ex().
|
static |
Definition at line 842 of file transform_snap_object.cc.
References SnapObjectContext::data, GS, ID_ME, SnapObjectContext::index, ID::name, SnapObjectContext::ob, OB_MESH, SnapObjectContext::obmat, SnapObjectContext::ret, SCE_SNAP_TO_EDGE, snap_edge_points_mesh(), and Object::type.
Referenced by ED_transform_snap_object_project_view3d_ex().
|
static |
Definition at line 961 of file transform_snap_object.cc.
References add_v3_v3(), SnapData::clip_planes_enable(), BVHTreeNearest::co, copy_v3_v3(), SnapObjectContext::curr_co, BVHTreeNearest::dist_sq, FLT_MAX, SnapObjectContext::grid, SnapObjectContext::init_co, RegionView3D::is_persp, isect_ray_plane_v3(), SnapData::nearest_point, BVHTreeNearest::no, SnapObjectContext::planes, SnapObjectContext::ray_dir, SnapObjectContext::ray_start, SnapData::register_result(), blender::math::round(), SnapObjectContext::runtime, SnapObjectContext::rv3d, RV3D_VIEW_IS_AXIS, SnapObjectContext::size, SnapData::snap_point(), SnapObjectContext::use_init_co, and RegionView3D::view.
Referenced by ED_transform_snap_object_project_view3d_ex().
|
static |
Definition at line 883 of file transform_snap_object.cc.
References BKE_object_is_in_editmode(), Object::dt, SnapObjectParams::edit_mode_type, ELEM, GS, ID_ME, ID::name, OB_ARMATURE, OB_BOUNDBOX, OB_CAMERA, OB_CURVES_LEGACY, OB_EMPTY, OB_FONT, OB_GPENCIL_LEGACY, OB_LAMP, OB_MESH, OB_SURF, SnapObjectContext::params, SnapObjectContext::runtime, SCE_SNAP_TO_NONE, SNAP_GEOM_FINAL, snap_object_center(), snap_object_editmesh(), snap_object_mesh(), SnapObjectContext::snap_to_flag, snapArmature(), snapCamera(), snapCurve(), and Object::type.
Referenced by snapObjectsRay().
| eSnapMode snap_object_center | ( | SnapObjectContext * | sctx, |
| const Object * | ob_eval, | ||
| const float4x4 & | obmat, | ||
| eSnapMode | snap_to_flag ) |
Definition at line 852 of file transform_snap_object.cc.
References SnapData::clip_planes_enable(), Object::data, OB_DUPLI, SnapData::register_result(), SCE_SNAP_TO_NONE, SCE_SNAP_TO_POINT, SnapData::snap_point(), and Object::transflag.
Referenced by snap_obj_fn(), and snapCamera().
|
static |
Definition at line 1059 of file transform_snap_object.cc.
References blender::math::abs(), RegionView3D::clip, SnapObjectContext::clip_planes, compare_m4m4(), copy_v2_v2(), copy_v3_v3(), SnapObjectContext::curr_co, SnapObjectContext::data, depsgraph, SnapObjectContext::depsgraph, SnapObjectContext::dist_px_sq, ED_view3d_grid_view_scale(), SnapObjectContext::grid, SnapObjectContext::has_occlusion_plane, SnapObjectContext::has_occlusion_plane_in_front, SnapObjectContext::hit_list, SnapObjectContext::index, SnapObjectContext::init_co, SnapObjectContext::mval, SnapObjectContext::ob, SnapObjectContext::object_index, SnapObjectParams::occlusion_test, SnapObjectContext::occlusion_test_edit, params, SnapObjectContext::params, RegionView3D::persmat, SnapObjectContext::persmat, plane_from_point_normal_v3(), SnapObjectContext::planes, planes_from_projmat(), blender::MatBase< T, NumCol, NumRow, Alignment >::ptr(), SnapObjectContext::ray_depth_max, SnapObjectContext::ray_depth_max_in_front, SnapObjectContext::ray_dir, SnapObjectContext::ray_start, SnapObjectContext::ret, RegionView3D::rflag, SnapObjectContext::runtime, SnapObjectContext::rv3d, RV3D_CLIPPING, SCE_SNAP_INDIVIDUAL_NEAREST, SCE_SNAP_TO_EDGE_PERPENDICULAR, SCE_SNAP_TO_FACE, SCE_SNAP_TO_GRID, SCE_SNAP_TO_NONE, SnapObjectContext::scene, SnapObjectContext::size, SNAP_OCCLUSION_ALWAYS, SnapObjectContext::snap_to_flag, SnapObjectContext::use_init_co, SnapObjectContext::v3d, RegionView3D::viewinv, and SnapObjectContext::win_size.
Referenced by ED_transform_snap_object_project_ray_all(), ED_transform_snap_object_project_ray_ex(), and ED_transform_snap_object_project_view3d_ex().
|
static |
Definition at line 404 of file transform_snap_object.cc.
References BA_SNAP_FIX_DEPS_FIASCO, BA_TRANSFORM_LOCKED_IN_PLACE, BA_WAS_SEL, BASE_SELECTABLE, BASE_SELECTED, BASE_VISIBLE, Base::flag, Base::flag_legacy, Object::mode, OB_MODE_EDIT, OB_MODE_OBJECT, Base::object, SnapObjectContext::runtime, SCE_SNAP_TARGET_ALL, SCE_SNAP_TARGET_NOT_ACTIVE, SCE_SNAP_TARGET_NOT_EDITED, SCE_SNAP_TARGET_NOT_NONEDITED, SCE_SNAP_TARGET_NOT_SELECTED, SCE_SNAP_TARGET_ONLY_SELECTABLE, and SnapObjectContext::v3d.
Referenced by iter_snap_objects().
|
static |
Definition at line 832 of file transform_snap_object.cc.
References SnapObjectContext::data, GS, ID_ME, SnapObjectContext::index, ID::name, SnapObjectContext::ob, OB_MESH, SnapObjectContext::obmat, SnapObjectContext::ret, SCE_SNAP_TO_NONE, snap_polygon_mesh(), and Object::type.
Referenced by ED_transform_snap_object_project_view3d_ex().
|
static |
Walks through all objects in the scene to find the closest snap element ray.
| sctx | Snap context to store data. |
| dist_px | Maximum threshold distance (in pixels). |
Definition at line 956 of file transform_snap_object.cc.
References iter_snap_objects(), and snap_obj_fn().
Referenced by ED_transform_snap_object_project_view3d_ex().
|
static |
Definition at line 88 of file transform_snap_object.cc.
References closest_ray_to_segment_v3(), DistProjectedAABBPrecalc::ray_direction, DistProjectedAABBPrecalc::ray_origin, and test_projected_vert_dist().
Referenced by cb_snap_edge(), and SnapData::snap_edge().
|
static |
Definition at line 58 of file transform_snap_object.cc.
References copy_v3_v3(), dot_m4_v3_row_x(), dot_m4_v3_row_y(), isect_point_planes_v3_negated(), len_squared_v2v2(), mul_project_m4_v3_zfac(), mul_v2_fl(), DistProjectedAABBPrecalc::mval, DistProjectedAABBPrecalc::pmat, and w().
Referenced by cb_snap_vert(), SnapData::snap_point(), and test_projected_edge_dist().