Blender V5.0
transform_snap_object.cc File Reference
#include <algorithm>
#include "BLI_listbase.h"
#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_mesh_wrapper.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.

Namespaces

namespace  blender
namespace  blender::ed
namespace  blender::ed::transform

Functions

static float4 blender::ed::transform::occlusion_plane_create (float3 ray_dir, float3 ray_co, float3 ray_no)
static bool blender::ed::transform::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 blender::ed::transform::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 const IDblender::ed::transform::data_for_snap (Object *ob_eval, eSnapEditType edit_mode_type, bool *r_use_hide)
static const IDblender::ed::transform::data_for_snap_dupli (ID *ob_data)
Ray Cast Functions
static SnapObjectHitDepthblender::ed::transform::hit_depth_create (const float depth, const float co[3], uint ob_uuid)
static int blender::ed::transform::hit_depth_cmp (const void *arg1, const void *arg2)
void blender::ed::transform::raycast_all_cb (void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit)
bool blender::ed::transform::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 blender::ed::transform::raycast_obj_fn (SnapObjectContext *sctx, const Object *ob_eval, const ID *ob_data, const float4x4 &obmat, bool, bool use_hide)
static bool blender::ed::transform::raycastObjects (SnapObjectContext *sctx)
Surface Snap Functions
static void blender::ed::transform::nearest_world_tree_co (const BVHTree *tree, BVHTree_NearestPointCallback nearest_cb, void *treedata, const float3 &co, BVHTreeNearest *r_nearest)
bool blender::ed::transform::nearest_world_tree (SnapObjectContext *sctx, const BVHTree *tree, BVHTree_NearestPointCallback nearest_cb, const blender::float4x4 &obmat, void *treedata, BVHTreeNearest *r_nearest)
static eSnapMode blender::ed::transform::nearest_world_object_fn (SnapObjectContext *sctx, const Object *ob_eval, const ID *ob_data, const float4x4 &obmat, bool, bool use_hide)
static bool blender::ed::transform::nearestWorldObjects (SnapObjectContext *sctx)
Callbacks
void blender::ed::transform::cb_snap_vert (void *userdata, int index, const DistProjectedAABBPrecalc *precalc, const float(*clip_plane)[4], const int clip_plane_len, BVHTreeNearest *nearest)
void blender::ed::transform::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 blender::ed::transform::snap_polygon (SnapObjectContext *sctx, eSnapMode snap_to_flag)
static eSnapMode blender::ed::transform::snap_edge_points (SnapObjectContext *sctx, const float dist_px_sq_orig)
eSnapMode blender::ed::transform::snap_object_center (SnapObjectContext *sctx, const Object *ob_eval, const float4x4 &obmat, eSnapMode snap_to_flag)
static eSnapMode blender::ed::transform::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 blender::ed::transform::snapObjectsRay (SnapObjectContext *sctx)
static bool blender::ed::transform::snap_grid (SnapObjectContext *sctx)
Public Object Snapping API
SnapObjectContextblender::ed::transform::snap_object_context_create (Scene *scene, int flag)
void blender::ed::transform::snap_object_context_destroy (SnapObjectContext *sctx)
void blender::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 blender::ed::transform::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 blender::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 blender::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 blender::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 blender::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 blender::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 blender::ed::transform::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 blender::ed::transform::IterSnapObjsCallback
static bool blender::ed::transform::snap_object_is_snappable (const SnapObjectContext *sctx, const eSnapTargetOP snap_target_select, const Base *base_act, const Base *base)
static eSnapMode blender::ed::transform::iter_snap_objects (SnapObjectContext *sctx, IterSnapObjsCallback sob_callback)