45 float cent[3], axis[3];
46 const float d[3] = {0.0f, 0.0f, 0.0f};
54 const bool use_auto_merge = (
RNA_boolean_get(op->
ptr,
"use_auto_merge") && (dupli ==
false) &&
65 for (
Object *obedit : objects) {
74 "spin geom=%hvef cent=%v axis=%v dvec=%v steps=%i angle=%f space=%m4 "
75 "use_normal_flip=%b use_duplicate=%b use_merge=%b",
82 obedit->object_to_world().
ptr(),
90 if (use_auto_merge ==
false) {
100 params.calc_looptris =
true;
101 params.calc_normals =
false;
102 params.is_destructive =
true;
162 if (
STR_ELEM(prop_id,
"use_auto_merge",
"use_normal_flip")) {
176 "Extrude selected vertices in a circle around the cursor in indicated viewport";
200 "Rotation for each step",
208 "Merge first/last when the angle is a full revolution");
218 "Center in global view space",
222 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)
Read Guarded memory(de)allocation.
ATTR_WARN_UNUSED_RESULT BMesh * bm
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 int edbm_spin_exec(bContext *C, wmOperator *op)
static int edbm_spin_invoke(bContext *C, wmOperator *op, const wmEvent *)
void MESH_OT_spin(wmOperatorType *ot)
static bool edbm_spin_poll_property(const bContext *, wmOperator *op, const PropertyRNA *prop)
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]
bool(* poll_property)(const bContext *C, wmOperator *op, const PropertyRNA *prop) ATTR_WARN_UNUSED_RESULT
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
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 char *idname, bool quiet)