28 {
SOCK_INT,
N_(
"Count"), 10, 0.0f, 0.0f, 0.0f, 1, 10000},
54 uiItemR(layout,
ptr,
"mode", 0,
"", ICON_NONE);
56 uiItemR(layout,
ptr,
"count_mode", 0,
"", ICON_NONE);
68 node->storage = node_storage;
120 for (
const int i :
verts.index_range()) {
143 const float3 total_delta = end - start;
147 const float resolution =
std::max(
params.extract_input<
float>(
"Resolution"), 0.0001f);
148 const int count = total_delta.length() / resolution + 1;
153 const int count =
params.extract_input<
int>(
"Count");
165 const int count =
params.extract_input<
int>(
"Count");
typedef float(TangentPoint)[2]
struct Mesh * BKE_mesh_new_nomain(int verts_len, int edges_len, int tessface_len, int loops_len, int polys_len)
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_update(struct bNodeType *ntype, void(*updatefunc)(struct bNodeTree *ntree, struct bNode *node))
void node_type_init(struct bNodeType *ntype, void(*initfunc)(struct bNodeTree *ntree, struct bNode *node))
#define NODE_CLASS_GEOMETRY
#define GEO_NODE_MESH_PRIMITIVE_LINE
void node_type_storage(struct bNodeType *ntype, const char *storagename, void(*freefunc)(struct bNode *node), void(*copyfunc)(struct bNodeTree *dest_ntree, struct bNode *dest_node, const struct bNode *src_node))
void nodeRegisterType(struct bNodeType *ntype)
MINLINE void normal_float_to_short_v3(short r[3], const float n[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void copy_v3_v3_short(short r[3], const short a[3])
GeometryNodeMeshLineCountMode
@ GEO_NODE_MESH_LINE_COUNT_RESOLUTION
@ GEO_NODE_MESH_LINE_COUNT_TOTAL
@ GEO_NODE_MESH_LINE_MODE_END_POINTS
@ GEO_NODE_MESH_LINE_MODE_OFFSET
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon)
void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep)
constexpr IndexRange index_range() const
IconTextureDrawCall normal
void *(* MEM_callocN)(size_t len, const char *str)
static void fill_edge_data(MutableSpan< MEdge > edges)
static Mesh * create_line_mesh(const float3 start, const float3 delta, const int count)
static void geo_node_mesh_primitive_line_exec(GeoNodeExecParams params)
static void geo_node_mesh_primitive_line_init(bNodeTree *UNUSED(ntree), bNode *node)
static void geo_node_mesh_primitive_line_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
void register_node_type_geo_mesh_primitive_line()
static void geo_node_mesh_primitive_line_update(bNodeTree *UNUSED(tree), bNode *node)
static bNodeSocketTemplate geo_node_mesh_primitive_line_in[]
static bNodeSocketTemplate geo_node_mesh_primitive_line_out[]
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)
void node_copy_standard_storage(bNodeTree *UNUSED(dest_ntree), bNode *dest_node, const bNode *src_node)
void node_free_standard_storage(bNode *node)
int RNA_enum_get(PointerRNA *ptr, const char *name)
static GeometrySet create_with_mesh(Mesh *mesh, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
Compact definition of a node socket.
struct bNodeSocket * next
NodeGeometryExecFunction geometry_node_execute
void(* draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)
float3 normalized() const