68 float old_rotation[3][3];
72 float new_rotation[3][3];
84 float old_rotation[3][3];
88 float new_rotation[3][3];
99 float old_rotation[3][3];
101 float rotation[3][3];
103 float new_rotation[3][3];
114 float old_rotation[3][3];
116 float rotation[3][3];
118 float new_rotation[3][3];
132 if (!rotation_attribute) {
137 const int domain_size = rotations.
size();
164 rotation_attribute.apply_span_and_save();
180 params.set_output(
"Geometry", geometry_set);
194 node->storage = node_storage;
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))
#define GEO_NODE_POINT_ROTATE
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)
void mul_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3])
void eul_to_mat3(float mat[3][3], const float eul[3])
void mat3_to_eul(float eul[3], const float mat[3][3])
void axis_angle_to_mat3(float R[3][3], const float axis[3], const float angle)
static uint8 component(Color32 c, uint i)
@ GEO_NODE_POINT_ROTATE_SPACE_OBJECT
@ GEO_NODE_POINT_ROTATE_TYPE_EULER
@ GEO_NODE_POINT_ROTATE_TYPE_AXIS_ANGLE
GeometryNodeAttributeInputMode
@ GEO_NODE_ATTRIBUTE_INPUT_VECTOR
@ GEO_NODE_ATTRIBUTE_INPUT_FLOAT
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
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 int64_t size() const
void *(* MEM_callocN)(size_t len, const char *str)
TypedReadAttribute< float > FloatReadAttribute
TypedReadAttribute< float3 > Float3ReadAttribute
GeometrySet geometry_set_realize_instances(const GeometrySet &geometry_set)
static void point_rotate__euler__object_space(const int domain_size, const Float3ReadAttribute &eulers, MutableSpan< float3 > rotations)
static void geo_node_point_rotate_update(bNodeTree *UNUSED(ntree), bNode *node)
void update_attribute_input_socket_availabilities(bNode &node, const StringRef name, const GeometryNodeAttributeInputMode mode, const bool name_is_available)
static void point_rotate_on_component(GeometryComponent &component, const GeoNodeExecParams ¶ms)
static void point_rotate__axis_angle__object_space(const int domain_size, const Float3ReadAttribute &axis, const FloatReadAttribute &angles, MutableSpan< float3 > rotations)
static void geo_node_point_rotate_exec(GeoNodeExecParams params)
static void point_rotate__euler__point_space(const int domain_size, const Float3ReadAttribute &eulers, MutableSpan< float3 > rotations)
static void geo_node_point_rotate_init(bNodeTree *UNUSED(ntree), bNode *node)
static void point_rotate__axis_angle__point_space(const int domain_size, const Float3ReadAttribute &axis, const FloatReadAttribute &angles, MutableSpan< float3 > rotations)
void register_node_type_geo_point_rotate()
static bNodeSocketTemplate geo_node_point_rotate_out[]
static bNodeSocketTemplate geo_node_point_rotate_in[]
static void geo_node_point_rotate_layout(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
void geo_node_type_base(bNodeType *ntype, int type, const char *name, short nclass, short flag)
void node_copy_standard_storage(bNodeTree *UNUSED(dest_ntree), bNode *dest_node, const bNode *src_node)
void node_free_standard_storage(bNode *node)
GeometryComponent & get_component_for_write(GeometryComponentType component_type)
bool has(const GeometryComponentType component_type) const
uint8_t input_type_rotation
Compact definition of a node socket.
NodeGeometryExecFunction geometry_node_execute
void(* draw_buttons)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr)