43 float cent[3], axis[3];
44 const float d[3] = {0.0f, 0.0f, 0.0f};
52 const bool use_auto_merge = (
RNA_boolean_get(op->
ptr,
"use_auto_merge") && (dupli ==
false) &&
63 for (
Object *obedit : objects) {
72 "spin geom=%hvef cent=%v axis=%v dvec=%v steps=%i angle=%f space=%m4 "
73 "use_normal_flip=%b use_duplicate=%b use_merge=%b",
80 obedit->object_to_world().ptr(),
88 if (use_auto_merge ==
false) {
98 params.calc_looptris =
true;
99 params.calc_normals =
false;
100 params.is_destructive =
true;
160 if (
STR_ELEM(prop_id,
"use_auto_merge",
"use_normal_flip")) {
174 "Extrude selected vertices in a circle around the cursor in indicated viewport";
175 ot->idname =
"MESH_OT_spin";
187 RNA_def_int(
ot->srna,
"steps", 12, 0, 1000000,
"Steps",
"Steps", 0, 1000);
198 "Rotation for each step",
206 "Merge first/last when the angle is a full revolution");
216 "Center in global view space",
220 ot->srna,
"axis", 3,
nullptr, -1.0f, 1.0f,
"Axis",
"Axis in global view space", -1.0f, 1.0f);
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
View3D * CTX_wm_view3d(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
BMEditMesh * BKE_editmesh_from_object(Object *ob)
Return the BMEditMesh for a given object.
blender::Vector< Object * > BKE_view_layer_array_from_objects_in_edit_mode_unique_data(const Scene *scene, ViewLayer *view_layer, const View3D *v3d)
void BKE_report(ReportList *reports, eReportType type, const char *message)
MINLINE bool is_zero_v3(const float v[3]) ATTR_WARN_UNUSED_RESULT
Object is a sort of wrapper for general info.
void EDBM_flag_disable_all(BMEditMesh *em, char hflag)
void EDBM_update(Mesh *mesh, const EDBMUpdate_Params *params)
bool ED_operator_editmesh(bContext *C)
RegionView3D * ED_view3d_context_rv3d(bContext *C)
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
void BMO_slot_buffer_hflag_enable(BMesh *bm, BMOpSlot slot_args[BMO_OP_MAX_SLOTS], const char *slot_name, char htype, char hflag, bool do_flush)
BMO_FLAG_BUFFER.
void BMO_op_exec(BMesh *bm, BMOperator *op)
BMESH OPSTACK EXEC OP.
static wmOperatorStatus edbm_spin_exec(bContext *C, wmOperator *op)
void MESH_OT_spin(wmOperatorType *ot)
static bool edbm_spin_poll_property(const bContext *, wmOperator *op, const PropertyRNA *prop)
static wmOperatorStatus edbm_spin_invoke(bContext *C, wmOperator *op, const wmEvent *)
void MESH_GGT_spin_redo(wmGizmoGroupType *gzgt)
void MESH_GGT_spin(wmGizmoGroupType *gzgt)
bool EDBM_op_init(BMEditMesh *em, BMOperator *bmop, wmOperator *op, const char *fmt,...)
bool EDBM_op_finish(BMEditMesh *em, BMOperator *bmop, wmOperator *op, const bool do_report)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values)
int RNA_int_get(PointerRNA *ptr, const char *name)
float RNA_float_get(PointerRNA *ptr, const char *name)
void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const float *values)
void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
const char * RNA_property_identifier(const PropertyRNA *prop)
PropertyRNA * RNA_def_float(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_float_vector(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_float_vector_xyz(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_subtype(PropertyRNA *prop, PropertySubType subtype)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
struct BMOpSlot slots_out[BMO_OP_MAX_SLOTS]
struct ReportList * reports
bool WM_gizmo_group_type_ensure_ptr(wmGizmoGroupType *gzgt)
void WM_gizmo_group_type_reinit_ptr(Main *bmain, wmGizmoGroupType *gzgt)
wmGizmoGroupType * WM_gizmogrouptype_append(void(*wtfunc)(wmGizmoGroupType *))
wmGizmoGroupType * WM_gizmogrouptype_find(const StringRef idname, bool quiet)