Blender  V3.3
transform_snap.c File Reference
#include <float.h>
#include "PIL_time.h"
#include "DNA_windowmanager_types.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "GPU_immediate.h"
#include "GPU_matrix.h"
#include "GPU_state.h"
#include "BKE_context.h"
#include "BKE_editmesh.h"
#include "BKE_layer.h"
#include "BKE_object.h"
#include "BKE_scene.h"
#include "RNA_access.h"
#include "WM_api.h"
#include "WM_types.h"
#include "ED_gizmo_library.h"
#include "ED_markers.h"
#include "ED_node.h"
#include "ED_transform_snap_object_context.h"
#include "ED_uvedit.h"
#include "ED_view3d.h"
#include "UI_resources.h"
#include "UI_view2d.h"
#include "SEQ_iterator.h"
#include "SEQ_sequencer.h"
#include "SEQ_time.h"
#include "MEM_guardedalloc.h"
#include "transform.h"
#include "transform_convert.h"
#include "transform_snap.h"

Go to the source code of this file.

Functions

Implementations
static bool doForceIncrementSnap (const TransInfo *t)
 
static bool snapNodeTest (View2D *v2d, bNode *node, eSnapTargetSelect snap_target_select)
 
static NodeBorder snapNodeBorder (eSnapMode snap_node_mode)
 
static bool snap_use_backface_culling (const TransInfo *t)
 
bool validSnap (const TransInfo *t)
 
bool activeSnap (const TransInfo *t)
 
bool activeSnap_SnappingIndividual (const TransInfo *t)
 
bool activeSnap_SnappingAsGroup (const TransInfo *t)
 
bool transformModeUseSnap (const TransInfo *t)
 
void drawSnapping (const struct bContext *C, TransInfo *t)
 
eRedrawFlag handleSnapping (TransInfo *t, const wmEvent *event)
 
static bool applyFaceProject (TransInfo *t, TransDataContainer *tc, TransData *td)
 
static void applyFaceNearest (TransInfo *t, TransDataContainer *tc, TransData *td)
 
void applySnappingIndividual (TransInfo *t)
 
void applyGridAbsolute (TransInfo *t)
 
void applySnappingAsGroup (TransInfo *t, float *vec)
 
void resetSnapping (TransInfo *t)
 
bool usingSnappingNormal (const TransInfo *t)
 
bool validSnappingNormal (const TransInfo *t)
 
static bool bm_edge_is_snap_target (BMEdge *e, void *UNUSED(user_data))
 
static bool bm_face_is_snap_target (BMFace *f, void *UNUSED(user_data))
 
static eSnapFlag snap_flag_from_spacetype (TransInfo *t)
 
static eSnapMode snap_mode_from_spacetype (TransInfo *t)
 
static eSnapTargetSelect snap_target_select_from_spacetype (TransInfo *t)
 
static void initSnappingMode (TransInfo *t)
 
void initSnapping (TransInfo *t, wmOperator *op)
 
void freeSnapping (TransInfo *t)
 
void addSnapPoint (TransInfo *t)
 
eRedrawFlag updateSelectedSnapPoint (TransInfo *t)
 
void removeSnapPoint (TransInfo *t)
 
void getSnapPoint (const TransInfo *t, float vec[3])
 
Prototypes
static void setSnappingCallback (TransInfo *t)
 
static void snap_calc_view3d_fn (TransInfo *t, float *vec)
 
static void snap_calc_uv_fn (TransInfo *t, float *vec)
 
static void snap_calc_node_fn (TransInfo *t, float *vec)
 
static void snap_calc_sequencer_fn (TransInfo *t, float *vec)
 
static void TargetSnapMedian (TransInfo *t)
 
static void TargetSnapCenter (TransInfo *t)
 
static void TargetSnapClosest (TransInfo *t)
 
static void TargetSnapActive (TransInfo *t)
 
Calc Snap
static void snap_calc_view3d_fn (TransInfo *t, float *UNUSED(vec))
 
static void snap_calc_uv_fn (TransInfo *t, float *UNUSED(vec))
 
static void snap_calc_node_fn (TransInfo *t, float *UNUSED(vec))
 
static void snap_calc_sequencer_fn (TransInfo *t, float *UNUSED(vec))
 
Target
static void snap_target_median_impl (TransInfo *t, float r_median[3])
 
static void snap_target_grid_ensure (TransInfo *t)
 
static void TargetSnapOffset (TransInfo *t, TransData *td)
 
Snap Objects
eSnapMode snapObjectsTransform (TransInfo *t, const float mval[2], float *dist_px, float r_loc[3], float r_no[3])
 
Peeling
bool peelObjectsTransform (TransInfo *t, const float mval[2], const bool use_peel_object, float r_loc[3], float r_no[3], float *r_thickness)
 
snap Nodes
static bool snapNode (ToolSettings *ts, SpaceNode *UNUSED(snode), ARegion *region, bNode *node, const int mval[2], float r_loc[2], float *r_dist_px, char *r_node_border)
 
static bool snapNodes (ToolSettings *ts, SpaceNode *snode, ARegion *region, const int mval[2], eSnapTargetSelect snap_target_select, float r_loc[2], float *r_dist_px, char *r_node_border)
 
bool snapNodesTransform (TransInfo *t, const int mval[2], float r_loc[2], float *r_dist_px, char *r_node_border)
 
snap Grid
static void snap_grid_apply (TransInfo *t, const int max_index, const float grid_dist, const float loc[3], float r_out[3])
 
bool transform_snap_grid (TransInfo *t, float *val)
 
static void snap_increment_apply_ex (const TransInfo *UNUSED(t), const int max_index, const float increment_val, const float aspect[3], const float loc[3], float r_out[3])
 
static void snap_increment_apply (const TransInfo *t, const int max_index, const float increment_dist, float *r_val)
 
bool transform_snap_increment_ex (const TransInfo *t, bool use_local_space, float *r_val)
 
bool transform_snap_increment (const TransInfo *t, float *r_val)
 
float transform_snap_increment_get (const TransInfo *t)
 
Generic callbacks
float transform_snap_distance_len_squared_fn (TransInfo *UNUSED(t), const float p1[3], const float p2[3])
 

Function Documentation

◆ activeSnap()

bool activeSnap ( const TransInfo t)

◆ activeSnap_SnappingAsGroup()

bool activeSnap_SnappingAsGroup ( const TransInfo t)

◆ activeSnap_SnappingIndividual()

bool activeSnap_SnappingIndividual ( const TransInfo t)

◆ addSnapPoint()

void addSnapPoint ( TransInfo t)

◆ applyFaceNearest()

static void applyFaceNearest ( TransInfo t,
TransDataContainer tc,
TransData td 
)
static

◆ applyFaceProject()

static bool applyFaceProject ( TransInfo t,
TransDataContainer tc,
TransData td 
)
static

◆ applyGridAbsolute()

void applyGridAbsolute ( TransInfo t)

◆ applySnappingAsGroup()

void applySnappingAsGroup ( TransInfo t,
float vec 
)

◆ applySnappingIndividual()

void applySnappingIndividual ( TransInfo t)

◆ bm_edge_is_snap_target()

static bool bm_edge_is_snap_target ( BMEdge e,
void UNUSEDuser_data 
)
static

Definition at line 635 of file transform_snap.c.

References BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, and e.

Referenced by initSnappingMode().

◆ bm_face_is_snap_target()

static bool bm_face_is_snap_target ( BMFace f,
void UNUSEDuser_data 
)
static

◆ doForceIncrementSnap()

static bool doForceIncrementSnap ( const TransInfo t)
static

◆ drawSnapping()

void drawSnapping ( const struct bContext C,
TransInfo t 
)

◆ freeSnapping()

void freeSnapping ( TransInfo t)

◆ getSnapPoint()

void getSnapPoint ( const TransInfo t,
float  vec[3] 
)

◆ handleSnapping()

eRedrawFlag handleSnapping ( TransInfo t,
const wmEvent event 
)

◆ initSnapping()

void initSnapping ( TransInfo t,
wmOperator op 
)

◆ initSnappingMode()

static void initSnappingMode ( TransInfo t)
static

◆ peelObjectsTransform()

bool peelObjectsTransform ( TransInfo t,
const float  mval[2],
const bool  use_peel_object,
float  r_loc[3],
float  r_no[3],
float r_thickness 
)

◆ removeSnapPoint()

void removeSnapPoint ( TransInfo t)

◆ resetSnapping()

void resetSnapping ( TransInfo t)

Definition at line 601 of file transform_snap.c.

References SCE_SNAP_MODE_NONE, SCE_SNAP_SOURCE_CLOSEST, SCE_SNAP_TARGET_ALL, SNAP_RESETTED, and t.

Referenced by initSnapping().

◆ setSnappingCallback()

static void setSnappingCallback ( TransInfo t)
static

◆ snap_calc_node_fn() [1/2]

static void snap_calc_node_fn ( TransInfo t,
float UNUSEDvec 
)
static

◆ snap_calc_node_fn() [2/2]

static void snap_calc_node_fn ( TransInfo t,
float vec 
)
static

Referenced by setSnappingCallback().

◆ snap_calc_sequencer_fn() [1/2]

static void snap_calc_sequencer_fn ( TransInfo t,
float UNUSEDvec 
)
static

◆ snap_calc_sequencer_fn() [2/2]

static void snap_calc_sequencer_fn ( TransInfo t,
float vec 
)
static

Referenced by setSnappingCallback().

◆ snap_calc_uv_fn() [1/2]

static void snap_calc_uv_fn ( TransInfo t,
float UNUSEDvec 
)
static

◆ snap_calc_uv_fn() [2/2]

static void snap_calc_uv_fn ( TransInfo t,
float vec 
)
static

Referenced by setSnappingCallback().

◆ snap_calc_view3d_fn() [1/2]

static void snap_calc_view3d_fn ( TransInfo t,
float UNUSEDvec 
)
static

◆ snap_calc_view3d_fn() [2/2]

static void snap_calc_view3d_fn ( TransInfo t,
float vec 
)
static

Referenced by setSnappingCallback().

◆ snap_flag_from_spacetype()

static eSnapFlag snap_flag_from_spacetype ( TransInfo t)
static

◆ snap_grid_apply()

static void snap_grid_apply ( TransInfo t,
const int  max_index,
const float  grid_dist,
const float  loc[3],
float  r_out[3] 
)
static

◆ snap_increment_apply()

static void snap_increment_apply ( const TransInfo t,
const int  max_index,
const float  increment_dist,
float r_val 
)
static

◆ snap_increment_apply_ex()

static void snap_increment_apply_ex ( const TransInfo UNUSEDt,
const int  max_index,
const float  increment_val,
const float  aspect[3],
const float  loc[3],
float  r_out[3] 
)
static

Definition at line 1714 of file transform_snap.c.

Referenced by snap_increment_apply().

◆ snap_mode_from_spacetype()

static eSnapMode snap_mode_from_spacetype ( TransInfo t)
static

◆ snap_target_grid_ensure()

static void snap_target_grid_ensure ( TransInfo t)
static

◆ snap_target_median_impl()

static void snap_target_median_impl ( TransInfo t,
float  r_median[3] 
)
static

◆ snap_target_select_from_spacetype()

static eSnapTargetSelect snap_target_select_from_spacetype ( TransInfo t)
static

◆ snap_use_backface_culling()

static bool snap_use_backface_culling ( const TransInfo t)
static

◆ snapNode()

static bool snapNode ( ToolSettings ts,
SpaceNode UNUSEDsnode,
ARegion region,
bNode node,
const int  mval[2],
float  r_loc[2],
float r_dist_px,
char *  r_node_border 
)
static

◆ snapNodeBorder()

static NodeBorder snapNodeBorder ( eSnapMode  snap_node_mode)
static

Definition at line 1544 of file transform_snap.c.

References NODE_BOTTOM, NODE_LEFT, NODE_RIGHT, NODE_TOP, SCE_SNAP_MODE_NODE_X, and SCE_SNAP_MODE_NODE_Y.

Referenced by snapNode().

◆ snapNodes()

static bool snapNodes ( ToolSettings ts,
SpaceNode snode,
ARegion region,
const int  mval[2],
eSnapTargetSelect  snap_target_select,
float  r_loc[2],
float r_dist_px,
char *  r_node_border 
)
static

◆ snapNodesTransform()

bool snapNodesTransform ( TransInfo t,
const int  mval[2],
float  r_loc[2],
float r_dist_px,
char *  r_node_border 
)

Definition at line 1640 of file transform_snap.c.

References snapNodes(), and t.

Referenced by snap_calc_node_fn().

◆ snapNodeTest()

static bool snapNodeTest ( View2D v2d,
bNode node,
eSnapTargetSelect  snap_target_select 
)
static

◆ snapObjectsTransform()

eSnapMode snapObjectsTransform ( TransInfo t,
const float  mval[2],
float dist_px,
float  r_loc[3],
float  r_no[3] 
)

◆ TargetSnapActive()

static void TargetSnapActive ( TransInfo t)
static

◆ TargetSnapCenter()

static void TargetSnapCenter ( TransInfo t)
static

Definition at line 1288 of file transform_snap.c.

References copy_v3_v3(), NULL, t, TARGET_INIT, and TargetSnapOffset().

Referenced by setSnappingCallback().

◆ TargetSnapClosest()

static void TargetSnapClosest ( TransInfo t)
static

◆ TargetSnapMedian()

static void TargetSnapMedian ( TransInfo t)
static

Definition at line 1317 of file transform_snap.c.

References snap_target_median_impl(), t, and TARGET_INIT.

Referenced by setSnappingCallback(), and TargetSnapActive().

◆ TargetSnapOffset()

static void TargetSnapOffset ( TransInfo t,
TransData td 
)
static

◆ transform_snap_distance_len_squared_fn()

float transform_snap_distance_len_squared_fn ( TransInfo UNUSEDt,
const float  p1[3],
const float  p2[3] 
)

Definition at line 1813 of file transform_snap.c.

References len_squared_v3v3().

Referenced by initEdgeSlide_ex(), and initVertSlide_ex().

◆ transform_snap_grid()

bool transform_snap_grid ( TransInfo t,
float val 
)

◆ transform_snap_increment()

bool transform_snap_increment ( const TransInfo t,
float r_val 
)

◆ transform_snap_increment_ex()

bool transform_snap_increment_ex ( const TransInfo t,
bool  use_local_space,
float r_val 
)

◆ transform_snap_increment_get()

float transform_snap_increment_get ( const TransInfo t)

◆ transformModeUseSnap()

bool transformModeUseSnap ( const TransInfo t)

◆ updateSelectedSnapPoint()

eRedrawFlag updateSelectedSnapPoint ( TransInfo t)

◆ usingSnappingNormal()

bool usingSnappingNormal ( const TransInfo t)

◆ validSnap()

bool validSnap ( const TransInfo t)

◆ validSnappingNormal()

bool validSnappingNormal ( const TransInfo t)

Definition at line 624 of file transform_snap.c.

References is_zero_v3(), t, and validSnap().

Referenced by applyTranslationValue(), drawSnapping(), and tc_mesh_partial_types_calc().