36 uiItemR(layout,
ptr,
"fill_type", 0,
nullptr, ICON_NONE);
45 node->storage = node_storage;
118 const float angle_delta = 2.0f * (
M_PI /
static_cast<float>(verts_num));
120 const float angle = i * angle_delta;
132 MEdge &edge = edges[i];
134 edge.v2 = (i + 1) % verts_num;
135 edge.flag = edge_flag;
141 MEdge &edge = edges[verts_num + i];
150 MPoly &poly = polys[0];
155 MLoop &loop = loops[i];
162 MPoly &poly = polys[i];
166 MLoop &loop_a = loops[3 * i];
169 MLoop &loop_b = loops[3 * i + 1];
170 loop_b.
e = verts_num + ((i + 1) % verts_num);
171 loop_b.
v = (i + 1) % verts_num;
172 MLoop &loop_c = loops[3 * i + 2];
173 loop_c.
e = verts_num + i;
174 loop_c.
v = verts_num;
186 const float radius =
params.extract_input<
float>(
"Radius");
187 const int verts_num =
params.extract_input<
int>(
"Vertices");
190 params.set_default_remaining_outputs();
General operations, lookup, etc. for materials.
void BKE_id_material_eval_ensure_default_slot(struct ID *id)
struct Mesh * BKE_mesh_new_nomain(int verts_len, int edges_len, int tessface_len, int loops_len, int polys_len)
#define GEO_NODE_MESH_PRIMITIVE_CIRCLE
#define NODE_STORAGE_FUNCS(StorageT)
void node_type_init(struct bNodeType *ntype, void(*initfunc)(struct bNodeTree *ntree, struct bNode *node))
#define NODE_CLASS_GEOMETRY
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)
#define BLI_assert_unreachable()
MINLINE void copy_v3_v3(float r[3], const float a[3])
GeometryNodeMeshCircleFillType
@ GEO_NODE_MESH_CIRCLE_FILL_NGON
@ GEO_NODE_MESH_CIRCLE_FILL_TRIANGLE_FAN
@ GEO_NODE_MESH_CIRCLE_FILL_NONE
in reality light always falls off quadratically Particle Info
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)
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
StringRefNull description() const
INLINE Rall1d< T, V, S > cos(const Rall1d< T, V, S > &arg)
INLINE Rall1d< T, V, S > sin(const Rall1d< T, V, S > &arg)
static void node_geo_exec(GeoNodeExecParams params)
static int circle_edge_total(const GeometryNodeMeshCircleFillType fill_type, const int verts_num)
static int circle_corner_total(const GeometryNodeMeshCircleFillType fill_type, const int verts_num)
static void node_declare(NodeDeclarationBuilder &b)
static void node_init(bNodeTree *UNUSED(ntree), bNode *node)
static int circle_vert_total(const GeometryNodeMeshCircleFillType fill_type, const int verts_num)
static int circle_face_total(const GeometryNodeMeshCircleFillType fill_type, const int verts_num)
static Mesh * create_circle_mesh(const float radius, const int verts_num, const GeometryNodeMeshCircleFillType fill_type)
static void node_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
vec_base< float, 3 > float3
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static void node_init(const struct bContext *C, bNodeTree *ntree, bNode *node)
void register_node_type_geo_mesh_primitive_circle()
void geo_node_type_base(bNodeType *ntype, int type, const char *name, short nclass)
void node_copy_standard_storage(bNodeTree *UNUSED(dest_ntree), bNode *dest_node, const bNode *src_node)
void node_free_standard_storage(bNode *node)
static GeometrySet create_with_mesh(Mesh *mesh, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
NodeGeometryExecFunction geometry_node_execute
void(* draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)
NodeDeclareFunction declare