3D View: remove 3D cursor

Use 3D cursor from the scene (was previously used for local-view).
This commit is contained in:
Campbell Barton 2018-11-26 13:49:17 +11:00
parent b4e037fe14
commit 7493848008
48 changed files with 114 additions and 244 deletions

@ -61,10 +61,7 @@ def add_object_align_init(context, operator):
if operator and properties.is_property_set("location"): if operator and properties.is_property_set("location"):
location = Matrix.Translation(Vector(properties.location)) location = Matrix.Translation(Vector(properties.location))
else: else:
if space_data: # local view cursor is detected below location = Matrix.Translation(context.scene.cursor_location)
location = Matrix.Translation(space_data.cursor_location)
else:
location = Matrix.Translation(context.scene.cursor_location)
if operator: if operator:
properties.location = location.to_translation() properties.location = location.to_translation()

@ -891,7 +891,7 @@ class LoadImageAsEmpty:
def execute(self, context): def execute(self, context):
scene = context.scene scene = context.scene
space = context.space_data space = context.space_data
cursor = (space if space and space.type == 'VIEW_3D' else scene).cursor_location cursor = scene.cursor_location
try: try:
image = bpy.data.images.load(self.filepath, check_existing=True) image = bpy.data.images.load(self.filepath, check_existing=True)

@ -129,9 +129,8 @@ def align_objects(context,
depsgraph = context.depsgraph depsgraph = context.depsgraph
scene = context.scene scene = context.scene
space = context.space_data
cursor = (space if space and space.type == 'VIEW_3D' else scene).cursor_location cursor = scene.cursor_location
# We are accessing runtime data such as evaluated bounding box, so we need to # We are accessing runtime data such as evaluated bounding box, so we need to
# be sure it is properly updated and valid (bounding box might be lost on operator # be sure it is properly updated and valid (bounding box might be lost on operator

@ -4028,9 +4028,9 @@ class VIEW3D_PT_view3d_cursor(Panel):
layout = self.layout layout = self.layout
layout.use_property_split = True layout.use_property_split = True
view = context.space_data scene = context.scene
layout.column().prop(view, "cursor_location", text="Location") layout.column().prop(scene, "cursor_location", text="Location")
class VIEW3D_PT_collections(Panel): class VIEW3D_PT_collections(Panel):

@ -1374,16 +1374,6 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
for (Scene *scene = bmain->scene.first; scene; scene = scene->id.next) { for (Scene *scene = bmain->scene.first; scene; scene = scene->id.next) {
unit_qt(scene->cursor.rotation); unit_qt(scene->cursor.rotation);
} }
for (bScreen *screen = bmain->screen.first; screen; screen = screen->id.next) {
for (ScrArea *sa = screen->areabase.first; sa; sa = sa->next) {
for (SpaceLink *sl = sa->spacedata.first; sl; sl = sl->next) {
if (sl->spacetype == SPACE_VIEW3D) {
View3D *v3d = (View3D *)sl;
unit_qt(v3d->cursor.rotation);
}
}
}
}
} }
} }

@ -245,7 +245,6 @@ GPUBatch *DRW_gpencil_get_buffer_stroke_geom(bGPdata *gpd, short thickness)
{ {
const DRWContextState *draw_ctx = DRW_context_state_get(); const DRWContextState *draw_ctx = DRW_context_state_get();
Scene *scene = draw_ctx->scene; Scene *scene = draw_ctx->scene;
View3D *v3d = draw_ctx->v3d;
ARegion *ar = draw_ctx->ar; ARegion *ar = draw_ctx->ar;
RegionView3D *rv3d = draw_ctx->rv3d; RegionView3D *rv3d = draw_ctx->rv3d;
ToolSettings *ts = scene->toolsettings; ToolSettings *ts = scene->toolsettings;
@ -274,7 +273,7 @@ GPUBatch *DRW_gpencil_get_buffer_stroke_geom(bGPdata *gpd, short thickness)
/* get origin to reproject point */ /* get origin to reproject point */
float origin[3]; float origin[3];
bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd); bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd);
ED_gp_get_drawing_reference(v3d, scene, ob, gpl, ts->gpencil_v3d_align, origin); ED_gp_get_drawing_reference(scene, ob, gpl, ts->gpencil_v3d_align, origin);
for (int i = 0; i < totpoints; i++, tpt++) { for (int i = 0; i < totpoints; i++, tpt++) {
ED_gpencil_tpoint_to_point(ar, origin, tpt, &pt); ED_gpencil_tpoint_to_point(ar, origin, tpt, &pt);
@ -323,7 +322,6 @@ GPUBatch *DRW_gpencil_get_buffer_point_geom(bGPdata *gpd, short thickness)
{ {
const DRWContextState *draw_ctx = DRW_context_state_get(); const DRWContextState *draw_ctx = DRW_context_state_get();
Scene *scene = draw_ctx->scene; Scene *scene = draw_ctx->scene;
View3D *v3d = draw_ctx->v3d;
ARegion *ar = draw_ctx->ar; ARegion *ar = draw_ctx->ar;
RegionView3D *rv3d = draw_ctx->rv3d; RegionView3D *rv3d = draw_ctx->rv3d;
ToolSettings *ts = scene->toolsettings; ToolSettings *ts = scene->toolsettings;
@ -352,7 +350,7 @@ GPUBatch *DRW_gpencil_get_buffer_point_geom(bGPdata *gpd, short thickness)
/* get origin to reproject point */ /* get origin to reproject point */
float origin[3]; float origin[3];
bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd); bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd);
ED_gp_get_drawing_reference(v3d, scene, ob, gpl, ts->gpencil_v3d_align, origin); ED_gp_get_drawing_reference(scene, ob, gpl, ts->gpencil_v3d_align, origin);
for (int i = 0; i < totpoints; i++, tpt++) { for (int i = 0; i < totpoints; i++, tpt++) {
ED_gpencil_tpoint_to_point(ar, origin, tpt, &pt); ED_gpencil_tpoint_to_point(ar, origin, tpt, &pt);
@ -384,7 +382,6 @@ GPUBatch *DRW_gpencil_get_buffer_fill_geom(bGPdata *gpd)
const DRWContextState *draw_ctx = DRW_context_state_get(); const DRWContextState *draw_ctx = DRW_context_state_get();
Scene *scene = draw_ctx->scene; Scene *scene = draw_ctx->scene;
View3D *v3d = draw_ctx->v3d;
ARegion *ar = draw_ctx->ar; ARegion *ar = draw_ctx->ar;
ToolSettings *ts = scene->toolsettings; ToolSettings *ts = scene->toolsettings;
Object *ob = draw_ctx->obact; Object *ob = draw_ctx->obact;
@ -392,7 +389,7 @@ GPUBatch *DRW_gpencil_get_buffer_fill_geom(bGPdata *gpd)
/* get origin to reproject point */ /* get origin to reproject point */
float origin[3]; float origin[3];
bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd); bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd);
ED_gp_get_drawing_reference(v3d, scene, ob, gpl, ts->gpencil_v3d_align, origin); ED_gp_get_drawing_reference(scene, ob, gpl, ts->gpencil_v3d_align, origin);
int tot_triangles = totpoints - 2; int tot_triangles = totpoints - 2;
/* allocate memory for temporary areas */ /* allocate memory for temporary areas */

@ -165,7 +165,6 @@ static bool is_cursor_visible(const DRWContextState *draw_ctx, Scene *scene, Vie
void DRW_draw_cursor(void) void DRW_draw_cursor(void)
{ {
const DRWContextState *draw_ctx = DRW_context_state_get(); const DRWContextState *draw_ctx = DRW_context_state_get();
View3D *v3d = draw_ctx->v3d;
ARegion *ar = draw_ctx->ar; ARegion *ar = draw_ctx->ar;
Scene *scene = draw_ctx->scene; Scene *scene = draw_ctx->scene;
ViewLayer *view_layer = draw_ctx->view_layer; ViewLayer *view_layer = draw_ctx->view_layer;
@ -176,7 +175,7 @@ void DRW_draw_cursor(void)
if (is_cursor_visible(draw_ctx, scene, view_layer)) { if (is_cursor_visible(draw_ctx, scene, view_layer)) {
int co[2]; int co[2];
const View3DCursor *cursor = ED_view3d_cursor3d_get(scene, v3d); const View3DCursor *cursor = &scene->cursor;
if (ED_view3d_project_int_global( if (ED_view3d_project_int_global(
ar, cursor->location, co, V3D_PROJ_TEST_NOP | V3D_PROJ_TEST_CLIP_NEAR) == V3D_PROJ_RET_OK) ar, cursor->location, co, V3D_PROJ_TEST_NOP | V3D_PROJ_TEST_CLIP_NEAR) == V3D_PROJ_RET_OK)
{ {

@ -131,7 +131,6 @@ EditBone *ED_armature_ebone_add_primitive(Object *obedit_arm, float length, bool
*/ */
static int armature_click_extrude_exec(bContext *C, wmOperator *UNUSED(op)) static int armature_click_extrude_exec(bContext *C, wmOperator *UNUSED(op))
{ {
View3D *v3d;
bArmature *arm; bArmature *arm;
EditBone *ebone, *newbone, *flipbone; EditBone *ebone, *newbone, *flipbone;
float mat[3][3], imat[3][3]; float mat[3][3], imat[3][3];
@ -140,7 +139,6 @@ static int armature_click_extrude_exec(bContext *C, wmOperator *UNUSED(op))
Scene *scene; Scene *scene;
scene = CTX_data_scene(C); scene = CTX_data_scene(C);
v3d = CTX_wm_view3d(C);
obedit = CTX_data_edit_object(C); obedit = CTX_data_edit_object(C);
arm = obedit->data; arm = obedit->data;
@ -196,7 +194,7 @@ static int armature_click_extrude_exec(bContext *C, wmOperator *UNUSED(op))
newbone->flag |= BONE_CONNECTED; newbone->flag |= BONE_CONNECTED;
} }
const View3DCursor *curs = ED_view3d_cursor3d_get(scene, v3d); const View3DCursor *curs = &scene->cursor;
copy_v3_v3(newbone->tail, curs->location); copy_v3_v3(newbone->tail, curs->location);
sub_v3_v3v3(newbone->tail, newbone->tail, obedit->obmat[3]); sub_v3_v3v3(newbone->tail, newbone->tail, obedit->obmat[3]);
@ -236,7 +234,7 @@ static int armature_click_extrude_invoke(bContext *C, wmOperator *op, const wmEv
ar = CTX_wm_region(C); ar = CTX_wm_region(C);
v3d = CTX_wm_view3d(C); v3d = CTX_wm_view3d(C);
View3DCursor *cursor = ED_view3d_cursor3d_get(scene, v3d); View3DCursor *cursor = &scene->cursor;
copy_v3_v3(oldcurs, cursor->location); copy_v3_v3(oldcurs, cursor->location);
@ -1063,7 +1061,7 @@ static int armature_bone_primitive_add_exec(bContext *C, wmOperator *op)
RNA_string_get(op->ptr, "name", name); RNA_string_get(op->ptr, "name", name);
copy_v3_v3(curs, ED_view3d_cursor3d_get(CTX_data_scene(C), CTX_wm_view3d(C))->location); copy_v3_v3(curs, CTX_data_scene(C)->cursor.location);
/* Get inverse point for head and orientation for tail */ /* Get inverse point for head and orientation for tail */
invert_m4_m4(obedit->imat, obedit->obmat); invert_m4_m4(obedit->imat, obedit->obmat);

@ -325,9 +325,8 @@ static int armature_calc_roll_exec(bContext *C, wmOperator *op)
if (type == CALC_ROLL_CURSOR) { /* Cursor */ if (type == CALC_ROLL_CURSOR) { /* Cursor */
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C); /* can be NULL */
float cursor_local[3]; float cursor_local[3];
const View3DCursor *cursor = ED_view3d_cursor3d_get(scene, v3d); const View3DCursor *cursor = &scene->cursor;
invert_m4_m4(ob->imat, ob->obmat); invert_m4_m4(ob->imat, ob->obmat);
copy_v3_v3(cursor_local, cursor->location); copy_v3_v3(cursor_local, cursor->location);
@ -728,7 +727,7 @@ static int armature_fill_bones_exec(bContext *C, wmOperator *op)
/* Get points - cursor (tail) */ /* Get points - cursor (tail) */
invert_m4_m4(obedit->imat, obedit->obmat); invert_m4_m4(obedit->imat, obedit->obmat);
mul_v3_m4v3(curs, obedit->imat, ED_view3d_cursor3d_get(scene, v3d)->location); mul_v3_m4v3(curs, obedit->imat, scene->cursor.location);
/* Create a bone */ /* Create a bone */
newbone = add_points_bone(obedit, ebp->vec, curs); newbone = add_points_bone(obedit, ebp->vec, curs);
@ -766,7 +765,7 @@ static int armature_fill_bones_exec(bContext *C, wmOperator *op)
/* get cursor location */ /* get cursor location */
invert_m4_m4(obedit->imat, obedit->obmat); invert_m4_m4(obedit->imat, obedit->obmat);
mul_v3_m4v3(curs, obedit->imat, ED_view3d_cursor3d_get(scene, v3d)->location); mul_v3_m4v3(curs, obedit->imat, scene->cursor.location);
/* get distances */ /* get distances */
dist_sq_a = len_squared_v3v3(ebp_a->vec, curs); dist_sq_a = len_squared_v3v3(ebp_a->vec, curs);

@ -4819,14 +4819,13 @@ static int spin_exec(bContext *C, wmOperator *op)
static int spin_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event)) static int spin_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
{ {
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C);
RegionView3D *rv3d = ED_view3d_context_rv3d(C); RegionView3D *rv3d = ED_view3d_context_rv3d(C);
float axis[3] = {0.0f, 0.0f, 1.0f}; float axis[3] = {0.0f, 0.0f, 1.0f};
if (rv3d) if (rv3d)
copy_v3_v3(axis, rv3d->viewinv[2]); copy_v3_v3(axis, rv3d->viewinv[2]);
RNA_float_set_array(op->ptr, "center", ED_view3d_cursor3d_get(scene, v3d)->location); RNA_float_set_array(op->ptr, "center", scene->cursor.location);
RNA_float_set_array(op->ptr, "axis", axis); RNA_float_set_array(op->ptr, "axis", axis);
return spin_exec(C, op); return spin_exec(C, op);
@ -5303,7 +5302,7 @@ static int add_vertex_invoke(bContext *C, wmOperator *op, const wmEvent *event)
mul_v3_m4v3(location, vc.obedit->obmat, bp->vec); mul_v3_m4v3(location, vc.obedit->obmat, bp->vec);
} }
else { else {
copy_v3_v3(location, ED_view3d_cursor3d_get(vc.scene, vc.v3d)->location); copy_v3_v3(location, vc.scene->cursor.location);
} }
ED_view3d_win_to_3d_int(vc.v3d, vc.ar, location, event->mval, location); ED_view3d_win_to_3d_int(vc.v3d, vc.ar, location, event->mval, location);

@ -1121,7 +1121,7 @@ static int curve_draw_invoke(bContext *C, wmOperator *op, const wmEvent *event)
/* use view plane (when set or as fallback when surface can't be found) */ /* use view plane (when set or as fallback when surface can't be found) */
if (cdd->project.use_depth == false) { if (cdd->project.use_depth == false) {
plane_co = ED_view3d_cursor3d_get(cdd->vc.scene, v3d)->location; plane_co = cdd->vc.scene->cursor.location;
plane_no = rv3d->viewinv[2]; plane_no = rv3d->viewinv[2];
cdd->project.use_plane = true; cdd->project.use_plane = true;
} }

@ -232,8 +232,7 @@ static bool gpencil_project_check(tGPsdata *p)
/* get the reference point for stroke-point conversions */ /* get the reference point for stroke-point conversions */
static void gp_get_3d_reference(tGPsdata *p, float vec[3]) static void gp_get_3d_reference(tGPsdata *p, float vec[3])
{ {
View3D *v3d = p->sa->spacedata.first; const float *fp = p->scene->cursor.location;
const float *fp = ED_view3d_cursor3d_get(p->scene, v3d)->location;
/* use 3D-cursor */ /* use 3D-cursor */
copy_v3_v3(vec, fp); copy_v3_v3(vec, fp);

@ -479,9 +479,8 @@ static void gp_brush_grab_calc_dvec(tGP_BrushEditData *gso)
// TODO: incorporate pressure into this? // TODO: incorporate pressure into this?
// XXX: screen-space strokes in 3D space will suffer! // XXX: screen-space strokes in 3D space will suffer!
if (gso->sa->spacetype == SPACE_VIEW3D) { if (gso->sa->spacetype == SPACE_VIEW3D) {
View3D *v3d = gso->sa->spacedata.first;
RegionView3D *rv3d = gso->ar->regiondata; RegionView3D *rv3d = gso->ar->regiondata;
float *rvec = ED_view3d_cursor3d_get(gso->scene, v3d)->location; float *rvec = gso->scene->cursor.location;
float zfac = ED_view3d_calc_zfac(rv3d, rvec, NULL); float zfac = ED_view3d_calc_zfac(rv3d, rvec, NULL);
float mval_f[2]; float mval_f[2];
@ -587,9 +586,8 @@ static void gp_brush_calc_midpoint(tGP_BrushEditData *gso)
/* Convert mouse position to 3D space /* Convert mouse position to 3D space
* See: gpencil_paint.c :: gp_stroke_convertcoords() * See: gpencil_paint.c :: gp_stroke_convertcoords()
*/ */
View3D *v3d = gso->sa->spacedata.first;
RegionView3D *rv3d = gso->ar->regiondata; RegionView3D *rv3d = gso->ar->regiondata;
float *rvec = ED_view3d_cursor3d_get(gso->scene, v3d)->location; const float *rvec = gso->scene->cursor.location;
float zfac = ED_view3d_calc_zfac(rv3d, rvec, NULL); float zfac = ED_view3d_calc_zfac(rv3d, rvec, NULL);
float mval_f[2]; float mval_f[2];

@ -174,7 +174,7 @@ static void gp_strokepoint_convertcoords(
copy_v3_v3(p3d, &pt->x); copy_v3_v3(p3d, &pt->x);
} }
else { else {
const float *fp = ED_view3d_cursor3d_get(scene, v3d)->location; const float *fp = scene->cursor.location;
float mvalf[2]; float mvalf[2];
/* get screen coordinate */ /* get screen coordinate */

@ -2196,12 +2196,11 @@ static int gp_snap_to_cursor(bContext *C, wmOperator *op)
bGPdata *gpd = ED_gpencil_data_get_active(C); bGPdata *gpd = ED_gpencil_data_get_active(C);
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C);
Depsgraph *depsgraph = CTX_data_depsgraph(C); Depsgraph *depsgraph = CTX_data_depsgraph(C);
Object *obact = CTX_data_active_object(C); Object *obact = CTX_data_active_object(C);
const bool use_offset = RNA_boolean_get(op->ptr, "use_offset"); const bool use_offset = RNA_boolean_get(op->ptr, "use_offset");
const float *cursor_global = ED_view3d_cursor3d_get(scene, v3d)->location; const float *cursor_global = scene->cursor.location;
for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) { for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
/* only editable and visible layers are considered */ /* only editable and visible layers are considered */
@ -2288,7 +2287,7 @@ static int gp_snap_cursor_to_sel(bContext *C, wmOperator *UNUSED(op))
Depsgraph *depsgraph = CTX_data_depsgraph(C); Depsgraph *depsgraph = CTX_data_depsgraph(C);
Object *obact = CTX_data_active_object(C); Object *obact = CTX_data_active_object(C);
float *cursor = ED_view3d_cursor3d_get(scene, v3d)->location; float *cursor = scene->cursor.location;
float centroid[3] = {0.0f}; float centroid[3] = {0.0f};
float min[3], max[3]; float min[3], max[3];
size_t count = 0; size_t count = 0;
@ -2857,10 +2856,8 @@ static int gp_strokes_reproject_exec(bContext *C, wmOperator *op)
ToolSettings *ts = CTX_data_tool_settings(C); ToolSettings *ts = CTX_data_tool_settings(C);
Depsgraph *depsgraph = CTX_data_depsgraph(C); Depsgraph *depsgraph = CTX_data_depsgraph(C);
Object *ob = CTX_data_active_object(C); Object *ob = CTX_data_active_object(C);
ScrArea *sa = CTX_wm_area(C);
ARegion *ar = CTX_wm_region(C); ARegion *ar = CTX_wm_region(C);
RegionView3D *rv3d = ar->regiondata; RegionView3D *rv3d = ar->regiondata;
View3D *v3d = sa->spacedata.first;
GP_SpaceConversion gsc = {NULL}; GP_SpaceConversion gsc = {NULL};
eGP_ReprojectModes mode = RNA_enum_get(op->ptr, "type"); eGP_ReprojectModes mode = RNA_enum_get(op->ptr, "type");
@ -2905,7 +2902,7 @@ static int gp_strokes_reproject_exec(bContext *C, wmOperator *op)
/* Project stroke in one axis */ /* Project stroke in one axis */
if (ELEM(mode, GP_REPROJECT_FRONT, GP_REPROJECT_SIDE, GP_REPROJECT_TOP)) { if (ELEM(mode, GP_REPROJECT_FRONT, GP_REPROJECT_SIDE, GP_REPROJECT_TOP)) {
ED_gp_get_drawing_reference(v3d, scene, ob, gpl, ED_gp_get_drawing_reference(scene, ob, gpl,
ts->gpencil_v3d_align, origin); ts->gpencil_v3d_align, origin);
int axis = 0; int axis = 0;

@ -880,10 +880,10 @@ static void gpencil_stroke_from_buffer(tGPDfill *tgpf)
for (int i = 0; i < tgpf->sbuffer_size && point2D; i++, point2D++, pt++) { for (int i = 0; i < tgpf->sbuffer_size && point2D; i++, point2D++, pt++) {
/* convert screen-coordinates to 3D coordinates */ /* convert screen-coordinates to 3D coordinates */
gp_stroke_convertcoords_tpoint( gp_stroke_convertcoords_tpoint(
tgpf->scene, tgpf->ar, tgpf->v3d, tgpf->ob, tgpf->scene, tgpf->ar, tgpf->ob,
tgpf->gpl, point2D, tgpf->gpl, point2D,
tgpf->depth_arr ? tgpf->depth_arr + i : NULL, tgpf->depth_arr ? tgpf->depth_arr + i : NULL,
&pt->x); &pt->x);
pt->pressure = 1.0f; pt->pressure = 1.0f;
pt->strength = 1.0f; pt->strength = 1.0f;
@ -920,7 +920,7 @@ static void gpencil_stroke_from_buffer(tGPDfill *tgpf)
if ((tgpf->lock_axis > GP_LOCKAXIS_VIEW) && ((ts->gpencil_v3d_align & GP_PROJECT_DEPTH_VIEW) == 0)) { if ((tgpf->lock_axis > GP_LOCKAXIS_VIEW) && ((ts->gpencil_v3d_align & GP_PROJECT_DEPTH_VIEW) == 0)) {
float origin[3]; float origin[3];
ED_gp_get_drawing_reference( ED_gp_get_drawing_reference(
tgpf->v3d, tgpf->scene, tgpf->ob, tgpf->gpl, tgpf->scene, tgpf->ob, tgpf->gpl,
ts->gpencil_v3d_align, origin); ts->gpencil_v3d_align, origin);
ED_gp_project_stroke_to_plane( ED_gp_project_stroke_to_plane(
tgpf->ob, tgpf->rv3d, gps, origin, tgpf->ob, tgpf->rv3d, gps, origin,

@ -221,7 +221,7 @@ bool gp_point_xy_to_3d(GP_SpaceConversion *gsc, struct Scene *scene, const float
/* helper to convert 2d to 3d */ /* helper to convert 2d to 3d */
void gp_stroke_convertcoords_tpoint( void gp_stroke_convertcoords_tpoint(
struct Scene *scene, struct ARegion *ar, struct Scene *scene, struct ARegion *ar,
struct View3D *v3d, struct Object *ob, struct Object *ob,
bGPDlayer *gpl, const struct tGPspoint *point2D, bGPDlayer *gpl, const struct tGPspoint *point2D,
float *depth, float out[3]); float *depth, float out[3]);

@ -285,12 +285,11 @@ static bool gpencil_project_check(tGPsdata *p)
/* get the reference point for stroke-point conversions */ /* get the reference point for stroke-point conversions */
static void gp_get_3d_reference(tGPsdata *p, float vec[3]) static void gp_get_3d_reference(tGPsdata *p, float vec[3])
{ {
View3D *v3d = p->sa->spacedata.first;
Object *ob = NULL; Object *ob = NULL;
if (p->ownerPtr.type == &RNA_Object) { if (p->ownerPtr.type == &RNA_Object) {
ob = (Object *)p->ownerPtr.data; ob = (Object *)p->ownerPtr.data;
} }
ED_gp_get_drawing_reference(v3d, p->scene, ob, p->gpl, *p->align_flag, vec); ED_gp_get_drawing_reference(p->scene, ob, p->gpl, *p->align_flag, vec);
} }
/* Stroke Editing ---------------------------- */ /* Stroke Editing ---------------------------- */
@ -1774,7 +1773,6 @@ static bool gp_session_initdata(bContext *C, wmOperator *op, tGPsdata *p)
ARegion *ar = CTX_wm_region(C); ARegion *ar = CTX_wm_region(C);
ToolSettings *ts = CTX_data_tool_settings(C); ToolSettings *ts = CTX_data_tool_settings(C);
Object *obact = CTX_data_active_object(C); Object *obact = CTX_data_active_object(C);
View3D *v3d = curarea->spacedata.first;
/* make sure the active view (at the starting time) is a 3d-view */ /* make sure the active view (at the starting time) is a 3d-view */
if (curarea == NULL) { if (curarea == NULL) {
@ -1818,7 +1816,7 @@ static bool gp_session_initdata(bContext *C, wmOperator *op, tGPsdata *p)
} }
/* if active object doesn't exist or isn't a GP Object, create one */ /* if active object doesn't exist or isn't a GP Object, create one */
float *cur = ED_view3d_cursor3d_get(p->scene, v3d)->location; const float *cur = p->scene->cursor.location;
if ((!obact) || (obact->type != OB_GPENCIL)) { if ((!obact) || (obact->type != OB_GPENCIL)) {
/* create new default object */ /* create new default object */
obact = ED_add_gpencil_object(C, p->scene, cur); obact = ED_add_gpencil_object(C, p->scene, cur);

@ -348,7 +348,7 @@ static void gp_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi)
/* convert screen-coordinates to 3D coordinates */ /* convert screen-coordinates to 3D coordinates */
gp_stroke_convertcoords_tpoint(tgpi->scene, tgpi->ar, tgpi->v3d, tgpi->ob, tgpi->gpl, p2d, NULL, &pt->x); gp_stroke_convertcoords_tpoint(tgpi->scene, tgpi->ar, tgpi->ob, tgpi->gpl, p2d, NULL, &pt->x);
pt->pressure = 1.0f; pt->pressure = 1.0f;
pt->strength = tgpi->brush->gpencil_settings->draw_strength; pt->strength = tgpi->brush->gpencil_settings->draw_strength;
@ -365,7 +365,7 @@ static void gp_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi)
if (tgpi->lock_axis > GP_LOCKAXIS_VIEW) { if (tgpi->lock_axis > GP_LOCKAXIS_VIEW) {
bGPDspoint *tpt = gps->points; bGPDspoint *tpt = gps->points;
float origin[3]; float origin[3];
ED_gp_get_drawing_reference(tgpi->v3d, tgpi->scene, tgpi->ob, tgpi->gpl, ED_gp_get_drawing_reference(tgpi->scene, tgpi->ob, tgpi->gpl,
ts->gpencil_v3d_align, origin); ts->gpencil_v3d_align, origin);
for (int i = 0; i < gps->totpoints; i++, tpt++) { for (int i = 0; i < gps->totpoints; i++, tpt++) {

@ -737,9 +737,8 @@ void gp_point_to_xy_fl(
*/ */
bool gp_point_xy_to_3d(GP_SpaceConversion *gsc, Scene *scene, const float screen_co[2], float r_out[3]) bool gp_point_xy_to_3d(GP_SpaceConversion *gsc, Scene *scene, const float screen_co[2], float r_out[3])
{ {
View3D *v3d = gsc->sa->spacedata.first; const RegionView3D *rv3d = gsc->ar->regiondata;
RegionView3D *rv3d = gsc->ar->regiondata; float *rvec = scene->cursor.location;
float *rvec = ED_view3d_cursor3d_get(scene, v3d)->location;
float ref[3] = {rvec[0], rvec[1], rvec[2]}; float ref[3] = {rvec[0], rvec[1], rvec[2]};
float zfac = ED_view3d_calc_zfac(rv3d, rvec, NULL); float zfac = ED_view3d_calc_zfac(rv3d, rvec, NULL);
@ -771,7 +770,7 @@ bool gp_point_xy_to_3d(GP_SpaceConversion *gsc, Scene *scene, const float screen
* \param[out] r_out: The resulting 2D point data * \param[out] r_out: The resulting 2D point data
*/ */
void gp_stroke_convertcoords_tpoint( void gp_stroke_convertcoords_tpoint(
Scene *scene, ARegion *ar, View3D *v3d, Scene *scene, ARegion *ar,
Object *ob, bGPDlayer *gpl, Object *ob, bGPDlayer *gpl,
const tGPspoint *point2D, float *depth, const tGPspoint *point2D, float *depth,
float r_out[3]) float r_out[3])
@ -793,7 +792,7 @@ void gp_stroke_convertcoords_tpoint(
/* Current method just converts each point in screen-coordinates to /* Current method just converts each point in screen-coordinates to
* 3D-coordinates using the 3D-cursor as reference. * 3D-coordinates using the 3D-cursor as reference.
*/ */
ED_gp_get_drawing_reference(v3d, scene, ob, gpl, ts->gpencil_v3d_align, rvec); ED_gp_get_drawing_reference(scene, ob, gpl, ts->gpencil_v3d_align, rvec);
zfac = ED_view3d_calc_zfac(ar->regiondata, rvec, NULL); zfac = ED_view3d_calc_zfac(ar->regiondata, rvec, NULL);
if (ED_view3d_project_float_global(ar, rvec, mval_prj, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK) { if (ED_view3d_project_float_global(ar, rvec, mval_prj, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK) {
@ -812,10 +811,10 @@ void gp_stroke_convertcoords_tpoint(
* \param[out] r_vec : Reference point found * \param[out] r_vec : Reference point found
*/ */
void ED_gp_get_drawing_reference( void ED_gp_get_drawing_reference(
View3D *v3d, Scene *scene, Object *ob, bGPDlayer *UNUSED(gpl), const Scene *scene, const Object *ob, bGPDlayer *UNUSED(gpl),
char align_flag, float r_vec[3]) char align_flag, float r_vec[3])
{ {
const float *fp = ED_view3d_cursor3d_get(scene, v3d)->location; const float *fp = scene->cursor.location;
/* if using a gpencil object at cursor mode, can use the location of the object */ /* if using a gpencil object at cursor mode, can use the location of the object */
if (align_flag & GP_PROJECT_VIEWSPACE) { if (align_flag & GP_PROJECT_VIEWSPACE) {
@ -841,7 +840,8 @@ void ED_gp_get_drawing_reference(
/** /**
* Reproject all points of the stroke to a plane locked to axis to avoid stroke offset * Reproject all points of the stroke to a plane locked to axis to avoid stroke offset
*/ */
void ED_gp_project_stroke_to_plane(Object *ob, RegionView3D *rv3d, bGPDstroke *gps, const float origin[3], const int axis) void ED_gp_project_stroke_to_plane(
const Object *ob, const RegionView3D *rv3d, bGPDstroke *gps, const float origin[3], const int axis)
{ {
float plane_normal[3]; float plane_normal[3];
float vn[3]; float vn[3];
@ -887,7 +887,8 @@ void ED_gp_project_stroke_to_plane(Object *ob, RegionView3D *rv3d, bGPDstroke *g
* Reproject given point to a plane locked to axis to avoid stroke offset * Reproject given point to a plane locked to axis to avoid stroke offset
* \param[in, out] pt : Point to affect * \param[in, out] pt : Point to affect
*/ */
void ED_gp_project_point_to_plane(Object *ob, RegionView3D *rv3d, const float origin[3], const int axis, bGPDspoint *pt) void ED_gp_project_point_to_plane(
const Object *ob, const RegionView3D *rv3d, const float origin[3], const int axis, bGPDspoint *pt)
{ {
float plane_normal[3]; float plane_normal[3];
float vn[3]; float vn[3];

@ -227,9 +227,15 @@ void ED_gpencil_add_defaults(struct bContext *C);
/* set object modes */ /* set object modes */
void ED_gpencil_setup_modes(struct bContext *C, struct bGPdata *gpd, int newmode); void ED_gpencil_setup_modes(struct bContext *C, struct bGPdata *gpd, int newmode);
void ED_gp_project_stroke_to_plane(struct Object *ob, struct RegionView3D *rv3d, struct bGPDstroke *gps, const float origin[3], const int axis); void ED_gp_project_stroke_to_plane(
void ED_gp_project_point_to_plane(struct Object *ob, struct RegionView3D *rv3d, const float origin[3], const int axis, struct bGPDspoint *pt); const struct Object *ob, const struct RegionView3D *rv3d,
void ED_gp_get_drawing_reference(struct View3D *v3d, struct Scene *scene, struct Object *ob, struct bGPDlayer *gpl, char align_flag, float vec[3]); struct bGPDstroke *gps, const float origin[3], const int axis);
void ED_gp_project_point_to_plane(
const struct Object *ob, const struct RegionView3D *rv3d,
const float origin[3], const int axis, struct bGPDspoint *pt);
void ED_gp_get_drawing_reference(
const struct Scene *scene, const struct Object *ob,
struct bGPDlayer *gpl, char align_flag, float vec[3]);
/* set sculpt cursor */ /* set sculpt cursor */
void ED_gpencil_toggle_brush_cursor(struct bContext *C, bool enable, void *customdata); void ED_gpencil_toggle_brush_cursor(struct bContext *C, bool enable, void *customdata);

@ -209,7 +209,7 @@ void ED_transform_calc_orientation_from_type(
void ED_transform_calc_orientation_from_type_ex( void ED_transform_calc_orientation_from_type_ex(
const struct bContext *C, float r_mat[3][3], const struct bContext *C, float r_mat[3][3],
/* extra args */ /* extra args */
struct Scene *scene, struct View3D *v3d, struct RegionView3D *rv3d, struct Object *ob, struct Object *obedit, struct Scene *scene, struct RegionView3D *rv3d, struct Object *ob, struct Object *obedit,
const short orientation_type, const int pivot_point); const short orientation_type, const int pivot_point);
struct TransformBounds { struct TransformBounds {

@ -109,9 +109,8 @@ enum eV3DCursorOrient {
}; };
void ED_view3d_background_color_get(const struct Scene *scene, const struct View3D *v3d, float r_color[3]); void ED_view3d_background_color_get(const struct Scene *scene, const struct View3D *v3d, float r_color[3]);
struct View3DCursor *ED_view3d_cursor3d_get(struct Scene *scene, struct View3D *v3d); void ED_view3d_cursor3d_calc_mat3(const struct Scene *scene, float mat[3][3]);
void ED_view3d_cursor3d_calc_mat3(const struct Scene *scene, const struct View3D *v3d, float mat[3][3]); void ED_view3d_cursor3d_calc_mat4(const struct Scene *scene, float mat[4][4]);
void ED_view3d_cursor3d_calc_mat4(const struct Scene *scene, const struct View3D *v3d, float mat[4][4]);
void ED_view3d_cursor3d_position( void ED_view3d_cursor3d_position(
struct bContext *C, const int mval[2], struct bContext *C, const int mval[2],
const bool use_depth, const bool use_depth,

@ -70,7 +70,6 @@ static void calc_initial_placement_point_from_view(
{ {
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C);
ARegion *ar = CTX_wm_region(C); ARegion *ar = CTX_wm_region(C);
RegionView3D *rv3d = ar->regiondata; RegionView3D *rv3d = ar->regiondata;
@ -78,7 +77,7 @@ static void calc_initial_placement_point_from_view(
float cursor_matrix[4][4]; float cursor_matrix[4][4];
float orient_matrix[3][3]; float orient_matrix[3][3];
ED_view3d_cursor3d_calc_mat4(scene, v3d, cursor_matrix); ED_view3d_cursor3d_calc_mat4(scene, cursor_matrix);
float dots[3] = { float dots[3] = {
dot_v3v3(rv3d->viewinv[2], cursor_matrix[0]), dot_v3v3(rv3d->viewinv[2], cursor_matrix[0]),

@ -242,7 +242,6 @@ static int mesh_bisect_exec(bContext *C, wmOperator *op)
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
/* both can be NULL, fallbacks values are used */ /* both can be NULL, fallbacks values are used */
View3D *v3d = CTX_wm_view3d(C);
RegionView3D *rv3d = ED_view3d_context_rv3d(C); RegionView3D *rv3d = ED_view3d_context_rv3d(C);
int ret = OPERATOR_CANCELLED; int ret = OPERATOR_CANCELLED;
@ -264,7 +263,7 @@ static int mesh_bisect_exec(bContext *C, wmOperator *op)
RNA_property_float_get_array(op->ptr, prop_plane_co, plane_co); RNA_property_float_get_array(op->ptr, prop_plane_co, plane_co);
} }
else { else {
copy_v3_v3(plane_co, ED_view3d_cursor3d_get(scene, v3d)->location); copy_v3_v3(plane_co, scene->cursor.location);
RNA_property_float_set_array(op->ptr, prop_plane_co, plane_co); RNA_property_float_set_array(op->ptr, prop_plane_co, plane_co);
} }

@ -823,7 +823,7 @@ static int edbm_dupli_extrude_cursor_invoke(bContext *C, wmOperator *op, const w
} }
else { else {
/* This only runs for the active object. */ /* This only runs for the active object. */
const float *cursor = ED_view3d_cursor3d_get(vc.scene, vc.v3d)->location; const float *cursor = vc.scene->cursor.location;
BMOperator bmop; BMOperator bmop;
BMOIter oiter; BMOIter oiter;

@ -171,13 +171,12 @@ static int edbm_screw_exec(bContext *C, wmOperator *op)
static int edbm_screw_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event)) static int edbm_screw_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
{ {
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C);
RegionView3D *rv3d = ED_view3d_context_rv3d(C); RegionView3D *rv3d = ED_view3d_context_rv3d(C);
PropertyRNA *prop; PropertyRNA *prop;
prop = RNA_struct_find_property(op->ptr, "center"); prop = RNA_struct_find_property(op->ptr, "center");
if (!RNA_property_is_set(op->ptr, prop)) { if (!RNA_property_is_set(op->ptr, prop)) {
RNA_property_float_set_array(op->ptr, prop, ED_view3d_cursor3d_get(scene, v3d)->location); RNA_property_float_set_array(op->ptr, prop, scene->cursor.location);
} }
if (rv3d) { if (rv3d) {
prop = RNA_struct_find_property(op->ptr, "axis"); prop = RNA_struct_find_property(op->ptr, "axis");

@ -130,7 +130,7 @@ static int edbm_spin_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(e
PropertyRNA *prop; PropertyRNA *prop;
prop = RNA_struct_find_property(op->ptr, "center"); prop = RNA_struct_find_property(op->ptr, "center");
if (!RNA_property_is_set(op->ptr, prop)) { if (!RNA_property_is_set(op->ptr, prop)) {
RNA_property_float_set_array(op->ptr, prop, ED_view3d_cursor3d_get(scene, v3d)->location); RNA_property_float_set_array(op->ptr, prop, scene->cursor.location);
} }
if (rv3d) { if (rv3d) {
prop = RNA_struct_find_property(op->ptr, "axis"); prop = RNA_struct_find_property(op->ptr, "axis");

@ -316,8 +316,7 @@ static void gizmo_mesh_spin_init_refresh(const bContext *C, wmGizmoGroup *gzgrou
const float *gizmo_center = NULL; const float *gizmo_center = NULL;
{ {
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C); const View3DCursor *cursor = &scene->cursor;
const View3DCursor *cursor = ED_view3d_cursor3d_get(scene, v3d);
gizmo_center = cursor->location; gizmo_center = cursor->location;
} }

@ -185,7 +185,7 @@ static int edbm_polybuild_face_at_cursor_invoke(
if (ele_act == NULL || ele_act->head.htype == BM_FACE) { if (ele_act == NULL || ele_act->head.htype == BM_FACE) {
/* Just add vert */ /* Just add vert */
copy_v3_v3(center, ED_view3d_cursor3d_get(vc.scene, vc.v3d)->location); copy_v3_v3(center, vc.scene->cursor.location);
mul_v3_m4v3(center, vc.obedit->obmat, center); mul_v3_m4v3(center, vc.obedit->obmat, center);
ED_view3d_win_to_3d_int(vc.v3d, vc.ar, center, event->mval, center); ED_view3d_win_to_3d_int(vc.v3d, vc.ar, center, event->mval, center);
mul_m4_v3(vc.obedit->imat, center); mul_m4_v3(vc.obedit->imat, center);

@ -4368,7 +4368,7 @@ static int edbm_select_axis_exec(bContext *C, wmOperator *op)
/* 3D view variables may be NULL, (no need to check in poll function). */ /* 3D view variables may be NULL, (no need to check in poll function). */
ED_transform_calc_orientation_from_type_ex( ED_transform_calc_orientation_from_type_ex(
C, axis_mat, C, axis_mat,
scene, CTX_wm_view3d(C), CTX_wm_region_view3d(C), obedit, obedit, scene, CTX_wm_region_view3d(C), obedit, obedit,
orientation, V3D_AROUND_ACTIVE); orientation, V3D_AROUND_ACTIVE);
const float *axis_vector = axis_mat[axis]; const float *axis_vector = axis_mat[axis];

@ -2723,7 +2723,7 @@ static bool merge_firstlast(BMEditMesh *em, const bool use_first, const bool use
} }
static bool merge_target( static bool merge_target(
BMEditMesh *em, Scene *scene, View3D *v3d, Object *ob, BMEditMesh *em, Scene *scene, Object *ob,
const bool use_cursor, const bool use_uvmerge, wmOperator *wmop) const bool use_cursor, const bool use_uvmerge, wmOperator *wmop)
{ {
BMIter iter; BMIter iter;
@ -2732,7 +2732,7 @@ static bool merge_target(
const float *vco = NULL; const float *vco = NULL;
if (use_cursor) { if (use_cursor) {
vco = ED_view3d_cursor3d_get(scene, v3d)->location; vco = scene->cursor.location;
copy_v3_v3(co, vco); copy_v3_v3(co, vco);
invert_m4_m4(ob->imat, ob->obmat); invert_m4_m4(ob->imat, ob->obmat);
mul_m4_v3(ob->imat, co); mul_m4_v3(ob->imat, co);
@ -2773,7 +2773,6 @@ static bool merge_target(
static int edbm_merge_exec(bContext *C, wmOperator *op) static int edbm_merge_exec(bContext *C, wmOperator *op)
{ {
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C);
ViewLayer *view_layer = CTX_data_view_layer(C); ViewLayer *view_layer = CTX_data_view_layer(C);
uint objects_len = 0; uint objects_len = 0;
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len); Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, CTX_wm_view3d(C), &objects_len);
@ -2791,10 +2790,10 @@ static int edbm_merge_exec(bContext *C, wmOperator *op)
bool ok = false; bool ok = false;
switch (type) { switch (type) {
case MESH_MERGE_CENTER: case MESH_MERGE_CENTER:
ok = merge_target(em, scene, v3d, obedit, false, uvs, op); ok = merge_target(em, scene, obedit, false, uvs, op);
break; break;
case MESH_MERGE_CURSOR: case MESH_MERGE_CURSOR:
ok = merge_target(em, scene, v3d, obedit, true, uvs, op); ok = merge_target(em, scene, obedit, true, uvs, op);
break; break;
case MESH_MERGE_LAST: case MESH_MERGE_LAST:
ok = merge_firstlast(em, false, uvs, op); ok = merge_firstlast(em, false, uvs, op);
@ -5628,7 +5627,7 @@ static int bmelemsort_comp(const void *v1, const void *v2)
static void sort_bmelem_flag( static void sort_bmelem_flag(
bContext *C, bContext *C,
Scene *scene, Object *ob, Scene *scene, Object *ob,
View3D *v3d, RegionView3D *rv3d, RegionView3D *rv3d,
const int types, const int flag, const int action, const int types, const int flag, const int action,
const int reverse, const unsigned int seed) const int reverse, const unsigned int seed)
{ {
@ -5730,10 +5729,8 @@ static void sort_bmelem_flag(
float mat[4][4]; float mat[4][4];
float fact = reverse ? -1.0 : 1.0; float fact = reverse ? -1.0 : 1.0;
if (v3d && v3d->localvd) copy_v3_v3(cur, scene->cursor.location);
copy_v3_v3(cur, v3d->cursor.location);
else
copy_v3_v3(cur, scene->cursor.location);
invert_m4_m4(mat, ob->obmat); invert_m4_m4(mat, ob->obmat);
mul_m4_v3(mat, cur); mul_m4_v3(mat, cur);
@ -6067,7 +6064,6 @@ static int edbm_sort_elements_exec(bContext *C, wmOperator *op)
Object *ob_active = CTX_data_edit_object(C); Object *ob_active = CTX_data_edit_object(C);
/* may be NULL */ /* may be NULL */
View3D *v3d = CTX_wm_view3d(C);
RegionView3D *rv3d = ED_view3d_context_rv3d(C); RegionView3D *rv3d = ED_view3d_context_rv3d(C);
const int action = RNA_enum_get(op->ptr, "type"); const int action = RNA_enum_get(op->ptr, "type");
@ -6121,8 +6117,8 @@ static int edbm_sort_elements_exec(bContext *C, wmOperator *op)
} }
sort_bmelem_flag( sort_bmelem_flag(
C, scene, ob, v3d, rv3d, C, scene, ob, rv3d,
elem_types, BM_ELEM_SELECT, action, use_reverse, seed_iter); elem_types, BM_ELEM_SELECT, action, use_reverse, seed_iter);
} }
MEM_freeN(objects); MEM_freeN(objects);
return OPERATOR_FINISHED; return OPERATOR_FINISHED;
@ -7363,7 +7359,7 @@ static int edbm_point_normals_modal(bContext *C, wmOperator *op, const wmEvent *
case EDBM_CLNOR_MODAL_POINTTO_SET_USE_3DCURSOR: case EDBM_CLNOR_MODAL_POINTTO_SET_USE_3DCURSOR:
new_mode = EDBM_CLNOR_POINTTO_MODE_COORDINATES; new_mode = EDBM_CLNOR_POINTTO_MODE_COORDINATES;
ED_view3d_cursor3d_update(C, event->mval, false, V3D_CURSOR_ORIENT_NONE); ED_view3d_cursor3d_update(C, event->mval, false, V3D_CURSOR_ORIENT_NONE);
copy_v3_v3(target, ED_view3d_cursor3d_get(scene, v3d)->location); copy_v3_v3(target, scene->cursor.location);
ret = OPERATOR_RUNNING_MODAL; ret = OPERATOR_RUNNING_MODAL;
break; break;
@ -7412,7 +7408,7 @@ static int edbm_point_normals_modal(bContext *C, wmOperator *op, const wmEvent *
} }
case V3D_AROUND_CURSOR: case V3D_AROUND_CURSOR:
copy_v3_v3(target, ED_view3d_cursor3d_get(scene, v3d)->location); copy_v3_v3(target, scene->cursor.location);
break; break;
case V3D_AROUND_ACTIVE: case V3D_AROUND_ACTIVE:

@ -163,13 +163,8 @@ static EnumPropertyItem lightprobe_type_items[] = {
void ED_object_location_from_view(bContext *C, float loc[3]) void ED_object_location_from_view(bContext *C, float loc[3])
{ {
View3D *v3d = CTX_wm_view3d(C); const Scene *scene = CTX_data_scene(C);
Scene *scene = CTX_data_scene(C); copy_v3_v3(loc, scene->cursor.location);
const float *cursor;
cursor = ED_view3d_cursor3d_get(scene, v3d)->location;
copy_v3_v3(loc, cursor);
} }
void ED_object_rotation_from_quat(float rot[3], const float viewquat[4], const char align_axis) void ED_object_rotation_from_quat(float rot[3], const float viewquat[4], const char align_axis)

@ -828,7 +828,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
else { else {
/* get the view settings if 'around' isn't set and the view is available */ /* get the view settings if 'around' isn't set and the view is available */
View3D *v3d = CTX_wm_view3d(C); View3D *v3d = CTX_wm_view3d(C);
copy_v3_v3(cursor, ED_view3d_cursor3d_get(scene, v3d)->location); copy_v3_v3(cursor, scene->cursor.location);
if (v3d && !RNA_struct_property_is_set(op->ptr, "center")) if (v3d && !RNA_struct_property_is_set(op->ptr, "center"))
around = scene->toolsettings->transform_pivot_point; around = scene->toolsettings->transform_pivot_point;
} }

@ -223,12 +223,8 @@ static int object_warp_verts_exec(bContext *C, wmOperator *op)
RNA_property_float_get_array(op->ptr, prop_center, center); RNA_property_float_get_array(op->ptr, prop_center, center);
} }
else { else {
Scene *scene = CTX_data_scene(C); const Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C); copy_v3_v3(center, scene->cursor.location);
const float *cursor;
cursor = ED_view3d_cursor3d_get(scene, v3d)->location;
copy_v3_v3(center, cursor);
RNA_property_float_set_array(op->ptr, prop_center, center); RNA_property_float_set_array(op->ptr, prop_center, center);
} }

@ -3899,7 +3899,7 @@ static void paint_proj_begin_clone(ProjPaintState *ps, const float mouse[2])
/* setup clone offset */ /* setup clone offset */
if (ps->tool == PAINT_TOOL_CLONE) { if (ps->tool == PAINT_TOOL_CLONE) {
float projCo[4]; float projCo[4];
copy_v3_v3(projCo, ED_view3d_cursor3d_get(ps->scene, ps->v3d)->location); copy_v3_v3(projCo, ps->scene->cursor.location);
mul_m4_v3(ps->obmat_imat, projCo); mul_m4_v3(ps->obmat_imat, projCo);
projCo[3] = 1.0f; projCo[3] = 1.0f;
@ -5013,7 +5013,7 @@ void paint_proj_stroke(
struct Depsgraph *depsgraph = CTX_data_depsgraph(C); struct Depsgraph *depsgraph = CTX_data_depsgraph(C);
View3D *v3d = CTX_wm_view3d(C); View3D *v3d = CTX_wm_view3d(C);
ARegion *ar = CTX_wm_region(C); ARegion *ar = CTX_wm_region(C);
float *cursor = ED_view3d_cursor3d_get(scene, v3d)->location; float *cursor = scene->cursor.location;
int mval_i[2] = {(int)pos[0], (int)pos[1]}; int mval_i[2] = {(int)pos[0], (int)pos[1]};
view3d_operator_needs_opengl(C); view3d_operator_needs_opengl(C);

@ -2712,7 +2712,7 @@ static int view3d_all_exec(bContext *C, wmOperator *op)
if (center) { if (center) {
/* in 2.4x this also move the cursor to (0, 0, 0) (with shift+c). */ /* in 2.4x this also move the cursor to (0, 0, 0) (with shift+c). */
View3DCursor *cursor = ED_view3d_cursor3d_get(scene, v3d); View3DCursor *cursor = &scene->cursor;
zero_v3(min); zero_v3(min);
zero_v3(max); zero_v3(max);
zero_v3(cursor->location); zero_v3(cursor->location);
@ -3043,7 +3043,7 @@ static int viewcenter_cursor_exec(bContext *C, wmOperator *op)
/* non camera center */ /* non camera center */
float new_ofs[3]; float new_ofs[3];
negate_v3_v3(new_ofs, ED_view3d_cursor3d_get(scene, v3d)->location); negate_v3_v3(new_ofs, scene->cursor.location);
ED_view3d_smooth_view( ED_view3d_smooth_view(
C, v3d, ar, smooth_viewtx, C, v3d, ar, smooth_viewtx,
&(const V3D_SmoothParams) {.ofs = new_ofs}); &(const V3D_SmoothParams) {.ofs = new_ofs});
@ -4755,7 +4755,7 @@ void ED_view3d_cursor3d_update(
ARegion *ar = CTX_wm_region(C); ARegion *ar = CTX_wm_region(C);
RegionView3D *rv3d = ar->regiondata; RegionView3D *rv3d = ar->regiondata;
View3DCursor *cursor_curr = ED_view3d_cursor3d_get(scene, v3d); View3DCursor *cursor_curr = &scene->cursor;
View3DCursor cursor_prev = *cursor_curr; View3DCursor cursor_prev = *cursor_curr;
ED_view3d_cursor3d_position_rotation( ED_view3d_cursor3d_position_rotation(

@ -454,9 +454,8 @@ static int snap_selected_to_cursor_exec(bContext *C, wmOperator *op)
const bool use_offset = RNA_boolean_get(op->ptr, "use_offset"); const bool use_offset = RNA_boolean_get(op->ptr, "use_offset");
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C);
const float *snap_target_global = ED_view3d_cursor3d_get(scene, v3d)->location; const float *snap_target_global = scene->cursor.location;
return snap_selected_to_location(C, snap_target_global, use_offset); return snap_selected_to_location(C, snap_target_global, use_offset);
} }
@ -521,7 +520,7 @@ static int snap_curs_to_grid_exec(bContext *C, wmOperator *UNUSED(op))
float gridf, *curs; float gridf, *curs;
gridf = ED_view3d_grid_scale(scene, v3d, NULL); gridf = ED_view3d_grid_scale(scene, v3d, NULL);
curs = ED_view3d_cursor3d_get(scene, v3d)->location; curs = scene->cursor.location;
curs[0] = gridf * floorf(0.5f + curs[0] / gridf); curs[0] = gridf * floorf(0.5f + curs[0] / gridf);
curs[1] = gridf * floorf(0.5f + curs[1] / gridf); curs[1] = gridf * floorf(0.5f + curs[1] / gridf);
@ -724,13 +723,8 @@ static bool snap_curs_to_sel_ex(bContext *C, float cursor[3])
static int snap_curs_to_sel_exec(bContext *C, wmOperator *UNUSED(op)) static int snap_curs_to_sel_exec(bContext *C, wmOperator *UNUSED(op))
{ {
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C); if (snap_curs_to_sel_ex(C, scene->cursor.location)) {
float *curs; WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, NULL);
curs = ED_view3d_cursor3d_get(scene, v3d)->location;
if (snap_curs_to_sel_ex(C, curs)) {
WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, v3d);
DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE); DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
return OPERATOR_FINISHED; return OPERATOR_FINISHED;
@ -805,11 +799,8 @@ static int snap_curs_to_active_exec(bContext *C, wmOperator *UNUSED(op))
{ {
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C); View3D *v3d = CTX_wm_view3d(C);
float *curs;
curs = ED_view3d_cursor3d_get(scene, v3d)->location; if (snap_calc_active_center(C, false, scene->cursor.location)) {
if (snap_calc_active_center(C, false, curs)) {
WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, v3d); WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, v3d);
DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE); DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
@ -841,15 +832,12 @@ void VIEW3D_OT_snap_cursor_to_active(wmOperatorType *ot)
static int snap_curs_to_center_exec(bContext *C, wmOperator *UNUSED(op)) static int snap_curs_to_center_exec(bContext *C, wmOperator *UNUSED(op))
{ {
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C);
float *curs;
curs = ED_view3d_cursor3d_get(scene, v3d)->location;
zero_v3(curs); zero_v3(scene->cursor.location);
WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, v3d);
DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE); DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
WM_event_add_notifier(C, NC_SPACE | ND_SPACE_VIEW3D, NULL);
return OPERATOR_FINISHED; return OPERATOR_FINISHED;
} }

@ -91,20 +91,15 @@ void ED_view3d_background_color_get(const Scene *scene, const View3D *v3d, float
} }
} }
View3DCursor *ED_view3d_cursor3d_get(Scene *scene, View3D *UNUSED(v3d)) void ED_view3d_cursor3d_calc_mat3(const Scene *scene, float mat[3][3])
{ {
return &scene->cursor; const View3DCursor *cursor = &scene->cursor;
}
void ED_view3d_cursor3d_calc_mat3(const Scene *scene, const View3D *v3d, float mat[3][3])
{
const View3DCursor *cursor = ED_view3d_cursor3d_get((Scene *)scene, (View3D *)v3d);
quat_to_mat3(mat, cursor->rotation); quat_to_mat3(mat, cursor->rotation);
} }
void ED_view3d_cursor3d_calc_mat4(const Scene *scene, const View3D *v3d, float mat[4][4]) void ED_view3d_cursor3d_calc_mat4(const Scene *scene, float mat[4][4])
{ {
const View3DCursor *cursor = ED_view3d_cursor3d_get((Scene *)scene, (View3D *)v3d); const View3DCursor *cursor = &scene->cursor;
quat_to_mat4(mat, cursor->rotation); quat_to_mat4(mat, cursor->rotation);
copy_v3_v3(mat[3], cursor->location); copy_v3_v3(mat[3], cursor->location);
} }

@ -799,7 +799,7 @@ void view3d_viewmatrix_set(
} }
else if (v3d->ob_centre_cursor) { else if (v3d->ob_centre_cursor) {
float vec[3]; float vec[3];
copy_v3_v3(vec, ED_view3d_cursor3d_get(scene, (View3D *)v3d)->location); copy_v3_v3(vec, scene->cursor.location);
translate_m4(rv3d->viewmat, -vec[0], -vec[1], -vec[2]); translate_m4(rv3d->viewmat, -vec[0], -vec[1], -vec[2]);
use_lock_ofs = true; use_lock_ofs = true;
} }

@ -3134,7 +3134,7 @@ static void initBend(TransInfo *t)
data = MEM_callocN(sizeof(*data), __func__); data = MEM_callocN(sizeof(*data), __func__);
curs = ED_view3d_cursor3d_get(t->scene, t->view)->location; curs = t->scene->cursor.location;
copy_v3_v3(data->warp_sta, curs); copy_v3_v3(data->warp_sta, curs);
ED_view3d_win_to_3d(t->sa->spacedata.first, t->ar, curs, mval_fl, data->warp_end); ED_view3d_win_to_3d(t->sa->spacedata.first, t->ar, curs, mval_fl, data->warp_end);

@ -383,14 +383,12 @@ static void createTransCursor_view3d(TransInfo *t)
TransData *td; TransData *td;
Scene *scene = t->scene; Scene *scene = t->scene;
View3D *v3d = ((t->spacetype == SPACE_VIEW3D) && (t->ar->regiontype == RGN_TYPE_WINDOW)) ? t->view : NULL; if (ID_IS_LINKED(scene)) {
View3DCursor *cursor = ED_view3d_cursor3d_get(scene, v3d);
if ((cursor == &scene->cursor) && ID_IS_LINKED(scene)) {
BKE_report(t->reports, RPT_ERROR, "Linked data can't text-space transform"); BKE_report(t->reports, RPT_ERROR, "Linked data can't text-space transform");
return; return;
} }
View3DCursor *cursor = &scene->cursor;
{ {
BLI_assert(t->data_container_len == 1); BLI_assert(t->data_container_len == 1);
TransDataContainer *tc = t->data_container; TransDataContainer *tc = t->data_container;

@ -1848,9 +1848,7 @@ void calculateCenterLocal(
void calculateCenterCursor(TransInfo *t, float r_center[3]) void calculateCenterCursor(TransInfo *t, float r_center[3])
{ {
const float *cursor; const float *cursor = t->scene->cursor.location;
cursor = ED_view3d_cursor3d_get(t->scene, t->view)->location;
copy_v3_v3(r_center, cursor); copy_v3_v3(r_center, cursor);
/* If edit or pose mode, move cursor in local space */ /* If edit or pose mode, move cursor in local space */

@ -615,12 +615,10 @@ bool gimbal_axis(Object *ob, float gmat[3][3])
void ED_transform_calc_orientation_from_type( void ED_transform_calc_orientation_from_type(
const bContext *C, float r_mat[3][3]) const bContext *C, float r_mat[3][3])
{ {
ScrArea *sa = CTX_wm_area(C);
ARegion *ar = CTX_wm_region(C); ARegion *ar = CTX_wm_region(C);
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C); ViewLayer *view_layer = CTX_data_view_layer(C);
Object *obedit = CTX_data_edit_object(C); Object *obedit = CTX_data_edit_object(C);
View3D *v3d = sa->spacedata.first;
RegionView3D *rv3d = ar->regiondata; RegionView3D *rv3d = ar->regiondata;
Object *ob = OBACT(view_layer); Object *ob = OBACT(view_layer);
const short orientation_type = scene->orientation_type; const short orientation_type = scene->orientation_type;
@ -628,13 +626,13 @@ void ED_transform_calc_orientation_from_type(
ED_transform_calc_orientation_from_type_ex( ED_transform_calc_orientation_from_type_ex(
C, r_mat, C, r_mat,
scene, v3d, rv3d, ob, obedit, orientation_type, pivot_point); scene, rv3d, ob, obedit, orientation_type, pivot_point);
} }
void ED_transform_calc_orientation_from_type_ex( void ED_transform_calc_orientation_from_type_ex(
const bContext *C, float r_mat[3][3], const bContext *C, float r_mat[3][3],
/* extra args (can be accessed from context) */ /* extra args (can be accessed from context) */
Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, Object *obedit, Scene *scene, RegionView3D *rv3d, Object *ob, Object *obedit,
const short orientation_type, const int pivot_point) const short orientation_type, const int pivot_point)
{ {
bool ok = false; bool ok = false;
@ -690,7 +688,7 @@ void ED_transform_calc_orientation_from_type_ex(
} }
case V3D_MANIP_CURSOR: case V3D_MANIP_CURSOR:
{ {
ED_view3d_cursor3d_calc_mat3(scene, v3d, r_mat); ED_view3d_cursor3d_calc_mat3(scene, r_mat);
ok = true; ok = true;
break; break;
} }
@ -748,7 +746,7 @@ int ED_transform_calc_gizmo_stats(
float mat[3][3]; float mat[3][3];
ED_transform_calc_orientation_from_type_ex( ED_transform_calc_orientation_from_type_ex(
C, mat, C, mat,
scene, v3d, rv3d, ob, obedit, orientation_type, pivot_point); scene, rv3d, ob, obedit, orientation_type, pivot_point);
copy_m4_m3(rv3d->twmat, mat); copy_m4_m3(rv3d->twmat, mat);
} }
@ -1184,7 +1182,7 @@ static void gizmo_get_idot(RegionView3D *rv3d, float r_idot[3])
} }
static void gizmo_prepare_mat( static void gizmo_prepare_mat(
const bContext *C, View3D *v3d, RegionView3D *rv3d, const struct TransformBounds *tbounds) const bContext *C, RegionView3D *rv3d, const struct TransformBounds *tbounds)
{ {
Scene *scene = CTX_data_scene(C); Scene *scene = CTX_data_scene(C);
ViewLayer *view_layer = CTX_data_view_layer(C); ViewLayer *view_layer = CTX_data_view_layer(C);
@ -1213,7 +1211,7 @@ static void gizmo_prepare_mat(
copy_v3_v3(rv3d->twmat[3], tbounds->center); copy_v3_v3(rv3d->twmat[3], tbounds->center);
break; break;
case V3D_AROUND_CURSOR: case V3D_AROUND_CURSOR:
copy_v3_v3(rv3d->twmat[3], ED_view3d_cursor3d_get(scene, v3d)->location); copy_v3_v3(rv3d->twmat[3], scene->cursor.location);
break; break;
} }
} }
@ -1478,9 +1476,7 @@ static int gizmo_modal(
return OPERATOR_RUNNING_MODAL; return OPERATOR_RUNNING_MODAL;
} }
const ScrArea *sa = CTX_wm_area(C);
ARegion *ar = CTX_wm_region(C); ARegion *ar = CTX_wm_region(C);
View3D *v3d = sa->spacedata.first;
RegionView3D *rv3d = ar->regiondata; RegionView3D *rv3d = ar->regiondata;
struct TransformBounds tbounds; struct TransformBounds tbounds;
@ -1490,7 +1486,7 @@ static int gizmo_modal(
.use_only_center = true, .use_only_center = true,
}, &tbounds)) }, &tbounds))
{ {
gizmo_prepare_mat(C, v3d, rv3d, &tbounds); gizmo_prepare_mat(C, rv3d, &tbounds);
WM_gizmo_set_matrix_location(widget, rv3d->twmat[3]); WM_gizmo_set_matrix_location(widget, rv3d->twmat[3]);
} }
@ -1658,9 +1654,7 @@ static void WIDGETGROUP_gizmo_setup(const bContext *C, wmGizmoGroup *gzgroup)
static void WIDGETGROUP_gizmo_refresh(const bContext *C, wmGizmoGroup *gzgroup) static void WIDGETGROUP_gizmo_refresh(const bContext *C, wmGizmoGroup *gzgroup)
{ {
GizmoGroup *ggd = gzgroup->customdata; GizmoGroup *ggd = gzgroup->customdata;
ScrArea *sa = CTX_wm_area(C);
ARegion *ar = CTX_wm_region(C); ARegion *ar = CTX_wm_region(C);
View3D *v3d = sa->spacedata.first;
RegionView3D *rv3d = ar->regiondata; RegionView3D *rv3d = ar->regiondata;
struct TransformBounds tbounds; struct TransformBounds tbounds;
@ -1683,7 +1677,7 @@ static void WIDGETGROUP_gizmo_refresh(const bContext *C, wmGizmoGroup *gzgroup)
return; return;
} }
gizmo_prepare_mat(C, v3d, rv3d, &tbounds); gizmo_prepare_mat(C, rv3d, &tbounds);
/* *** set properties for axes *** */ /* *** set properties for axes *** */
@ -1915,8 +1909,6 @@ static void WIDGETGROUP_xform_cage_setup(const bContext *UNUSED(C), wmGizmoGroup
static void WIDGETGROUP_xform_cage_refresh(const bContext *C, wmGizmoGroup *gzgroup) static void WIDGETGROUP_xform_cage_refresh(const bContext *C, wmGizmoGroup *gzgroup)
{ {
ScrArea *sa = CTX_wm_area(C);
View3D *v3d = sa->spacedata.first;
ARegion *ar = CTX_wm_region(C); ARegion *ar = CTX_wm_region(C);
RegionView3D *rv3d = ar->regiondata; RegionView3D *rv3d = ar->regiondata;
@ -1934,7 +1926,7 @@ static void WIDGETGROUP_xform_cage_refresh(const bContext *C, wmGizmoGroup *gzgr
WM_gizmo_set_flag(gz, WM_GIZMO_HIDDEN, true); WM_gizmo_set_flag(gz, WM_GIZMO_HIDDEN, true);
} }
else { else {
gizmo_prepare_mat(C, v3d, rv3d, &tbounds); gizmo_prepare_mat(C, rv3d, &tbounds);
WM_gizmo_set_flag(gz, WM_GIZMO_HIDDEN, false); WM_gizmo_set_flag(gz, WM_GIZMO_HIDDEN, false);
WM_gizmo_set_flag(gz, WM_GIZMO_MOVE_CURSOR, true); WM_gizmo_set_flag(gz, WM_GIZMO_MOVE_CURSOR, true);
@ -2093,8 +2085,6 @@ static void WIDGETGROUP_xform_shear_setup(const bContext *UNUSED(C), wmGizmoGrou
static void WIDGETGROUP_xform_shear_refresh(const bContext *C, wmGizmoGroup *gzgroup) static void WIDGETGROUP_xform_shear_refresh(const bContext *C, wmGizmoGroup *gzgroup)
{ {
ScrArea *sa = CTX_wm_area(C);
View3D *v3d = sa->spacedata.first;
ARegion *ar = CTX_wm_region(C); ARegion *ar = CTX_wm_region(C);
RegionView3D *rv3d = ar->regiondata; RegionView3D *rv3d = ar->regiondata;
@ -2114,7 +2104,7 @@ static void WIDGETGROUP_xform_shear_refresh(const bContext *C, wmGizmoGroup *gzg
} }
} }
else { else {
gizmo_prepare_mat(C, v3d, rv3d, &tbounds); gizmo_prepare_mat(C, rv3d, &tbounds);
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
for (int j = 0; j < 2; j++) { for (int j = 0; j < 2; j++) {
wmGizmo *gz = xgzgroup->gizmo[i][j]; wmGizmo *gz = xgzgroup->gizmo[i][j];

@ -484,7 +484,7 @@ void initTransformOrientation(bContext *C, TransInfo *t)
case V3D_MANIP_CURSOR: case V3D_MANIP_CURSOR:
{ {
BLI_strncpy(t->spacename, IFACE_("cursor"), sizeof(t->spacename)); BLI_strncpy(t->spacename, IFACE_("cursor"), sizeof(t->spacename));
ED_view3d_cursor3d_calc_mat3(t->scene, CTX_wm_view3d(C), t->spacemtx); ED_view3d_cursor3d_calc_mat3(t->scene, t->spacemtx);
break; break;
} }
case V3D_MANIP_CUSTOM_MATRIX: case V3D_MANIP_CUSTOM_MATRIX:

@ -1107,7 +1107,7 @@ static void uv_map_transform_center(
case V3D_AROUND_CURSOR: /* cursor center */ case V3D_AROUND_CURSOR: /* cursor center */
{ {
invert_m4_m4(ob->imat, ob->obmat); invert_m4_m4(ob->imat, ob->obmat);
mul_v3_m4v3(r_center, ob->imat, ED_view3d_cursor3d_get(scene, v3d)->location); mul_v3_m4v3(r_center, ob->imat, scene->cursor.location);
break; break;
} }
case V3D_AROUND_ACTIVE: case V3D_AROUND_ACTIVE:

@ -246,8 +246,6 @@ typedef struct View3D {
float near, far; float near, far;
float ofs[3] DNA_DEPRECATED; /* XXX deprecated */ float ofs[3] DNA_DEPRECATED; /* XXX deprecated */
View3DCursor cursor;
char _pad[4]; char _pad[4];
short matcap_icon; /* icon id */ short matcap_icon; /* icon id */

@ -531,47 +531,6 @@ static void rna_SpaceView3D_lock_camera_and_layers_set(PointerRNA *ptr, bool val
} }
} }
static View3DCursor *rna_View3D_Cursor_get_from_scene_or_localview(PointerRNA *ptr)
{
View3D *v3d = (View3D *)(ptr->data);
bScreen *screen = ptr->id.data;
Scene *scene = ED_screen_scene_find(screen, G_MAIN->wm.first);
return ED_view3d_cursor3d_get(scene, v3d);
}
static void rna_View3D_Cursor_location_get(PointerRNA *ptr, float *values)
{
const View3DCursor *cursor = rna_View3D_Cursor_get_from_scene_or_localview(ptr);
copy_v3_v3(values, cursor->location);
}
static void rna_View3D_Cursor_location_set(PointerRNA *ptr, const float *values)
{
View3DCursor *cursor = rna_View3D_Cursor_get_from_scene_or_localview(ptr);
copy_v3_v3(cursor->location, values);
}
static void rna_View3D_Cursor_rotation_get(PointerRNA *ptr, float *values)
{
const View3DCursor *cursor = rna_View3D_Cursor_get_from_scene_or_localview(ptr);
copy_qt_qt(values, cursor->rotation);
}
static void rna_View3D_Cursor_rotation_set(PointerRNA *ptr, const float *values)
{
View3DCursor *cursor = rna_View3D_Cursor_get_from_scene_or_localview(ptr);
copy_qt_qt(cursor->rotation, values);
}
static void rna_View3D_Cursor_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr)
{
View3D *v3d = ptr->data;
if (v3d->localvd == NULL) {
DEG_id_tag_update(&scene->id, DEG_TAG_COPY_ON_WRITE);
}
}
static float rna_View3DOverlay_GridScaleUnit_get(PointerRNA *ptr) static float rna_View3DOverlay_GridScaleUnit_get(PointerRNA *ptr)
{ {
View3D *v3d = (View3D *)(ptr->data); View3D *v3d = (View3D *)(ptr->data);
@ -3108,21 +3067,6 @@ static void rna_def_space_view3d(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Local View", RNA_def_property_ui_text(prop, "Local View",
"Display an isolated sub-set of objects, apart from the scene visibility"); "Display an isolated sub-set of objects, apart from the scene visibility");
prop = RNA_def_property(srna, "cursor_location", PROP_FLOAT, PROP_XYZ_LENGTH);
RNA_def_property_array(prop, 3);
RNA_def_property_float_funcs(prop, "rna_View3D_Cursor_location_get", "rna_View3D_Cursor_location_set", NULL);
RNA_def_property_ui_text(prop, "3D Cursor Location",
"3D cursor location for this view (dependent on local view setting)");
RNA_def_property_ui_range(prop, -10000.0, 10000.0, 1, RNA_TRANSLATION_PREC_DEFAULT);
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_View3D_Cursor_update");
prop = RNA_def_property(srna, "cursor_rotation", PROP_FLOAT, PROP_QUATERNION);
RNA_def_property_array(prop, 4);
RNA_def_property_float_funcs(prop, "rna_View3D_Cursor_rotation_get", "rna_View3D_Cursor_rotation_set", NULL);
RNA_def_property_ui_text(prop, "3D Cursor Rotation",
"Rotation in quaternions (keep normalized)");
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_View3D_Cursor_update");
prop = RNA_def_property(srna, "lens", PROP_FLOAT, PROP_UNIT_CAMERA); prop = RNA_def_property(srna, "lens", PROP_FLOAT, PROP_UNIT_CAMERA);
RNA_def_property_float_sdna(prop, NULL, "lens"); RNA_def_property_float_sdna(prop, NULL, "lens");
RNA_def_property_ui_text(prop, "Lens", "Viewport lens angle"); RNA_def_property_ui_text(prop, "Lens", "Viewport lens angle");