50 uiItemR(layout,
ptr,
"operation", 0,
"", ICON_NONE);
85 const bool use_self =
params.get_input<
bool>(
"Self Intersection");
86 const bool hole_tolerant =
params.get_input<
bool>(
"Hole Tolerant");
90 TIP_(
"Disabled, Blender was compiled without GMP"));
104 if (mesh_in_a !=
nullptr) {
106 transforms.
append(
nullptr);
114 for (
const GeometrySet &geometry_set : geometry_sets) {
119 const Mesh *mesh_in = set_group.geometry_set.get_mesh_for_read();
120 if (mesh_in !=
nullptr) {
122 for (
const int i : set_group.transforms.index_range()) {
123 transforms.
append(set_group.transforms.begin() + i);
void nodeSetSocketAvailability(struct bNodeSocket *sock, bool is_available)
void node_type_socket_templates(struct bNodeType *ntype, struct bNodeSocketTemplate *inputs, struct bNodeSocketTemplate *outputs)
void node_type_init(struct bNodeType *ntype, void(*initfunc)(struct bNodeTree *ntree, struct bNode *node))
#define NODE_CLASS_GEOMETRY
void nodeRegisterType(struct bNodeType *ntype)
GeometryNodeBooleanOperation
@ GEO_NODE_BOOLEAN_DIFFERENCE
@ GEO_NODE_BOOLEAN_INTERSECT
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
void append(const T &value)
void append_n_times(const T &value, const int64_t n)
void geometry_set_gather_instances(const GeometrySet &geometry_set, Vector< GeometryInstanceGroup > &r_instance_groups)
GeometrySet geometry_set_realize_instances(const GeometrySet &geometry_set)
Mesh * direct_mesh_boolean(blender::Span< const Mesh * > meshes, blender::Span< const float4x4 * > obmats, const float4x4 &target_transform, blender::Span< blender::Array< short >> material_remaps, const bool use_self, const bool hole_tolerant, const int boolean_mode)
static void geo_node_boolean_exec(GeoNodeExecParams params)
static bNodeSocketTemplate geo_node_boolean_out[]
static void geo_node_boolean_update(bNodeTree *UNUSED(ntree), bNode *node)
static void geo_node_boolean_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
static void geo_node_boolean_init(bNodeTree *UNUSED(tree), bNode *node)
void register_node_type_geo_boolean()
static bNodeSocketTemplate geo_node_boolean_in[]
void geo_node_type_base(bNodeType *ntype, int type, const char *name, short nclass, short flag)
void node_sock_label(bNodeSocket *sock, const char *name)
static GeometrySet create_with_mesh(Mesh *mesh, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
const Mesh * get_mesh_for_read() const
Compact definition of a node socket.
struct bNodeSocket * next
NodeGeometryExecFunction geometry_node_execute
void(* updatefunc)(struct bNodeTree *ntree, struct bNode *node)
void(* draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)
static float4x4 identity()