1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
/** \file
* \ingroup bmesh
*/
#ifdef __cplusplus
extern "C" {
#endif
/**
* Intersect tessellated faces
* leaving the resulting edges tagged.
*
* \param test_fn: Return value: -1: skip, 0: tree_a, 1: tree_b (use_self == false)
* \param boolean_mode: -1: no-boolean, 0: intersection... see #BMESH_ISECT_BOOLEAN_ISECT.
* \return true if the mesh is changed (intersections cut or faces removed from boolean).
*/
bool BM_mesh_intersect(BMesh *bm,
struct BMLoop *(*looptris)[3],
int looptris_tot,
int (*test_fn)(BMFace *f, void *user_data),
void *user_data,
bool use_self,
bool use_separate,
bool use_dissolve,
bool use_island_connect,
bool use_partial_connect,
bool use_edge_tag,
int boolean_mode,
float eps);
enum {
BMESH_ISECT_BOOLEAN_NONE = -1,
/* aligned with BooleanModifierOp */
BMESH_ISECT_BOOLEAN_ISECT = 0,
BMESH_ISECT_BOOLEAN_UNION = 1,
BMESH_ISECT_BOOLEAN_DIFFERENCE = 2,
};
#ifdef __cplusplus
}
#endif
|