Fix [#21492] "Align to view" option from tools panel's operator part doesn't works.
Also changed some usage of CTX_wm_region_view3d(C) to ED_view3d_context_rv3d(C)
This commit is contained in:
@@ -3726,7 +3726,7 @@ void CURVE_OT_cyclic_toggle(wmOperatorType *ot)
|
||||
static int select_linked_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Object *obedit= CTX_data_edit_object(C);
|
||||
RegionView3D *rv3d= CTX_wm_region_view3d(C);
|
||||
RegionView3D *rv3d= ED_view3d_context_rv3d(C);
|
||||
ViewContext vc;
|
||||
Nurb *nu;
|
||||
BezTriple *bezt;
|
||||
|
||||
@@ -88,7 +88,7 @@ float ED_object_new_primitive_matrix(struct bContext *C, float *loc, float *rot,
|
||||
|
||||
void ED_object_add_generic_props(struct wmOperatorType *ot, int do_editmode);
|
||||
int ED_object_add_generic_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
|
||||
void ED_object_add_generic_get_opts(struct wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer);
|
||||
void ED_object_add_generic_get_opts(struct bContext *C, struct wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer);
|
||||
struct Object *ED_object_add_type(struct bContext *C, int type, float *loc, float *rot, int enter_editmode, unsigned int layer);
|
||||
|
||||
void ED_object_single_users(struct Scene *scene, int full);
|
||||
|
||||
@@ -1301,7 +1301,7 @@ static int add_primitive_plane_exec(bContext *C, wmOperator *op)
|
||||
unsigned int layer;
|
||||
float loc[3], rot[3];
|
||||
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
/* sqrt(2.0f) - plane (diameter of 1.41 makes it unit size) */
|
||||
make_prim_ext(C, loc, rot, enter_editmode, layer,
|
||||
@@ -1333,7 +1333,7 @@ static int add_primitive_cube_exec(bContext *C, wmOperator *op)
|
||||
unsigned int layer;
|
||||
float loc[3], rot[3];
|
||||
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
/* sqrt(2.0f) - plane (diameter of 1.41 makes it unit size) */
|
||||
make_prim_ext(C, loc, rot, enter_editmode, layer,
|
||||
@@ -1365,7 +1365,7 @@ static int add_primitive_circle_exec(bContext *C, wmOperator *op)
|
||||
unsigned int layer;
|
||||
float loc[3], rot[3];
|
||||
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
make_prim_ext(C, loc, rot, enter_editmode, layer,
|
||||
PRIM_CIRCLE, RNA_int_get(op->ptr, "vertices"), 0, 0,
|
||||
@@ -1404,7 +1404,7 @@ static int add_primitive_tube_exec(bContext *C, wmOperator *op)
|
||||
unsigned int layer;
|
||||
float loc[3], rot[3];
|
||||
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
make_prim_ext(C, loc, rot, enter_editmode, layer,
|
||||
PRIM_CYLINDER, RNA_int_get(op->ptr, "vertices"), 0, 0,
|
||||
@@ -1445,7 +1445,7 @@ static int add_primitive_cone_exec(bContext *C, wmOperator *op)
|
||||
unsigned int layer;
|
||||
float loc[3], rot[3];
|
||||
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
make_prim_ext(C, loc, rot, enter_editmode, layer,
|
||||
PRIM_CONE, RNA_int_get(op->ptr, "vertices"), 0, 0,
|
||||
@@ -1485,7 +1485,7 @@ static int add_primitive_grid_exec(bContext *C, wmOperator *op)
|
||||
unsigned int layer;
|
||||
float loc[3], rot[3];
|
||||
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
make_prim_ext(C, loc, rot, enter_editmode, layer,
|
||||
PRIM_GRID, RNA_int_get(op->ptr, "x_subdivisions"),
|
||||
@@ -1524,7 +1524,7 @@ static int add_primitive_monkey_exec(bContext *C, wmOperator *op)
|
||||
unsigned int layer;
|
||||
float loc[3], rot[3];
|
||||
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
make_prim_ext(C, loc, rot, enter_editmode, layer,
|
||||
PRIM_MONKEY, 0, 0, 2, 0.0f, 0.0f, 0, 0);
|
||||
@@ -1556,7 +1556,7 @@ static int add_primitive_uvsphere_exec(bContext *C, wmOperator *op)
|
||||
unsigned int layer;
|
||||
float loc[3], rot[3];
|
||||
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
make_prim_ext(C, loc, rot, enter_editmode, layer,
|
||||
PRIM_UVSPHERE, RNA_int_get(op->ptr, "rings"),
|
||||
@@ -1595,7 +1595,7 @@ static int add_primitive_icosphere_exec(bContext *C, wmOperator *op)
|
||||
unsigned int layer;
|
||||
float loc[3], rot[3];
|
||||
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
make_prim_ext(C, loc, rot, enter_editmode, layer,
|
||||
PRIM_ICOSPHERE, 0, 0, RNA_int_get(op->ptr, "subdivisions"),
|
||||
|
||||
@@ -108,7 +108,7 @@ void ED_object_location_from_view(bContext *C, float *loc)
|
||||
|
||||
void ED_object_rotation_from_view(bContext *C, float *rot)
|
||||
{
|
||||
RegionView3D *rv3d = CTX_wm_region_view3d(C);
|
||||
RegionView3D *rv3d= ED_view3d_context_rv3d(C);
|
||||
|
||||
if(rv3d) {
|
||||
rv3d->viewquat[0]= -rv3d->viewquat[0];
|
||||
@@ -200,23 +200,7 @@ static void object_add_generic_invoke_options(bContext *C, wmOperator *op)
|
||||
ED_object_location_from_view(C, loc);
|
||||
RNA_float_set_array(op->ptr, "location", loc);
|
||||
}
|
||||
|
||||
if (!RNA_property_is_set(op->ptr, "rotation")) {
|
||||
int view_align;
|
||||
float rot[3] = {0.f, 0.f, 0.f};
|
||||
|
||||
/* view align property is just used to set rotation property */
|
||||
if (!RNA_property_is_set(op->ptr, "view_align"))
|
||||
view_align = U.flag & USER_ADD_VIEWALIGNED;
|
||||
else
|
||||
view_align = RNA_boolean_get(op->ptr, "view_align");
|
||||
|
||||
if (view_align)
|
||||
ED_object_rotation_from_view(C, rot);
|
||||
|
||||
RNA_float_set_array(op->ptr, "rotation", rot);
|
||||
}
|
||||
|
||||
|
||||
if (!RNA_property_is_set(op->ptr, "layer")) {
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
@@ -248,17 +232,28 @@ int ED_object_add_generic_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
return op->type->exec(C, op);
|
||||
}
|
||||
|
||||
void ED_object_add_generic_get_opts(wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer)
|
||||
void ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer)
|
||||
{
|
||||
int a, layer_values[32];
|
||||
int view_align;
|
||||
|
||||
*enter_editmode = FALSE;
|
||||
if(RNA_struct_find_property(op->ptr, "enter_editmode") && RNA_boolean_get(op->ptr, "enter_editmode")) {
|
||||
*enter_editmode = TRUE;
|
||||
}
|
||||
|
||||
if (RNA_property_is_set(op->ptr, "view_align"))
|
||||
view_align = RNA_boolean_get(op->ptr, "view_align");
|
||||
else
|
||||
view_align = U.flag & USER_ADD_VIEWALIGNED;
|
||||
|
||||
if (view_align)
|
||||
ED_object_rotation_from_view(C, rot);
|
||||
else
|
||||
RNA_float_get_array(op->ptr, "rotation", rot);
|
||||
|
||||
|
||||
RNA_float_get_array(op->ptr, "location", loc);
|
||||
RNA_float_get_array(op->ptr, "rotation", rot);
|
||||
RNA_boolean_get_array(op->ptr, "layer", layer_values);
|
||||
|
||||
for(a=0; a<32; a++)
|
||||
@@ -303,7 +298,7 @@ static int object_add_exec(bContext *C, wmOperator *op)
|
||||
unsigned int layer;
|
||||
float loc[3], rot[3];
|
||||
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_type(C, RNA_enum_get(op->ptr, "type"), loc, rot, enter_editmode, layer);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
@@ -362,7 +357,7 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type)
|
||||
float mat[4][4];
|
||||
|
||||
object_add_generic_invoke_options(C, op);
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
if(type==PFIELD_GUIDE) {
|
||||
ob= ED_object_add_type(C, OB_CURVE, loc, rot, FALSE, layer);
|
||||
@@ -437,7 +432,7 @@ static int object_camera_add_exec(bContext *C, wmOperator *op)
|
||||
RNA_boolean_set(op->ptr, "view_align", 1);
|
||||
|
||||
object_add_generic_invoke_options(C, op);
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
ob= ED_object_add_type(C, OB_CAMERA, loc, rot, FALSE, layer);
|
||||
|
||||
@@ -493,7 +488,7 @@ static int object_add_curve_exec(bContext *C, wmOperator *op)
|
||||
float mat[4][4];
|
||||
|
||||
object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
if(obedit==NULL || obedit->type!=OB_CURVE) {
|
||||
Curve *cu;
|
||||
@@ -585,7 +580,7 @@ static int object_add_surface_exec(bContext *C, wmOperator *op)
|
||||
float mat[4][4];
|
||||
|
||||
object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
if(obedit==NULL || obedit->type!=OB_SURF) {
|
||||
obedit= ED_object_add_type(C, OB_SURF, loc, rot, TRUE, layer);
|
||||
@@ -650,7 +645,7 @@ static int object_metaball_add_exec(bContext *C, wmOperator *op)
|
||||
float mat[4][4];
|
||||
|
||||
object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
if(obedit==NULL || obedit->type!=OB_MBALL) {
|
||||
obedit= ED_object_add_type(C, OB_MBALL, loc, rot, TRUE, layer);
|
||||
@@ -720,7 +715,7 @@ static int object_add_text_exec(bContext *C, wmOperator *op)
|
||||
float loc[3], rot[3];
|
||||
|
||||
object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
if(obedit && obedit->type==OB_FONT)
|
||||
return OPERATOR_CANCELLED;
|
||||
@@ -760,7 +755,7 @@ static int object_armature_add_exec(bContext *C, wmOperator *op)
|
||||
float loc[3], rot[3];
|
||||
|
||||
object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
if ((obedit==NULL) || (obedit->type != OB_ARMATURE)) {
|
||||
obedit= ED_object_add_type(C, OB_ARMATURE, loc, rot, TRUE, layer);
|
||||
@@ -815,7 +810,7 @@ static int object_lamp_add_exec(bContext *C, wmOperator *op)
|
||||
float loc[3], rot[3];
|
||||
|
||||
object_add_generic_invoke_options(C, op);
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
ob= ED_object_add_type(C, OB_LAMP, loc, rot, FALSE, layer);
|
||||
if(ob && ob->data)
|
||||
@@ -862,7 +857,7 @@ static int group_instance_add_exec(bContext *C, wmOperator *op)
|
||||
float loc[3], rot[3];
|
||||
|
||||
object_add_generic_invoke_options(C, op);
|
||||
ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer);
|
||||
ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer);
|
||||
|
||||
if(group) {
|
||||
Object *ob= ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE, layer);
|
||||
|
||||
@@ -855,14 +855,16 @@ static void view3d_get_viewborder_size(Scene *scene, ARegion *ar, float size_r[2
|
||||
}
|
||||
}
|
||||
|
||||
void calc_viewborder(Scene *scene, ARegion *ar, View3D *v3d, rctf *viewborder_r)
|
||||
void calc_viewborder(Scene *scene, ARegion *ar, RegionView3D *rv3d, View3D *v3d, rctf *viewborder_r)
|
||||
{
|
||||
RegionView3D *rv3d= ar->regiondata;
|
||||
float zoomfac, size[2];
|
||||
float dx= 0.0f, dy= 0.0f;
|
||||
|
||||
view3d_get_viewborder_size(scene, ar, size);
|
||||
|
||||
if (rv3d == NULL)
|
||||
rv3d = ar->regiondata;
|
||||
|
||||
/* magic zoom calculation, no idea what
|
||||
* it signifies, if you find out, tell me! -zr
|
||||
*/
|
||||
@@ -971,13 +973,14 @@ static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d)
|
||||
float x3, y3, x4, y4;
|
||||
rctf viewborder;
|
||||
Camera *ca= NULL;
|
||||
RegionView3D *rv3d= (RegionView3D *)ar->regiondata;
|
||||
|
||||
if(v3d->camera==NULL)
|
||||
return;
|
||||
if(v3d->camera->type==OB_CAMERA)
|
||||
ca = v3d->camera->data;
|
||||
|
||||
calc_viewborder(scene, ar, v3d, &viewborder);
|
||||
calc_viewborder(scene, ar, rv3d, v3d, &viewborder);
|
||||
x1= viewborder.xmin;
|
||||
y1= viewborder.ymin;
|
||||
x2= viewborder.xmax;
|
||||
@@ -1306,7 +1309,7 @@ static void draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d)
|
||||
if(rv3d->persp==RV3D_CAMOB) {
|
||||
rctf vb;
|
||||
|
||||
calc_viewborder(scene, ar, v3d, &vb);
|
||||
calc_viewborder(scene, ar, rv3d, v3d, &vb);
|
||||
|
||||
x1= vb.xmin;
|
||||
y1= vb.ymin;
|
||||
|
||||
@@ -1482,6 +1482,7 @@ static int render_border_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
ARegion *ar= CTX_wm_region(C);
|
||||
RegionView3D *rv3d= ED_view3d_context_rv3d(C);
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
|
||||
rcti rect;
|
||||
@@ -1493,11 +1494,8 @@ static int render_border_exec(bContext *C, wmOperator *op)
|
||||
rect.xmax= RNA_int_get(op->ptr, "xmax");
|
||||
rect.ymax= RNA_int_get(op->ptr, "ymax");
|
||||
|
||||
if (!ar || ar->regiontype != RGN_TYPE_WINDOW)
|
||||
return OPERATOR_CANCELLED;
|
||||
|
||||
/* calculate range */
|
||||
calc_viewborder(scene, ar, v3d, &vb);
|
||||
calc_viewborder(scene, ar, rv3d, v3d, &vb);
|
||||
|
||||
scene->r.border.xmin= ((float)rect.xmin-vb.xmin)/(vb.xmax-vb.xmin);
|
||||
scene->r.border.ymin= ((float)rect.ymin-vb.ymin)/(vb.ymax-vb.ymin);
|
||||
@@ -1530,7 +1528,7 @@ static int render_border_exec(bContext *C, wmOperator *op)
|
||||
|
||||
static int view3d_render_border_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
RegionView3D *rv3d= CTX_wm_region_view3d(C);
|
||||
RegionView3D *rv3d= ED_view3d_context_rv3d(C);
|
||||
|
||||
/* if not in camera view do not exec the operator*/
|
||||
if (rv3d->persp == RV3D_CAMOB) return WM_border_select_invoke(C, op, event);
|
||||
|
||||
@@ -125,7 +125,7 @@ void draw_depth_gpencil(Scene *scene, ARegion *ar, View3D *v3d);
|
||||
void view3d_clr_clipping(void);
|
||||
void view3d_set_clipping(RegionView3D *rv3d);
|
||||
void add_view3d_after(View3D *v3d, Base *base, int type, int flag);
|
||||
void calc_viewborder(Scene *scene, struct ARegion *ar, View3D *v3d, rctf *viewborder_r);
|
||||
void calc_viewborder(Scene *scene, struct ARegion *ar, struct RegionView3D *rv3d, View3D *v3d, rctf *viewborder_r);
|
||||
|
||||
void circf(float x, float y, float rad);
|
||||
void circ(float x, float y, float rad);
|
||||
|
||||
@@ -1820,7 +1820,7 @@ static int game_engine_exec(bContext *C, wmOperator *op)
|
||||
|
||||
if(rv3d->persp==RV3D_CAMOB && startscene->gm.framing.type == SCE_GAMEFRAMING_BARS && startscene->gm.stereoflag != STEREO_DOME) { /* Letterbox */
|
||||
rctf cam_framef;
|
||||
calc_viewborder(startscene, ar, CTX_wm_view3d(C), &cam_framef);
|
||||
calc_viewborder(startscene, ar, rv3d, CTX_wm_view3d(C), &cam_framef);
|
||||
cam_frame.xmin = cam_framef.xmin + ar->winrct.xmin;
|
||||
cam_frame.xmax = cam_framef.xmax + ar->winrct.xmin;
|
||||
cam_frame.ymin = cam_framef.ymin + ar->winrct.ymin;
|
||||
|
||||
Reference in New Issue
Block a user