Blender V5.0
ED_transform_snap_object_context.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "DNA_scene_types.h"
12
13// #define DEBUG_SNAP_TIME
14
15struct BMEdge;
16struct BMFace;
17struct BMVert;
18
19struct ARegion;
20struct Depsgraph;
21struct ListBase;
22struct Object;
23struct Scene;
24struct View3D;
25
26namespace blender::ed::transform {
27
28/* `transform_snap_object.cc` */
29
30/* ED_transform_snap_object_*** API */
31
35 SNAP_GEOM_EDIT = 2, /* Bmesh for mesh-type. */
36};
37
43
47
48 float depth;
49 float co[3];
50
55 unsigned int ob_uuid;
56};
57
75
79
82 bool (*test_vert_fn)(BMVert *, void *user_data),
83 bool (*test_edge_fn)(BMEdge *, void *user_data),
84 bool (*test_face_fn)(BMFace *, void *user_data),
85 void *user_data);
86
88 Depsgraph *depsgraph,
89 const View3D *v3d,
91 const float ray_start[3],
92 const float ray_normal[3],
93 float *ray_depth,
94 /* return args */
95 float r_loc[3],
96 float r_no[3],
97 int *r_index,
98 const Object **r_ob,
99 float r_obmat[4][4]);
108 Depsgraph *depsgraph,
109 const View3D *v3d,
111 const float ray_start[3],
112 const float ray_normal[3],
113 float *ray_depth,
114 float r_co[3],
115 float r_no[3]);
116
125 Depsgraph *depsgraph,
126 const View3D *v3d,
128 const float ray_start[3],
129 const float ray_normal[3],
130 float ray_depth,
131 bool sort,
132 ListBase *r_hit_list);
133
155 Depsgraph *depsgraph,
156 const ARegion *region,
157 const View3D *v3d,
158 const eSnapMode snap_to,
160 const float init_co[3],
161 const float mval[2],
162 const float prev_co[3],
163 float *dist_px,
164 float r_loc[3],
165 float r_no[3],
166 int *r_index,
167 const Object **r_ob,
168 float r_obmat[4][4],
169 float r_face_nor[3]);
187 Depsgraph *depsgraph,
188 const ARegion *region,
189 const View3D *v3d,
190 const eSnapMode snap_to,
192 const float init_co[3],
193 const float mval[2],
194 const float prev_co[3],
195 float *dist_px,
196 /* return args */
197 float r_loc[3],
198 float r_no[3]);
199
204 Depsgraph *depsgraph,
205 const ARegion *region,
206 const View3D *v3d,
208 const float mval[2],
209 float ray_depth,
210 bool sort,
211 ListBase *r_hit_list);
212
213#ifdef DEBUG_SNAP_TIME
215#else
216# define ED_transform_snap_object_time_average_print() void(0)
217#endif
218
219} // namespace blender::ed::transform
eSnapTargetOP
#define ED_transform_snap_object_time_average_print()
BPy_StructRNA * depsgraph
static DBVT_INLINE btDbvtNode * sort(btDbvtNode *n, btDbvtNode *&r)
Definition btDbvt.cpp:418
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
eSnapMode 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])
bool 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])
void snap_object_context_destroy(SnapObjectContext *sctx)
bool 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 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])
SnapObjectContext * snap_object_context_create(Scene *scene, int flag)
void 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 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 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)
uint8_t flag
Definition wm_window.cc:145