Curves: add initial edit mode support
This adds initial support for edit mode for the experimental new curves object. For now we can only toggle in and out of the mode, no real interraction is possible. This patch also adds empty menus in edit mode. Those were added mainly to quiet warnings as the menus are programmatically added to the edit mode based on the object type and context. Ref T95769 Reviewed By: JacquesLucke, HooglyBoogly Maniphest Tasks: T95769 Differential Revision: https://developer.blender.org/D14136
This commit is contained in:
parent
61aaeb3745
commit
5f16e24cc9
Notes:
blender-bot
2023-02-13 16:14:05 +01:00
Referenced by issue #100988, Regression: Sculpt Layer brush "strength" jittering while in Drag Dot mode Referenced by issue #95769, Add edit mode to hair curves object
|
@ -1899,6 +1899,13 @@ class VIEW3D_MT_select_paint_mask_vertex(Menu):
|
|||
layout.operator("paint.vert_select_ungrouped", text="Ungrouped Vertices")
|
||||
|
||||
|
||||
class VIEW3D_MT_select_edit_curves(Menu):
|
||||
bl_label = "Select"
|
||||
|
||||
def draw(self, _context):
|
||||
pass
|
||||
|
||||
|
||||
class VIEW3D_MT_angle_control(Menu):
|
||||
bl_label = "Angle Control"
|
||||
|
||||
|
@ -5123,6 +5130,13 @@ class VIEW3D_MT_edit_gpencil_showhide(Menu):
|
|||
layout.operator("gpencil.hide", text="Hide Inactive Layers").unselected = True
|
||||
|
||||
|
||||
class VIEW3D_MT_edit_curves(Menu):
|
||||
bl_label = "Curves"
|
||||
|
||||
def draw(self, _context):
|
||||
pass
|
||||
|
||||
|
||||
class VIEW3D_MT_object_mode_pie(Menu):
|
||||
bl_label = "Mode"
|
||||
|
||||
|
@ -7544,6 +7558,7 @@ classes = (
|
|||
VIEW3D_MT_select_gpencil,
|
||||
VIEW3D_MT_select_paint_mask,
|
||||
VIEW3D_MT_select_paint_mask_vertex,
|
||||
VIEW3D_MT_select_edit_curves,
|
||||
VIEW3D_MT_angle_control,
|
||||
VIEW3D_MT_mesh_add,
|
||||
VIEW3D_MT_curve_add,
|
||||
|
@ -7666,6 +7681,7 @@ classes = (
|
|||
VIEW3D_MT_edit_armature_names,
|
||||
VIEW3D_MT_edit_armature_delete,
|
||||
VIEW3D_MT_edit_gpencil_transform,
|
||||
VIEW3D_MT_edit_curves,
|
||||
VIEW3D_MT_object_mode_pie,
|
||||
VIEW3D_MT_view_pie,
|
||||
VIEW3D_MT_transform_gizmo_pie,
|
||||
|
|
|
@ -106,6 +106,7 @@ typedef enum eContextObjectMode {
|
|||
CTX_MODE_EDIT_ARMATURE,
|
||||
CTX_MODE_EDIT_METABALL,
|
||||
CTX_MODE_EDIT_LATTICE,
|
||||
CTX_MODE_EDIT_CURVES,
|
||||
CTX_MODE_POSE,
|
||||
CTX_MODE_SCULPT,
|
||||
CTX_MODE_PAINT_WEIGHT,
|
||||
|
|
|
@ -1160,6 +1160,8 @@ enum eContextObjectMode CTX_data_mode_enum_ex(const Object *obedit,
|
|||
return CTX_MODE_EDIT_METABALL;
|
||||
case OB_LATTICE:
|
||||
return CTX_MODE_EDIT_LATTICE;
|
||||
case OB_CURVES:
|
||||
return CTX_MODE_EDIT_CURVES;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -1227,6 +1229,7 @@ static const char *data_mode_strings[] = {
|
|||
"armature_edit",
|
||||
"mball_edit",
|
||||
"lattice_edit",
|
||||
"curves_edit",
|
||||
"posemode",
|
||||
"sculpt_mode",
|
||||
"weightpaint",
|
||||
|
|
|
@ -184,6 +184,7 @@ static void OVERLAY_cache_init(void *vedata)
|
|||
break;
|
||||
case CTX_MODE_SCULPT_CURVES:
|
||||
case CTX_MODE_OBJECT:
|
||||
case CTX_MODE_EDIT_CURVES:
|
||||
break;
|
||||
default:
|
||||
BLI_assert_msg(0, "Draw mode invalid");
|
||||
|
|
|
@ -805,6 +805,10 @@ bool ED_object_editmode_enter_ex(Main *bmain, Scene *scene, Object *ob, int flag
|
|||
|
||||
WM_main_add_notifier(NC_SCENE | ND_MODE | NS_EDITMODE_CURVE, scene);
|
||||
}
|
||||
else if (ob->type == OB_CURVES) {
|
||||
ok = true;
|
||||
WM_main_add_notifier(NC_SCENE | ND_MODE | NS_EDITMODE_CURVES, scene);
|
||||
}
|
||||
|
||||
if (ok) {
|
||||
DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY);
|
||||
|
|
|
@ -143,7 +143,7 @@ bool ED_object_mode_compat_test(const Object *ob, eObjectMode mode)
|
|||
}
|
||||
break;
|
||||
case OB_CURVES:
|
||||
if (mode & (OB_MODE_SCULPT_CURVES)) {
|
||||
if (mode & (OB_MODE_EDIT | OB_MODE_SCULPT_CURVES)) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -1478,6 +1478,9 @@ void ED_view3d_buttons_region_layout_ex(const bContext *C,
|
|||
case CTX_MODE_EDIT_CURVE:
|
||||
ARRAY_SET_ITEMS(contexts, ".curve_edit");
|
||||
break;
|
||||
case CTX_MODE_EDIT_CURVES:
|
||||
ARRAY_SET_ITEMS(contexts, ".curves_edit");
|
||||
break;
|
||||
case CTX_MODE_EDIT_SURFACE:
|
||||
ARRAY_SET_ITEMS(contexts, ".curve_edit");
|
||||
break;
|
||||
|
|
|
@ -515,7 +515,7 @@ enum {
|
|||
OB_VOLUME))
|
||||
#define OB_TYPE_SUPPORT_VGROUP(_type) (ELEM(_type, OB_MESH, OB_LATTICE, OB_GPENCIL))
|
||||
#define OB_TYPE_SUPPORT_EDITMODE(_type) \
|
||||
(ELEM(_type, OB_MESH, OB_FONT, OB_CURVE, OB_SURF, OB_MBALL, OB_LATTICE, OB_ARMATURE))
|
||||
(ELEM(_type, OB_MESH, OB_FONT, OB_CURVE, OB_SURF, OB_MBALL, OB_LATTICE, OB_ARMATURE, OB_CURVES))
|
||||
#define OB_TYPE_SUPPORT_PARVERT(_type) (ELEM(_type, OB_MESH, OB_SURF, OB_CURVE, OB_LATTICE))
|
||||
|
||||
/** Matches #OB_TYPE_SUPPORT_EDITMODE. */
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
const EnumPropertyItem rna_enum_context_mode_items[] = {
|
||||
{CTX_MODE_EDIT_MESH, "EDIT_MESH", 0, "Mesh Edit", ""},
|
||||
{CTX_MODE_EDIT_CURVE, "EDIT_CURVE", 0, "Curve Edit", ""},
|
||||
{CTX_MODE_EDIT_CURVES, "EDIT_CURVES", 0, "Curves Edit", ""},
|
||||
{CTX_MODE_EDIT_SURFACE, "EDIT_SURFACE", 0, "Surface Edit", ""},
|
||||
{CTX_MODE_EDIT_TEXT, "EDIT_TEXT", 0, "Text Edit", ""},
|
||||
/* PARSKEL reuse will give issues */
|
||||
|
|
|
@ -470,6 +470,7 @@ typedef struct wmNotifier {
|
|||
#define NS_EDITMODE_ARMATURE (8 << 8)
|
||||
#define NS_MODE_POSE (9 << 8)
|
||||
#define NS_MODE_PARTICLE (10 << 8)
|
||||
#define NS_EDITMODE_CURVES (11 << 8)
|
||||
|
||||
/* subtype 3d view editing */
|
||||
#define NS_VIEW3D_GPU (16 << 8)
|
||||
|
|
|
@ -106,6 +106,9 @@ wmKeyMap *WM_keymap_guess_from_context(const bContext *C)
|
|||
case CTX_MODE_EDIT_CURVE:
|
||||
km_id = "Curve";
|
||||
break;
|
||||
case CTX_MODE_EDIT_CURVES:
|
||||
km_id = "Curves";
|
||||
break;
|
||||
case CTX_MODE_EDIT_SURFACE:
|
||||
km_id = "Curve";
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue