Cleanup: merge functions with similar usage
`viewops_data_alloc` allocates and stores some pointers in `ViewOpsData` while `viewops_data_create` reuses already stored pointers and also stores others in `ViewOpsData`. The similar names and usages can confuse and in this case it also creates a dependency on the order in which these functions are called. Merging these functions simplifies usage and deduplicates code.
This commit is contained in:
parent
f79c8e25f1
commit
ec9f237a9e
|
@ -143,21 +143,6 @@ void calctrackballvec(const rcti *rect, const int event_xy[2], float r_dir[3])
|
|||
}
|
||||
}
|
||||
|
||||
void viewops_data_alloc(bContext *C, wmOperator *op)
|
||||
{
|
||||
ViewOpsData *vod = MEM_callocN(sizeof(ViewOpsData), "viewops data");
|
||||
|
||||
/* store data */
|
||||
op->customdata = vod;
|
||||
vod->bmain = CTX_data_main(C);
|
||||
vod->depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
|
||||
vod->scene = CTX_data_scene(C);
|
||||
vod->area = CTX_wm_area(C);
|
||||
vod->region = CTX_wm_region(C);
|
||||
vod->v3d = vod->area->spacedata.first;
|
||||
vod->rv3d = vod->region->regiondata;
|
||||
}
|
||||
|
||||
void view3d_orbit_apply_dyn_ofs(float r_ofs[3],
|
||||
const float ofs_old[3],
|
||||
const float viewquat_old[4],
|
||||
|
@ -294,8 +279,19 @@ void viewops_data_create(bContext *C,
|
|||
const wmEvent *event,
|
||||
enum eViewOpsFlag viewops_flag)
|
||||
{
|
||||
Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
|
||||
ViewOpsData *vod = op->customdata;
|
||||
ViewOpsData *vod = MEM_callocN(sizeof(ViewOpsData), __func__);
|
||||
|
||||
/* Store data. */
|
||||
op->customdata = vod;
|
||||
vod->bmain = CTX_data_main(C);
|
||||
vod->depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
|
||||
vod->scene = CTX_data_scene(C);
|
||||
vod->area = CTX_wm_area(C);
|
||||
vod->region = CTX_wm_region(C);
|
||||
vod->v3d = vod->area->spacedata.first;
|
||||
vod->rv3d = vod->region->regiondata;
|
||||
|
||||
Depsgraph *depsgraph = vod->depsgraph;
|
||||
RegionView3D *rv3d = vod->rv3d;
|
||||
|
||||
/* Could do this more nicely. */
|
||||
|
@ -1569,7 +1565,6 @@ static int viewpan_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
y = 25;
|
||||
}
|
||||
|
||||
viewops_data_alloc(C, op);
|
||||
viewops_data_create(C, op, event, (viewops_flag_from_prefs() & ~VIEWOPS_FLAG_ORBIT_SELECT));
|
||||
ViewOpsData *vod = op->customdata;
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ enum eViewOpsFlag {
|
|||
|
||||
/** Generic View Operator Custom-Data */
|
||||
typedef struct ViewOpsData {
|
||||
/** Context pointers (assigned by #viewops_data_alloc). */
|
||||
/** Context pointers (assigned by #viewops_data_create). */
|
||||
struct Main *bmain;
|
||||
struct Scene *scene;
|
||||
struct ScrArea *area;
|
||||
|
@ -166,14 +166,10 @@ bool view3d_orbit_calc_center(struct bContext *C, float r_dyn_ofs[3]);
|
|||
|
||||
void view3d_operator_properties_common(struct wmOperatorType *ot, const enum eV3D_OpPropFlag flag);
|
||||
|
||||
/**
|
||||
* Allocate and fill in context pointers for #ViewOpsData
|
||||
*/
|
||||
void viewops_data_alloc(struct bContext *C, struct wmOperator *op);
|
||||
void viewops_data_free(struct bContext *C, struct wmOperator *op);
|
||||
|
||||
/**
|
||||
* Calculate the values for #ViewOpsData
|
||||
* Allocate, fill in context pointers and calculate the values for #ViewOpsData
|
||||
*/
|
||||
void viewops_data_create(struct bContext *C,
|
||||
struct wmOperator *op,
|
||||
|
|
|
@ -239,8 +239,14 @@ static int viewdolly_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
const bool use_cursor_init = RNA_boolean_get(op->ptr, "use_cursor_init");
|
||||
|
||||
/* makes op->customdata */
|
||||
viewops_data_alloc(C, op);
|
||||
viewops_data_create(C,
|
||||
op,
|
||||
event,
|
||||
(viewops_flag_from_prefs() & ~VIEWOPS_FLAG_ORBIT_SELECT) |
|
||||
(use_cursor_init ? VIEWOPS_FLAG_USE_MOUSE_INIT : 0));
|
||||
vod = op->customdata;
|
||||
|
||||
ED_view3d_smooth_view_force_finish(C, vod->v3d, vod->region);
|
||||
|
@ -259,14 +265,6 @@ static int viewdolly_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
ED_region_tag_redraw(vod->region);
|
||||
}
|
||||
|
||||
const bool use_cursor_init = RNA_boolean_get(op->ptr, "use_cursor_init");
|
||||
|
||||
viewops_data_create(C,
|
||||
op,
|
||||
event,
|
||||
(viewops_flag_from_prefs() & ~VIEWOPS_FLAG_ORBIT_SELECT) |
|
||||
(use_cursor_init ? VIEWOPS_FLAG_USE_MOUSE_INIT : 0));
|
||||
|
||||
/* if one or the other zoom position aren't set, set from event */
|
||||
if (!RNA_struct_property_is_set(op->ptr, "mx") || !RNA_struct_property_is_set(op->ptr, "my")) {
|
||||
RNA_int_set(op->ptr, "mx", event->xy[0]);
|
||||
|
|
|
@ -132,7 +132,6 @@ static int viewmove_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
const bool use_cursor_init = RNA_boolean_get(op->ptr, "use_cursor_init");
|
||||
|
||||
/* makes op->customdata */
|
||||
viewops_data_alloc(C, op);
|
||||
viewops_data_create(C,
|
||||
op,
|
||||
event,
|
||||
|
|
|
@ -378,7 +378,6 @@ static int ndof_orbit_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
|
||||
const wmNDOFMotionData *ndof = event->customdata;
|
||||
|
||||
viewops_data_alloc(C, op);
|
||||
viewops_data_create(C, op, event, (viewops_flag_from_prefs() & ~VIEWOPS_FLAG_DEPTH_NAVIGATE));
|
||||
vod = op->customdata;
|
||||
|
||||
|
@ -458,7 +457,6 @@ static int ndof_orbit_zoom_invoke(bContext *C, wmOperator *op, const wmEvent *ev
|
|||
|
||||
const wmNDOFMotionData *ndof = event->customdata;
|
||||
|
||||
viewops_data_alloc(C, op);
|
||||
viewops_data_create(C, op, event, (viewops_flag_from_prefs() & ~VIEWOPS_FLAG_DEPTH_NAVIGATE));
|
||||
|
||||
vod = op->customdata;
|
||||
|
|
|
@ -220,7 +220,6 @@ static int viewroll_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
}
|
||||
else {
|
||||
/* makes op->customdata */
|
||||
viewops_data_alloc(C, op);
|
||||
viewops_data_create(C, op, event, viewops_flag_from_prefs());
|
||||
vod = op->customdata;
|
||||
vod->init.dial = BLI_dial_init((const float[2]){BLI_rcti_cent_x(&vod->region->winrct),
|
||||
|
|
|
@ -383,17 +383,16 @@ static int viewrotate_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
const bool use_cursor_init = RNA_boolean_get(op->ptr, "use_cursor_init");
|
||||
|
||||
/* makes op->customdata */
|
||||
viewops_data_alloc(C, op);
|
||||
vod = op->customdata;
|
||||
|
||||
ED_view3d_smooth_view_force_finish(C, vod->v3d, vod->region);
|
||||
|
||||
viewops_data_create(C,
|
||||
op,
|
||||
event,
|
||||
viewops_flag_from_prefs() | VIEWOPS_FLAG_PERSP_ENSURE |
|
||||
(use_cursor_init ? VIEWOPS_FLAG_USE_MOUSE_INIT : 0));
|
||||
|
||||
vod = op->customdata;
|
||||
|
||||
ED_view3d_smooth_view_force_finish(C, vod->v3d, vod->region);
|
||||
|
||||
if (ELEM(event->type, MOUSEPAN, MOUSEROTATE)) {
|
||||
/* Rotate direction we keep always same */
|
||||
int event_xy[2];
|
||||
|
|
|
@ -512,7 +512,6 @@ static int viewzoom_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
|||
const bool use_cursor_init = RNA_boolean_get(op->ptr, "use_cursor_init");
|
||||
|
||||
/* makes op->customdata */
|
||||
viewops_data_alloc(C, op);
|
||||
viewops_data_create(C,
|
||||
op,
|
||||
event,
|
||||
|
|
Loading…
Reference in New Issue