UI: Asset Shelf (Experimental Feature) #104831

Closed
Julian Eisel wants to merge 399 commits from asset-shelf into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
42 changed files with 547 additions and 234 deletions
Showing only changes of commit f4a21e3d20 - Show all commits

View File

@ -6148,14 +6148,17 @@ class VIEW3D_PT_shading_lighting(Panel):
split = layout.split(factor=0.9)
col = split.column()
engine = context.scene.render.engine
row = col.row()
row.prop(shading, "use_studiolight_view_rotation", text="", icon='WORLD', toggle=True)
row = row.row()
if engine != 'BLENDER_EEVEE_NEXT':
row.prop(shading, "use_studiolight_view_rotation", text="", icon='WORLD', toggle=True)
row = row.row()
row.prop(shading, "studiolight_rotate_z", text="Rotation")
col.prop(shading, "studiolight_intensity")
col.prop(shading, "studiolight_background_alpha")
col.prop(shading, "studiolight_background_blur")
if engine != 'BLENDER_EEVEE_NEXT':
col.prop(shading, "studiolight_background_blur")
col = split.column() # to align properly with above
elif shading.type == 'RENDERED':
@ -6179,7 +6182,9 @@ class VIEW3D_PT_shading_lighting(Panel):
col.prop(shading, "studiolight_rotate_z", text="Rotation")
col.prop(shading, "studiolight_intensity")
col.prop(shading, "studiolight_background_alpha")
col.prop(shading, "studiolight_background_blur")
engine = context.scene.render.engine
if engine != 'BLENDER_EEVEE_NEXT':
col.prop(shading, "studiolight_background_blur")
col = split.column() # to align properly with above

View File

@ -127,11 +127,11 @@ typedef enum eContextObjectMode {
CTX_MODE_PAINT_TEXTURE,
CTX_MODE_PARTICLE,
CTX_MODE_OBJECT,
CTX_MODE_PAINT_GPENCIL,
CTX_MODE_PAINT_GPENCIL_LEGACY,
CTX_MODE_EDIT_GPENCIL_LEGACY,
CTX_MODE_SCULPT_GPENCIL,
CTX_MODE_WEIGHT_GPENCIL,
CTX_MODE_VERTEX_GPENCIL,
CTX_MODE_SCULPT_GPENCIL_LEGACY,
CTX_MODE_WEIGHT_GPENCIL_LEGACY,
CTX_MODE_VERTEX_GPENCIL_LEGACY,
CTX_MODE_SCULPT_CURVES,
} eContextObjectMode;
#define CTX_MODE_NUM (CTX_MODE_SCULPT_CURVES + 1)

View File

@ -579,19 +579,19 @@ Brush *BKE_brush_add_gpencil(Main *bmain, ToolSettings *ts, const char *name, eO
Paint *paint = nullptr;
Brush *brush;
switch (mode) {
case OB_MODE_PAINT_GPENCIL: {
case OB_MODE_PAINT_GPENCIL_LEGACY: {
paint = &ts->gp_paint->paint;
break;
}
case OB_MODE_SCULPT_GPENCIL: {
case OB_MODE_SCULPT_GPENCIL_LEGACY: {
paint = &ts->gp_sculptpaint->paint;
break;
}
case OB_MODE_WEIGHT_GPENCIL: {
case OB_MODE_WEIGHT_GPENCIL_LEGACY: {
paint = &ts->gp_weightpaint->paint;
break;
}
case OB_MODE_VERTEX_GPENCIL: {
case OB_MODE_VERTEX_GPENCIL_LEGACY: {
paint = &ts->gp_vertexpaint->paint;
break;
}
@ -1398,86 +1398,86 @@ void BKE_brush_gpencil_paint_presets(Main *bmain, ToolSettings *ts, const bool r
Brush *brush_prev = paint->brush;
Brush *brush, *deft_draw;
/* Airbrush brush. */
brush = gpencil_brush_ensure(bmain, ts, "Airbrush", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Airbrush", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_AIRBRUSH);
}
/* Ink Pen brush. */
brush = gpencil_brush_ensure(bmain, ts, "Ink Pen", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Ink Pen", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_INK_PEN);
}
/* Ink Pen Rough brush. */
brush = gpencil_brush_ensure(bmain, ts, "Ink Pen Rough", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Ink Pen Rough", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_INK_PEN_ROUGH);
}
/* Marker Bold brush. */
brush = gpencil_brush_ensure(bmain, ts, "Marker Bold", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Marker Bold", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_MARKER_BOLD);
}
/* Marker Chisel brush. */
brush = gpencil_brush_ensure(bmain, ts, "Marker Chisel", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Marker Chisel", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_MARKER_CHISEL);
}
/* Pen brush. */
brush = gpencil_brush_ensure(bmain, ts, "Pen", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Pen", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_PEN);
}
/* Pencil Soft brush. */
brush = gpencil_brush_ensure(bmain, ts, "Pencil Soft", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Pencil Soft", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_PENCIL_SOFT);
}
/* Pencil brush. */
brush = gpencil_brush_ensure(bmain, ts, "Pencil", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Pencil", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_PENCIL);
}
deft_draw = brush; /* save default brush. */
/* Fill brush. */
brush = gpencil_brush_ensure(bmain, ts, "Fill Area", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Fill Area", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_FILL_AREA);
}
/* Soft Eraser brush. */
brush = gpencil_brush_ensure(bmain, ts, "Eraser Soft", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Eraser Soft", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_ERASER_SOFT);
}
/* Hard Eraser brush. */
brush = gpencil_brush_ensure(bmain, ts, "Eraser Hard", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Eraser Hard", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_ERASER_HARD);
}
/* Point Eraser brush. */
brush = gpencil_brush_ensure(bmain, ts, "Eraser Point", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Eraser Point", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_ERASER_POINT);
}
/* Stroke Eraser brush. */
brush = gpencil_brush_ensure(bmain, ts, "Eraser Stroke", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Eraser Stroke", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_ERASER_STROKE);
}
/* Tint brush. */
brush = gpencil_brush_ensure(bmain, ts, "Tint", OB_MODE_PAINT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Tint", OB_MODE_PAINT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_TINT);
}
@ -1499,29 +1499,29 @@ void BKE_brush_gpencil_vertex_presets(Main *bmain, ToolSettings *ts, const bool
Brush *brush_prev = vertexpaint->brush;
Brush *brush, *deft_vertex;
/* Vertex Draw brush. */
brush = gpencil_brush_ensure(bmain, ts, "Vertex Draw", OB_MODE_VERTEX_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Vertex Draw", OB_MODE_VERTEX_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_VERTEX_DRAW);
}
deft_vertex = brush; /* save default brush. */
/* Vertex Blur brush. */
brush = gpencil_brush_ensure(bmain, ts, "Vertex Blur", OB_MODE_VERTEX_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Vertex Blur", OB_MODE_VERTEX_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_VERTEX_BLUR);
}
/* Vertex Average brush. */
brush = gpencil_brush_ensure(bmain, ts, "Vertex Average", OB_MODE_VERTEX_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Vertex Average", OB_MODE_VERTEX_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_VERTEX_AVERAGE);
}
/* Vertex Smear brush. */
brush = gpencil_brush_ensure(bmain, ts, "Vertex Smear", OB_MODE_VERTEX_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Vertex Smear", OB_MODE_VERTEX_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_VERTEX_SMEAR);
}
/* Vertex Replace brush. */
brush = gpencil_brush_ensure(bmain, ts, "Vertex Replace", OB_MODE_VERTEX_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Vertex Replace", OB_MODE_VERTEX_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_VERTEX_REPLACE);
}
@ -1546,56 +1546,59 @@ void BKE_brush_gpencil_sculpt_presets(Main *bmain, ToolSettings *ts, const bool
Brush *brush, *deft_sculpt;
/* Smooth brush. */
brush = gpencil_brush_ensure(bmain, ts, "Smooth Stroke", OB_MODE_SCULPT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Smooth Stroke", OB_MODE_SCULPT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_SMOOTH_STROKE);
}
deft_sculpt = brush;
/* Strength brush. */
brush = gpencil_brush_ensure(bmain, ts, "Strength Stroke", OB_MODE_SCULPT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(
bmain, ts, "Strength Stroke", OB_MODE_SCULPT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_STRENGTH_STROKE);
}
/* Thickness brush. */
brush = gpencil_brush_ensure(bmain, ts, "Thickness Stroke", OB_MODE_SCULPT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(
bmain, ts, "Thickness Stroke", OB_MODE_SCULPT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_THICKNESS_STROKE);
}
/* Grab brush. */
brush = gpencil_brush_ensure(bmain, ts, "Grab Stroke", OB_MODE_SCULPT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Grab Stroke", OB_MODE_SCULPT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_GRAB_STROKE);
}
/* Push brush. */
brush = gpencil_brush_ensure(bmain, ts, "Push Stroke", OB_MODE_SCULPT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Push Stroke", OB_MODE_SCULPT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_PUSH_STROKE);
}
/* Twist brush. */
brush = gpencil_brush_ensure(bmain, ts, "Twist Stroke", OB_MODE_SCULPT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Twist Stroke", OB_MODE_SCULPT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_TWIST_STROKE);
}
/* Pinch brush. */
brush = gpencil_brush_ensure(bmain, ts, "Pinch Stroke", OB_MODE_SCULPT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Pinch Stroke", OB_MODE_SCULPT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_PINCH_STROKE);
}
/* Randomize brush. */
brush = gpencil_brush_ensure(bmain, ts, "Randomize Stroke", OB_MODE_SCULPT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(
bmain, ts, "Randomize Stroke", OB_MODE_SCULPT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_RANDOMIZE_STROKE);
}
/* Clone brush. */
brush = gpencil_brush_ensure(bmain, ts, "Clone Stroke", OB_MODE_SCULPT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Clone Stroke", OB_MODE_SCULPT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_CLONE_STROKE);
}
@ -1620,26 +1623,26 @@ void BKE_brush_gpencil_weight_presets(Main *bmain, ToolSettings *ts, const bool
Brush *brush, *deft_weight;
/* Weight Draw brush. */
brush = gpencil_brush_ensure(bmain, ts, "Weight Draw", OB_MODE_WEIGHT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Weight Draw", OB_MODE_WEIGHT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_WEIGHT_DRAW);
}
deft_weight = brush; /* save default brush. */
/* Weight Blur brush. */
brush = gpencil_brush_ensure(bmain, ts, "Weight Blur", OB_MODE_WEIGHT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Weight Blur", OB_MODE_WEIGHT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_WEIGHT_BLUR);
}
/* Weight Average brush. */
brush = gpencil_brush_ensure(bmain, ts, "Weight Average", OB_MODE_WEIGHT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Weight Average", OB_MODE_WEIGHT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_WEIGHT_AVERAGE);
}
/* Weight Smear brush. */
brush = gpencil_brush_ensure(bmain, ts, "Weight Smear", OB_MODE_WEIGHT_GPENCIL, &r_new);
brush = gpencil_brush_ensure(bmain, ts, "Weight Smear", OB_MODE_WEIGHT_GPENCIL_LEGACY, &r_new);
if ((reset) || (r_new)) {
BKE_gpencil_brush_preset_set(bmain, brush, GP_BRUSH_PRESET_WEIGHT_SMEAR);
}

View File

@ -1213,20 +1213,20 @@ enum eContextObjectMode CTX_data_mode_enum_ex(const Object *obedit,
if (object_mode & OB_MODE_PARTICLE_EDIT) {
return CTX_MODE_PARTICLE;
}
if (object_mode & OB_MODE_PAINT_GPENCIL) {
return CTX_MODE_PAINT_GPENCIL;
if (object_mode & OB_MODE_PAINT_GPENCIL_LEGACY) {
return CTX_MODE_PAINT_GPENCIL_LEGACY;
}
if (object_mode & OB_MODE_EDIT_GPENCIL) {
if (object_mode & OB_MODE_EDIT_GPENCIL_LEGACY) {
return CTX_MODE_EDIT_GPENCIL_LEGACY;
}
if (object_mode & OB_MODE_SCULPT_GPENCIL) {
return CTX_MODE_SCULPT_GPENCIL;
if (object_mode & OB_MODE_SCULPT_GPENCIL_LEGACY) {
return CTX_MODE_SCULPT_GPENCIL_LEGACY;
}
if (object_mode & OB_MODE_WEIGHT_GPENCIL) {
return CTX_MODE_WEIGHT_GPENCIL;
if (object_mode & OB_MODE_WEIGHT_GPENCIL_LEGACY) {
return CTX_MODE_WEIGHT_GPENCIL_LEGACY;
}
if (object_mode & OB_MODE_VERTEX_GPENCIL) {
return CTX_MODE_VERTEX_GPENCIL;
if (object_mode & OB_MODE_VERTEX_GPENCIL_LEGACY) {
return CTX_MODE_VERTEX_GPENCIL_LEGACY;
}
if (object_mode & OB_MODE_SCULPT_CURVES) {
return CTX_MODE_SCULPT_CURVES;

View File

@ -2623,7 +2623,7 @@ Object *BKE_object_pose_armature_get_with_wpaint_check(Object *ob)
break;
}
case OB_GPENCIL_LEGACY: {
if ((ob->mode & OB_MODE_WEIGHT_GPENCIL) == 0) {
if ((ob->mode & OB_MODE_WEIGHT_GPENCIL_LEGACY) == 0) {
return nullptr;
}
break;

View File

@ -498,13 +498,13 @@ Paint *BKE_paint_get_active(Scene *sce, ViewLayer *view_layer)
return &ts->wpaint->paint;
case OB_MODE_TEXTURE_PAINT:
return &ts->imapaint.paint;
case OB_MODE_PAINT_GPENCIL:
case OB_MODE_PAINT_GPENCIL_LEGACY:
return &ts->gp_paint->paint;
case OB_MODE_VERTEX_GPENCIL:
case OB_MODE_VERTEX_GPENCIL_LEGACY:
return &ts->gp_vertexpaint->paint;
case OB_MODE_SCULPT_GPENCIL:
case OB_MODE_SCULPT_GPENCIL_LEGACY:
return &ts->gp_sculptpaint->paint;
case OB_MODE_WEIGHT_GPENCIL:
case OB_MODE_WEIGHT_GPENCIL_LEGACY:
return &ts->gp_weightpaint->paint;
case OB_MODE_SCULPT_CURVES:
return &ts->curves_sculpt->paint;
@ -614,15 +614,15 @@ ePaintMode BKE_paintmode_get_from_tool(const bToolRef *tref)
return PAINT_MODE_VERTEX;
case CTX_MODE_PAINT_WEIGHT:
return PAINT_MODE_WEIGHT;
case CTX_MODE_PAINT_GPENCIL:
case CTX_MODE_PAINT_GPENCIL_LEGACY:
return PAINT_MODE_GPENCIL;
case CTX_MODE_PAINT_TEXTURE:
return PAINT_MODE_TEXTURE_3D;
case CTX_MODE_VERTEX_GPENCIL:
case CTX_MODE_VERTEX_GPENCIL_LEGACY:
return PAINT_MODE_VERTEX_GPENCIL;
case CTX_MODE_SCULPT_GPENCIL:
case CTX_MODE_SCULPT_GPENCIL_LEGACY:
return PAINT_MODE_SCULPT_GPENCIL;
case CTX_MODE_WEIGHT_GPENCIL:
case CTX_MODE_WEIGHT_GPENCIL_LEGACY:
return PAINT_MODE_WEIGHT_GPENCIL;
case CTX_MODE_SCULPT_CURVES:
return PAINT_MODE_SCULPT_CURVES;
@ -685,19 +685,19 @@ void BKE_paint_runtime_init(const ToolSettings *ts, Paint *paint)
}
else if (ts->gp_paint && paint == &ts->gp_paint->paint) {
paint->runtime.tool_offset = offsetof(Brush, gpencil_tool);
paint->runtime.ob_mode = OB_MODE_PAINT_GPENCIL;
paint->runtime.ob_mode = OB_MODE_PAINT_GPENCIL_LEGACY;
}
else if (ts->gp_vertexpaint && paint == &ts->gp_vertexpaint->paint) {
paint->runtime.tool_offset = offsetof(Brush, gpencil_vertex_tool);
paint->runtime.ob_mode = OB_MODE_VERTEX_GPENCIL;
paint->runtime.ob_mode = OB_MODE_VERTEX_GPENCIL_LEGACY;
}
else if (ts->gp_sculptpaint && paint == &ts->gp_sculptpaint->paint) {
paint->runtime.tool_offset = offsetof(Brush, gpencil_sculpt_tool);
paint->runtime.ob_mode = OB_MODE_SCULPT_GPENCIL;
paint->runtime.ob_mode = OB_MODE_SCULPT_GPENCIL_LEGACY;
}
else if (ts->gp_weightpaint && paint == &ts->gp_weightpaint->paint) {
paint->runtime.tool_offset = offsetof(Brush, gpencil_weight_tool);
paint->runtime.ob_mode = OB_MODE_WEIGHT_GPENCIL;
paint->runtime.ob_mode = OB_MODE_WEIGHT_GPENCIL_LEGACY;
}
else if (ts->curves_sculpt && paint == &ts->curves_sculpt->paint) {
paint->runtime.tool_offset = offsetof(Brush, curves_sculpt_tool);

View File

@ -264,7 +264,7 @@ void BLO_update_defaults_workspace(WorkSpace *workspace, const char *app_templat
/* For 2D animation template. */
if (STREQ(workspace->id.name + 2, "Drawing")) {
workspace->object_mode = OB_MODE_PAINT_GPENCIL;
workspace->object_mode = OB_MODE_PAINT_GPENCIL_LEGACY;
}
/* For Sculpting template. */
@ -555,7 +555,7 @@ void BLO_update_defaults_startup_blend(Main *bmain, const char *app_template)
if (object->type == OB_GPENCIL_LEGACY) {
/* Set grease pencil object in drawing mode */
bGPdata *gpd = (bGPdata *)object->data;
object->mode = OB_MODE_PAINT_GPENCIL;
object->mode = OB_MODE_PAINT_GPENCIL_LEGACY;
gpd->flag |= GP_DATA_STROKE_PAINTMODE;
break;
}

View File

@ -152,6 +152,7 @@ set(SRC
engines/eevee_next/eevee_light.cc
engines/eevee_next/eevee_lightcache.cc
engines/eevee_next/eevee_lightprobe.cc
engines/eevee_next/eevee_lookdev.cc
engines/eevee_next/eevee_material.cc
engines/eevee_next/eevee_motion_blur.cc
engines/eevee_next/eevee_pipeline.cc
@ -297,6 +298,7 @@ set(SRC
engines/eevee_next/eevee_light.hh
engines/eevee_next/eevee_lightcache.hh
engines/eevee_next/eevee_lightprobe.hh
engines/eevee_next/eevee_lookdev.hh
engines/eevee_next/eevee_material.hh
engines/eevee_next/eevee_motion_blur.hh
engines/eevee_next/eevee_pipeline.hh

View File

@ -25,6 +25,7 @@
#include "eevee_irradiance_cache.hh"
#include "eevee_light.hh"
#include "eevee_lightprobe.hh"
#include "eevee_lookdev.hh"
#include "eevee_material.hh"
#include "eevee_motion_blur.hh"
#include "eevee_pipeline.hh"
@ -71,6 +72,7 @@ class Instance {
MainView main_view;
CaptureView capture_view;
World world;
LookdevModule lookdev;
LightProbeModule light_probes;
IrradianceCache irradiance_cache;
@ -124,6 +126,7 @@ class Instance {
main_view(*this),
capture_view(*this),
world(*this),
lookdev(*this),
light_probes(*this),
irradiance_cache(*this){};
~Instance(){};

View File

@ -0,0 +1,199 @@
/* SPDX-FileCopyrightText: 2023 Blender Foundation
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup eevee
*/
#include "BKE_image.h"
#include "BKE_lib_id.h"
#include "BKE_node.hh"
#include "BKE_studiolight.h"
#include "NOD_shader.h"
#include "eevee_instance.hh"
namespace blender::eevee {
/* -------------------------------------------------------------------- */
/** \name Viewport Override Node-Tree
* \{ */
LookdevWorldNodeTree::LookdevWorldNodeTree()
{
bNodeTree *ntree = ntreeAddTree(nullptr, "Lookdev World Nodetree", ntreeType_Shader->idname);
ntree_ = ntree;
bNode *coordinate = nodeAddStaticNode(nullptr, ntree, SH_NODE_TEX_COORD);
bNodeSocket *coordinate_out = nodeFindSocket(coordinate, SOCK_OUT, "Generated");
bNode *rotate = nodeAddStaticNode(nullptr, ntree, SH_NODE_VECTOR_ROTATE);
rotate->custom1 = NODE_VECTOR_ROTATE_TYPE_AXIS_Z;
bNodeSocket *rotate_vector_in = nodeFindSocket(rotate, SOCK_IN, "Vector");
angle_socket_ = static_cast<bNodeSocketValueFloat *>(
static_cast<void *>(nodeFindSocket(rotate, SOCK_IN, "Angle")->default_value));
bNodeSocket *rotate_out = nodeFindSocket(rotate, SOCK_OUT, "Vector");
bNode *environment = nodeAddStaticNode(nullptr, ntree, SH_NODE_TEX_ENVIRONMENT);
environment_node_ = environment;
NodeTexImage *environment_storage = static_cast<NodeTexImage *>(environment->storage);
bNodeSocket *environment_vector_in = nodeFindSocket(environment, SOCK_IN, "Vector");
bNodeSocket *environment_out = nodeFindSocket(environment, SOCK_OUT, "Color");
bNode *background = nodeAddStaticNode(nullptr, ntree, SH_NODE_BACKGROUND);
bNodeSocket *background_out = nodeFindSocket(background, SOCK_OUT, "Background");
bNodeSocket *background_color_in = nodeFindSocket(background, SOCK_IN, "Color");
intensity_socket_ = static_cast<bNodeSocketValueFloat *>(
static_cast<void *>(nodeFindSocket(background, SOCK_IN, "Strength")->default_value));
bNode *output = nodeAddStaticNode(nullptr, ntree, SH_NODE_OUTPUT_WORLD);
bNodeSocket *output_in = nodeFindSocket(output, SOCK_IN, "Surface");
nodeAddLink(ntree, coordinate, coordinate_out, rotate, rotate_vector_in);
nodeAddLink(ntree, rotate, rotate_out, environment, environment_vector_in);
nodeAddLink(ntree, environment, environment_out, background, background_color_in);
nodeAddLink(ntree, background, background_out, output, output_in);
nodeSetActive(ntree, output);
/* Create a dummy image data block to hold GPU textures generated by studiolights. */
BLI_strncpy(image.id.name, "IMLookdev", sizeof(image.id.name));
BKE_libblock_init_empty(&image.id);
image.type = IMA_TYPE_IMAGE;
image.source = IMA_SRC_GENERATED;
ImageTile *base_tile = BKE_image_get_tile(&image, 0);
base_tile->gen_x = 1;
base_tile->gen_y = 1;
base_tile->gen_type = IMA_GENTYPE_BLANK;
copy_v4_fl(base_tile->gen_color, 0.0f);
/*
* TODO: This works around the issue that the first time the texture is accessed the image would
* overwrite the set GPU texture. A better solution would be to use image data-blocks as part of
* the studiolights, but that requires a larger refactoring.
*/
BKE_image_get_gpu_texture(&image, &environment_storage->iuser, nullptr);
}
LookdevWorldNodeTree::~LookdevWorldNodeTree()
{
ntreeFreeEmbeddedTree(ntree_);
MEM_SAFE_FREE(ntree_);
BKE_libblock_free_datablock(&image.id, 0);
}
bNodeTree *LookdevWorldNodeTree::nodetree_get(const LookdevParameters &parameters)
{
intensity_socket_->value = parameters.intensity;
angle_socket_->value = parameters.rot_z;
GPU_TEXTURE_FREE_SAFE(image.gputexture[TEXTARGET_2D][0]);
environment_node_->id = nullptr;
StudioLight *sl = BKE_studiolight_find(parameters.hdri.c_str(),
STUDIOLIGHT_ORIENTATIONS_MATERIAL_MODE);
if (sl) {
BKE_studiolight_ensure_flag(sl, STUDIOLIGHT_EQUIRECT_RADIANCE_GPUTEXTURE);
GPUTexture *texture = sl->equirect_radiance_gputexture;
if (texture != nullptr) {
GPU_texture_ref(texture);
image.gputexture[TEXTARGET_2D][0] = texture;
environment_node_->id = &image.id;
}
}
return ntree_;
}
/** \} */
/* -------------------------------------------------------------------- */
/** \name Lookdev
*
* \{ */
LookdevModule::~LookdevModule()
{
GPU_material_free(&gpu_materials_);
gpu_material_ = nullptr;
}
bool LookdevModule::sync_world()
{
/* Check based on the v3d if the world is overridden. */
LookdevParameters new_parameters(inst_.v3d);
if (parameters_ != new_parameters) {
if (parameters_.gpu_parameters_changed(new_parameters)) {
GPU_material_free(&gpu_materials_);
gpu_material_ = nullptr;
}
parameters_ = new_parameters;
inst_.reflection_probes.do_world_update_set(true);
inst_.sampling.reset();
}
if (parameters_.show_scene_world) {
return false;
}
::bNodeTree *node_tree = world_override_tree.nodetree_get(parameters_);
gpu_material_ = inst_.shaders.material_shader_get("EEVEE Lookdev Background",
gpu_materials_,
node_tree,
MAT_PIPE_DEFERRED,
MAT_GEOM_WORLD,
true);
inst_.pipelines.world.sync(gpu_material_);
inst_.pipelines.background.sync(gpu_material_, parameters_.background_opacity);
return true;
}
/** \} */
/* -------------------------------------------------------------------- */
/** \name Parameters
* \{ */
LookdevParameters::LookdevParameters() {}
LookdevParameters::LookdevParameters(const ::View3D *v3d)
{
if (v3d == nullptr) {
return;
}
const ::View3DShading &shading = v3d->shading;
show_scene_world = shading.type == OB_RENDER ? shading.flag & V3D_SHADING_SCENE_WORLD_RENDER :
shading.flag & V3D_SHADING_SCENE_WORLD;
if (!show_scene_world) {
rot_z = shading.studiolight_rot_z;
background_opacity = shading.studiolight_background;
blur = shading.studiolight_blur;
intensity = shading.studiolight_intensity;
hdri = StringRefNull(shading.lookdev_light);
}
}
bool LookdevParameters::operator==(const LookdevParameters &other) const
{
return hdri == other.hdri && rot_z == other.rot_z &&
background_opacity == other.background_opacity && blur == other.blur &&
intensity == other.intensity && show_scene_world == other.show_scene_world;
}
bool LookdevParameters::gpu_parameters_changed(const LookdevParameters &other) const
{
return !(hdri == other.hdri && rot_z == other.rot_z && blur == other.blur &&
intensity == other.intensity);
}
bool LookdevParameters::operator!=(const LookdevParameters &other) const
{
return !(*this == other);
}
/** \} */
} // namespace blender::eevee

View File

@ -0,0 +1,96 @@
/* SPDX-FileCopyrightText: 2023 Blender Foundation
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup eevee
*
* World rendering with material handling. Also take care of lookdev
* HDRI and default material.
*/
#pragma once
#include "DNA_world_types.h"
namespace blender::eevee {
class Instance;
/* -------------------------------------------------------------------- */
/** \name Parameters
*
* Parameters used to check changes and to configure the world shader node tree.
*
* \{ */
struct LookdevParameters {
std::string hdri;
float rot_z = 0.0f;
float background_opacity = 0.0f;
float intensity = 1.0f;
float blur = 0.0f;
bool show_scene_world = true;
LookdevParameters();
LookdevParameters(const ::View3D *v3d);
bool operator==(const LookdevParameters &other) const;
bool operator!=(const LookdevParameters &other) const;
bool gpu_parameters_changed(const LookdevParameters &other) const;
};
/** \} */
/* -------------------------------------------------------------------- */
/** \name Viewport Override Node-Tree
*
* In a viewport the world can be overridden by a custom HDRI and some settings.
* \{ */
class LookdevWorldNodeTree {
private:
bNodeTree *ntree_ = nullptr;
bNode *environment_node_ = nullptr;
bNodeSocketValueFloat *intensity_socket_ = nullptr;
bNodeSocketValueFloat *angle_socket_ = nullptr;
::Image image = {};
public:
LookdevWorldNodeTree();
~LookdevWorldNodeTree();
bNodeTree *nodetree_get(const LookdevParameters &parameters);
};
/** \} */
/* -------------------------------------------------------------------- */
/** \name Lookdev
*
* Look Development can override the world.
*
* \{ */
class LookdevModule {
public:
private:
Instance &inst_;
LookdevWorldNodeTree world_override_tree;
LookdevParameters parameters_;
ListBase gpu_materials_ = {nullptr, nullptr};
GPUMaterial *gpu_material_ = nullptr;
public:
LookdevModule(Instance &inst) : inst_(inst){};
~LookdevModule();
bool sync_world();
private:
::World *get_world(::bNodeTree *node_tree);
};
/** \} */
} // namespace blender::eevee

View File

@ -22,7 +22,7 @@ namespace blender::eevee {
* Used to draw background.
* \{ */
void BackgroundPipeline::sync(GPUMaterial *gpumat)
void BackgroundPipeline::sync(GPUMaterial *gpumat, const float background_opacity)
{
Manager &manager = *inst_.manager;
RenderBuffers &rbufs = inst_.render_buffers;
@ -32,7 +32,7 @@ void BackgroundPipeline::sync(GPUMaterial *gpumat)
world_ps_.init();
world_ps_.state_set(DRW_STATE_WRITE_COLOR);
world_ps_.material_set(manager, gpumat);
world_ps_.push_constant("world_opacity_fade", inst_.film.background_opacity_get());
world_ps_.push_constant("world_opacity_fade", background_opacity);
world_ps_.bind_texture("utility_tx", inst_.pipelines.utility_tx);
/* RenderPasses & AOVs. Cleared by background (even if bad practice). */
world_ps_.bind_image("rp_color_img", &rbufs.rp_color_tx);

View File

@ -37,7 +37,7 @@ class BackgroundPipeline {
public:
BackgroundPipeline(Instance &inst) : inst_(inst){};
void sync(GPUMaterial *gpumat);
void sync(GPUMaterial *gpumat, float background_opacity);
void render(View &view);
};

View File

@ -78,9 +78,9 @@ World::~World()
void World::sync()
{
// if (inst_.lookdev.sync_world()) {
// return;
// }
if (inst_.lookdev.sync_world()) {
return;
}
::World *bl_world = inst_.scene->world;
if (bl_world == nullptr) {
@ -108,7 +108,7 @@ void World::sync()
inst_.manager->register_layer_attributes(gpumat);
inst_.pipelines.background.sync(gpumat);
inst_.pipelines.background.sync(gpumat, inst_.film.background_opacity_get());
inst_.pipelines.world.sync(gpumat);
}

View File

@ -113,7 +113,7 @@ void GPENCIL_engine_init(void *ved)
stl->pd->v3d_color_type = (v3d->shading.type == OB_SOLID) ? v3d->shading.color_type : -1;
/* Special case: If Vertex Paint mode, use always Vertex mode. */
if (v3d->shading.type == OB_SOLID && ctx->obact && ctx->obact->type == OB_GPENCIL_LEGACY &&
ctx->obact->mode == OB_MODE_VERTEX_GPENCIL)
ctx->obact->mode == OB_MODE_VERTEX_GPENCIL_LEGACY)
{
stl->pd->v3d_color_type = V3D_SHADING_VERTEX_COLOR;
}

View File

@ -199,10 +199,10 @@ static void OVERLAY_cache_init(void *vedata)
case CTX_MODE_EDIT_GPENCIL_LEGACY:
OVERLAY_edit_gpencil_legacy_cache_init(data);
break;
case CTX_MODE_PAINT_GPENCIL:
case CTX_MODE_SCULPT_GPENCIL:
case CTX_MODE_VERTEX_GPENCIL:
case CTX_MODE_WEIGHT_GPENCIL:
case CTX_MODE_PAINT_GPENCIL_LEGACY:
case CTX_MODE_SCULPT_GPENCIL_LEGACY:
case CTX_MODE_VERTEX_GPENCIL_LEGACY:
case CTX_MODE_WEIGHT_GPENCIL_LEGACY:
OVERLAY_edit_gpencil_legacy_cache_init(data);
break;
case CTX_MODE_EDIT_CURVES:
@ -733,10 +733,10 @@ static void OVERLAY_draw_scene(void *vedata)
case CTX_MODE_EDIT_GPENCIL_LEGACY:
OVERLAY_edit_gpencil_legacy_draw(data);
break;
case CTX_MODE_PAINT_GPENCIL:
case CTX_MODE_SCULPT_GPENCIL:
case CTX_MODE_VERTEX_GPENCIL:
case CTX_MODE_WEIGHT_GPENCIL:
case CTX_MODE_PAINT_GPENCIL_LEGACY:
case CTX_MODE_SCULPT_GPENCIL_LEGACY:
case CTX_MODE_VERTEX_GPENCIL_LEGACY:
case CTX_MODE_WEIGHT_GPENCIL_LEGACY:
OVERLAY_edit_gpencil_legacy_draw(data);
break;
case CTX_MODE_SCULPT_CURVES:

View File

@ -160,7 +160,7 @@ void OVERLAY_edit_gpencil_legacy_cache_init(OVERLAY_Data *vedata)
/* control points for primitives and speed guide */
const bool is_cppoint = (gpd->runtime.tot_cp_points > 0);
const bool is_speed_guide = (ts->gp_sculpt.guide.use_guide &&
(draw_ctx->object_mode == OB_MODE_PAINT_GPENCIL));
(draw_ctx->object_mode == OB_MODE_PAINT_GPENCIL_LEGACY));
const bool is_show_gizmo = (((v3d->gizmo_flag & V3D_GIZMO_HIDE) == 0) &&
((v3d->gizmo_flag & V3D_GIZMO_HIDE_TOOL) == 0));
@ -442,7 +442,7 @@ void OVERLAY_gpencil_legacy_cache_populate(OVERLAY_Data *vedata, Object *ob)
/* don't show object extras in set's */
if ((ob->base_flag & (BASE_FROM_SET | BASE_FROM_DUPLI)) == 0) {
if ((v3d->gp_flag & V3D_GP_SHOW_MATERIAL_NAME) && (ob->mode == OB_MODE_EDIT_GPENCIL) &&
if ((v3d->gp_flag & V3D_GP_SHOW_MATERIAL_NAME) && (ob->mode == OB_MODE_EDIT_GPENCIL_LEGACY) &&
DRW_state_show_text())
{
OVERLAY_gpencil_color_names(ob);

View File

@ -81,7 +81,7 @@ static bool is_cursor_visible(const DRWContextState *draw_ctx, Scene *scene, Vie
/* no exception met? then don't draw cursor! */
return false;
}
if (draw_ctx->object_mode & OB_MODE_WEIGHT_GPENCIL) {
if (draw_ctx->object_mode & OB_MODE_WEIGHT_GPENCIL_LEGACY) {
/* grease pencil hide always in some modes */
return false;
}

View File

@ -1954,7 +1954,7 @@ static int gpencil_brush_reset_exec(bContext *C, wmOperator *UNUSED(op))
Brush *brush = NULL;
switch (mode) {
case CTX_MODE_PAINT_GPENCIL: {
case CTX_MODE_PAINT_GPENCIL_LEGACY: {
Paint *paint = &ts->gp_paint->paint;
brush = paint->brush;
if (brush && brush->gpencil_settings) {
@ -1962,7 +1962,7 @@ static int gpencil_brush_reset_exec(bContext *C, wmOperator *UNUSED(op))
}
break;
}
case CTX_MODE_SCULPT_GPENCIL: {
case CTX_MODE_SCULPT_GPENCIL_LEGACY: {
Paint *paint = &ts->gp_sculptpaint->paint;
brush = paint->brush;
if (brush && brush->gpencil_settings) {
@ -1970,7 +1970,7 @@ static int gpencil_brush_reset_exec(bContext *C, wmOperator *UNUSED(op))
}
break;
}
case CTX_MODE_WEIGHT_GPENCIL: {
case CTX_MODE_WEIGHT_GPENCIL_LEGACY: {
Paint *paint = &ts->gp_weightpaint->paint;
brush = paint->brush;
if (brush && brush->gpencil_settings) {
@ -1978,7 +1978,7 @@ static int gpencil_brush_reset_exec(bContext *C, wmOperator *UNUSED(op))
}
break;
}
case CTX_MODE_VERTEX_GPENCIL: {
case CTX_MODE_VERTEX_GPENCIL_LEGACY: {
Paint *paint = &ts->gp_vertexpaint->paint;
brush = paint->brush;
if (brush && brush->gpencil_settings) {
@ -2023,19 +2023,19 @@ static Brush *gpencil_brush_get_first_by_mode(Main *bmain,
continue;
}
if ((mode == CTX_MODE_PAINT_GPENCIL) && (brush->gpencil_tool == tool)) {
if ((mode == CTX_MODE_PAINT_GPENCIL_LEGACY) && (brush->gpencil_tool == tool)) {
return brush;
}
if ((mode == CTX_MODE_SCULPT_GPENCIL) && (brush->gpencil_sculpt_tool == tool)) {
if ((mode == CTX_MODE_SCULPT_GPENCIL_LEGACY) && (brush->gpencil_sculpt_tool == tool)) {
return brush;
}
if ((mode == CTX_MODE_WEIGHT_GPENCIL) && (brush->gpencil_weight_tool == tool)) {
if ((mode == CTX_MODE_WEIGHT_GPENCIL_LEGACY) && (brush->gpencil_weight_tool == tool)) {
return brush;
}
if ((mode == CTX_MODE_VERTEX_GPENCIL) && (brush->gpencil_vertex_tool == tool)) {
if ((mode == CTX_MODE_VERTEX_GPENCIL_LEGACY) && (brush->gpencil_vertex_tool == tool)) {
return brush;
}
}
@ -2052,7 +2052,7 @@ static void gpencil_brush_delete_mode_brushes(Main *bmain,
for (Brush *brush = bmain->brushes.first; brush; brush = brush_next) {
brush_next = brush->id.next;
if ((brush->gpencil_settings == NULL) && (brush->ob_mode != OB_MODE_PAINT_GPENCIL)) {
if ((brush->gpencil_settings == NULL) && (brush->ob_mode != OB_MODE_PAINT_GPENCIL_LEGACY)) {
continue;
}
@ -2061,7 +2061,7 @@ static void gpencil_brush_delete_mode_brushes(Main *bmain,
if (preset != GP_BRUSH_PRESET_UNKNOWN) {
/* Verify to delete only the brushes of the current mode. */
if (mode == CTX_MODE_PAINT_GPENCIL) {
if (mode == CTX_MODE_PAINT_GPENCIL_LEGACY) {
if ((preset < GP_BRUSH_PRESET_AIRBRUSH) || (preset > GP_BRUSH_PRESET_TINT)) {
continue;
}
@ -2070,7 +2070,7 @@ static void gpencil_brush_delete_mode_brushes(Main *bmain,
}
}
if (mode == CTX_MODE_SCULPT_GPENCIL) {
if (mode == CTX_MODE_SCULPT_GPENCIL_LEGACY) {
if ((preset < GP_BRUSH_PRESET_SMOOTH_STROKE) || (preset > GP_BRUSH_PRESET_CLONE_STROKE)) {
continue;
}
@ -2079,7 +2079,7 @@ static void gpencil_brush_delete_mode_brushes(Main *bmain,
}
}
if (mode == CTX_MODE_WEIGHT_GPENCIL) {
if (mode == CTX_MODE_WEIGHT_GPENCIL_LEGACY) {
if ((preset < GP_BRUSH_PRESET_WEIGHT_DRAW) || (preset > GP_BRUSH_PRESET_WEIGHT_SMEAR)) {
continue;
}
@ -2088,7 +2088,7 @@ static void gpencil_brush_delete_mode_brushes(Main *bmain,
}
}
if (mode == CTX_MODE_VERTEX_GPENCIL) {
if (mode == CTX_MODE_VERTEX_GPENCIL_LEGACY) {
if ((preset < GP_BRUSH_PRESET_VERTEX_DRAW) || (preset > GP_BRUSH_PRESET_VERTEX_REPLACE)) {
continue;
}
@ -2119,19 +2119,19 @@ static int gpencil_brush_reset_all_exec(bContext *C, wmOperator *UNUSED(op))
Paint *paint = NULL;
switch (mode) {
case CTX_MODE_PAINT_GPENCIL: {
case CTX_MODE_PAINT_GPENCIL_LEGACY: {
paint = &ts->gp_paint->paint;
break;
}
case CTX_MODE_SCULPT_GPENCIL: {
case CTX_MODE_SCULPT_GPENCIL_LEGACY: {
paint = &ts->gp_sculptpaint->paint;
break;
}
case CTX_MODE_WEIGHT_GPENCIL: {
case CTX_MODE_WEIGHT_GPENCIL_LEGACY: {
paint = &ts->gp_weightpaint->paint;
break;
}
case CTX_MODE_VERTEX_GPENCIL: {
case CTX_MODE_VERTEX_GPENCIL_LEGACY: {
paint = &ts->gp_vertexpaint->paint;
break;
}
@ -2144,19 +2144,19 @@ static int gpencil_brush_reset_all_exec(bContext *C, wmOperator *UNUSED(op))
if (paint->brush) {
Brush *brush_active = paint->brush;
switch (mode) {
case CTX_MODE_PAINT_GPENCIL: {
case CTX_MODE_PAINT_GPENCIL_LEGACY: {
tool = brush_active->gpencil_tool;
break;
}
case CTX_MODE_SCULPT_GPENCIL: {
case CTX_MODE_SCULPT_GPENCIL_LEGACY: {
tool = brush_active->gpencil_sculpt_tool;
break;
}
case CTX_MODE_WEIGHT_GPENCIL: {
case CTX_MODE_WEIGHT_GPENCIL_LEGACY: {
tool = brush_active->gpencil_weight_tool;
break;
}
case CTX_MODE_VERTEX_GPENCIL: {
case CTX_MODE_VERTEX_GPENCIL_LEGACY: {
tool = brush_active->gpencil_vertex_tool;
break;
}
@ -2170,19 +2170,19 @@ static int gpencil_brush_reset_all_exec(bContext *C, wmOperator *UNUSED(op))
gpencil_brush_delete_mode_brushes(bmain, paint, mode);
switch (mode) {
case CTX_MODE_PAINT_GPENCIL: {
case CTX_MODE_PAINT_GPENCIL_LEGACY: {
BKE_brush_gpencil_paint_presets(bmain, ts, true);
break;
}
case CTX_MODE_SCULPT_GPENCIL: {
case CTX_MODE_SCULPT_GPENCIL_LEGACY: {
BKE_brush_gpencil_sculpt_presets(bmain, ts, true);
break;
}
case CTX_MODE_WEIGHT_GPENCIL: {
case CTX_MODE_WEIGHT_GPENCIL_LEGACY: {
BKE_brush_gpencil_weight_presets(bmain, ts, true);
break;
}
case CTX_MODE_VERTEX_GPENCIL: {
case CTX_MODE_VERTEX_GPENCIL_LEGACY: {
BKE_brush_gpencil_vertex_presets(bmain, ts, true);
break;
}
@ -2232,7 +2232,7 @@ static bool gpencil_vertex_group_poll(bContext *C)
if (BKE_id_is_editable(bmain, &ob->id) && BKE_id_is_editable(bmain, ob->data) &&
!BLI_listbase_is_empty(&gpd->vertex_group_names))
{
if (ELEM(ob->mode, OB_MODE_EDIT_GPENCIL, OB_MODE_SCULPT_GPENCIL)) {
if (ELEM(ob->mode, OB_MODE_EDIT_GPENCIL_LEGACY, OB_MODE_SCULPT_GPENCIL_LEGACY)) {
return true;
}
}
@ -2251,7 +2251,7 @@ static bool gpencil_vertex_group_weight_poll(bContext *C)
if (BKE_id_is_editable(bmain, &ob->id) && BKE_id_is_editable(bmain, ob->data) &&
!BLI_listbase_is_empty(&gpd->vertex_group_names))
{
if (ob->mode == OB_MODE_WEIGHT_GPENCIL) {
if (ob->mode == OB_MODE_WEIGHT_GPENCIL_LEGACY) {
return true;
}
}

View File

@ -179,7 +179,7 @@ static int gpencil_editmode_toggle_exec(bContext *C, wmOperator *op)
}
/* set mode */
if (gpd->flag & GP_DATA_STROKE_EDITMODE) {
mode = OB_MODE_EDIT_GPENCIL;
mode = OB_MODE_EDIT_GPENCIL_LEGACY;
}
else {
mode = OB_MODE_OBJECT;
@ -262,7 +262,8 @@ static bool gpencil_selectmode_toggle_poll(bContext *C)
{
/* edit only supported with grease pencil objects */
Object *ob = CTX_data_active_object(C);
if ((ob == NULL) || (ob->type != OB_GPENCIL_LEGACY) || (ob->mode != OB_MODE_EDIT_GPENCIL)) {
if ((ob == NULL) || (ob->type != OB_GPENCIL_LEGACY) || (ob->mode != OB_MODE_EDIT_GPENCIL_LEGACY))
{
return false;
}
@ -374,7 +375,7 @@ static int gpencil_paintmode_toggle_exec(bContext *C, wmOperator *op)
gpd->flag ^= GP_DATA_STROKE_PAINTMODE;
/* set mode */
if (gpd->flag & GP_DATA_STROKE_PAINTMODE) {
mode = OB_MODE_PAINT_GPENCIL;
mode = OB_MODE_PAINT_GPENCIL_LEGACY;
}
else {
mode = OB_MODE_OBJECT;
@ -389,7 +390,7 @@ static int gpencil_paintmode_toggle_exec(bContext *C, wmOperator *op)
ob->mode = mode;
}
if (mode == OB_MODE_PAINT_GPENCIL) {
if (mode == OB_MODE_PAINT_GPENCIL_LEGACY) {
/* Be sure we have brushes and Paint settings.
* Need Draw and Vertex (used for Tint). */
BKE_paint_ensure(ts, (Paint **)&ts->gp_paint);
@ -490,7 +491,7 @@ static int gpencil_sculptmode_toggle_exec(bContext *C, wmOperator *op)
gpd->flag ^= GP_DATA_STROKE_SCULPTMODE;
/* set mode */
if (gpd->flag & GP_DATA_STROKE_SCULPTMODE) {
mode = OB_MODE_SCULPT_GPENCIL;
mode = OB_MODE_SCULPT_GPENCIL_LEGACY;
}
else {
mode = OB_MODE_OBJECT;
@ -505,7 +506,7 @@ static int gpencil_sculptmode_toggle_exec(bContext *C, wmOperator *op)
ob->mode = mode;
}
if (mode == OB_MODE_SCULPT_GPENCIL) {
if (mode == OB_MODE_SCULPT_GPENCIL_LEGACY) {
/* Be sure we have brushes. */
BKE_paint_ensure(ts, (Paint **)&ts->gp_sculptpaint);
@ -590,7 +591,7 @@ static int gpencil_weightmode_toggle_exec(bContext *C, wmOperator *op)
gpd = ob->data;
is_object = true;
}
const int mode_flag = OB_MODE_WEIGHT_GPENCIL;
const int mode_flag = OB_MODE_WEIGHT_GPENCIL_LEGACY;
const bool is_mode_set = (ob->mode & mode_flag) != 0;
if (gpd == NULL) {
@ -601,7 +602,7 @@ static int gpencil_weightmode_toggle_exec(bContext *C, wmOperator *op)
gpd->flag ^= GP_DATA_STROKE_WEIGHTMODE;
/* set mode */
if (gpd->flag & GP_DATA_STROKE_WEIGHTMODE) {
mode = OB_MODE_WEIGHT_GPENCIL;
mode = OB_MODE_WEIGHT_GPENCIL_LEGACY;
}
else {
mode = OB_MODE_OBJECT;
@ -619,7 +620,7 @@ static int gpencil_weightmode_toggle_exec(bContext *C, wmOperator *op)
ED_object_posemode_set_for_weight_paint(C, bmain, ob, is_mode_set);
}
if (mode == OB_MODE_WEIGHT_GPENCIL) {
if (mode == OB_MODE_WEIGHT_GPENCIL_LEGACY) {
/* Be sure we have brushes. */
BKE_paint_ensure(ts, (Paint **)&ts->gp_weightpaint);
@ -710,7 +711,7 @@ static int gpencil_vertexmode_toggle_exec(bContext *C, wmOperator *op)
gpd->flag ^= GP_DATA_STROKE_VERTEXMODE;
/* set mode */
if (gpd->flag & GP_DATA_STROKE_VERTEXMODE) {
mode = OB_MODE_VERTEX_GPENCIL;
mode = OB_MODE_VERTEX_GPENCIL_LEGACY;
}
else {
mode = OB_MODE_OBJECT;
@ -725,7 +726,7 @@ static int gpencil_vertexmode_toggle_exec(bContext *C, wmOperator *op)
ob->mode = mode;
}
if (mode == OB_MODE_VERTEX_GPENCIL) {
if (mode == OB_MODE_VERTEX_GPENCIL_LEGACY) {
/* Be sure we have brushes.
* Need Draw as well (used for Palettes). */
BKE_paint_ensure(ts, (Paint **)&ts->gp_paint);
@ -5764,8 +5765,9 @@ bool ED_object_gpencil_exit(Main *bmain, Object *ob)
GP_DATA_STROKE_WEIGHTMODE | GP_DATA_STROKE_VERTEXMODE);
ob->restore_mode = ob->mode;
ob->mode &= ~(OB_MODE_PAINT_GPENCIL | OB_MODE_EDIT_GPENCIL | OB_MODE_SCULPT_GPENCIL |
OB_MODE_WEIGHT_GPENCIL | OB_MODE_VERTEX_GPENCIL);
ob->mode &= ~(OB_MODE_PAINT_GPENCIL_LEGACY | OB_MODE_EDIT_GPENCIL_LEGACY |
OB_MODE_SCULPT_GPENCIL_LEGACY | OB_MODE_WEIGHT_GPENCIL_LEGACY |
OB_MODE_VERTEX_GPENCIL_LEGACY);
/* Inform all CoW versions that we changed the mode. */
DEG_id_tag_update_ex(bmain, &ob->id, ID_RECALC_COPY_ON_WRITE);
@ -5793,7 +5795,7 @@ static bool gpencil_merge_by_distance_poll(bContext *C)
bGPDlayer *gpl = BKE_gpencil_layer_active_get(gpd);
return ((gpl != NULL) && (ob->mode == OB_MODE_EDIT_GPENCIL));
return ((gpl != NULL) && (ob->mode == OB_MODE_EDIT_GPENCIL_LEGACY));
}
static int gpencil_merge_by_distance_exec(bContext *C, wmOperator *op)
@ -5880,7 +5882,7 @@ static bool gpencil_stroke_normalize_poll(bContext *C)
bGPDlayer *gpl = BKE_gpencil_layer_active_get(gpd);
return ((gpl != NULL) && (ob->mode == OB_MODE_EDIT_GPENCIL));
return ((gpl != NULL) && (ob->mode == OB_MODE_EDIT_GPENCIL_LEGACY));
}
static void gpencil_stroke_normalize_ui(bContext *UNUSED(C), wmOperator *op)

View File

@ -2334,7 +2334,7 @@ static bool gpencil_fill_poll(bContext *C)
ScrArea *area = CTX_wm_area(C);
if (area->spacetype == SPACE_VIEW3D) {
if ((obact == NULL) || (obact->type != OB_GPENCIL_LEGACY) ||
(obact->mode != OB_MODE_PAINT_GPENCIL))
(obact->mode != OB_MODE_PAINT_GPENCIL_LEGACY))
{
return false;
}

View File

@ -1912,7 +1912,8 @@ static Brush *gpencil_get_default_eraser(Main *bmain, ToolSettings *ts)
if (brush->gpencil_settings == NULL) {
continue;
}
if ((brush->ob_mode == OB_MODE_PAINT_GPENCIL) && (brush->gpencil_tool == GPAINT_TOOL_ERASE)) {
if ((brush->ob_mode == OB_MODE_PAINT_GPENCIL_LEGACY) &&
(brush->gpencil_tool == GPAINT_TOOL_ERASE)) {
/* save first eraser to use later if no default */
if (brush_dft == NULL) {
brush_dft = brush;
@ -1930,7 +1931,7 @@ static Brush *gpencil_get_default_eraser(Main *bmain, ToolSettings *ts)
}
/* create a new soft eraser brush */
brush_dft = BKE_brush_add_gpencil(bmain, ts, "Soft Eraser", OB_MODE_PAINT_GPENCIL);
brush_dft = BKE_brush_add_gpencil(bmain, ts, "Soft Eraser", OB_MODE_PAINT_GPENCIL_LEGACY);
brush_dft->size = 30.0f;
brush_dft->gpencil_settings->flag |= GP_BRUSH_DEFAULT_ERASER;
brush_dft->gpencil_settings->icon_id = GP_BRUSH_ICON_ERASE_SOFT;
@ -3335,7 +3336,7 @@ static int gpencil_draw_invoke(bContext *C, wmOperator *op, const wmEvent *event
p->gpd->flag &= ~GP_DATA_STROKE_WEIGHTMODE;
/* set workspace mode */
ob->restore_mode = ob->mode;
ob->mode = OB_MODE_PAINT_GPENCIL;
ob->mode = OB_MODE_PAINT_GPENCIL_LEGACY;
/* redraw mode on screen */
WM_event_add_notifier(C, NC_SCENE | ND_MODE, NULL);
}

View File

@ -543,10 +543,10 @@ static int gpencil_select_random_exec(bContext *C, wmOperator *op)
const bool is_curve_edit = (bool)GPENCIL_CURVE_EDIT_SESSIONS_ON(gpd);
int selectmode;
if (ob && ob->mode == OB_MODE_SCULPT_GPENCIL) {
if (ob && ob->mode == OB_MODE_SCULPT_GPENCIL_LEGACY) {
selectmode = gpencil_select_mode_from_sculpt(ts->gpencil_selectmode_sculpt);
}
else if (ob && ob->mode == OB_MODE_VERTEX_GPENCIL) {
else if (ob && ob->mode == OB_MODE_VERTEX_GPENCIL_LEGACY) {
selectmode = gpencil_select_mode_from_vertex(ts->gpencil_selectmode_vertex);
}
else {
@ -1671,10 +1671,10 @@ static int gpencil_circle_select_exec(bContext *C, wmOperator *op)
const bool is_curve_edit = (bool)GPENCIL_CURVE_EDIT_SESSIONS_ON(gpd);
int selectmode;
if (ob && ob->mode == OB_MODE_SCULPT_GPENCIL) {
if (ob && ob->mode == OB_MODE_SCULPT_GPENCIL_LEGACY) {
selectmode = gpencil_select_mode_from_sculpt(ts->gpencil_selectmode_sculpt);
}
else if (ob && ob->mode == OB_MODE_VERTEX_GPENCIL) {
else if (ob && ob->mode == OB_MODE_VERTEX_GPENCIL_LEGACY) {
selectmode = gpencil_select_mode_from_vertex(ts->gpencil_selectmode_vertex);
}
else {
@ -2161,10 +2161,10 @@ static int gpencil_generic_select_exec(bContext *C,
const bool is_curve_edit = (bool)GPENCIL_CURVE_EDIT_SESSIONS_ON(gpd);
int selectmode;
if (ob && ob->mode == OB_MODE_SCULPT_GPENCIL) {
if (ob && ob->mode == OB_MODE_SCULPT_GPENCIL_LEGACY) {
selectmode = gpencil_select_mode_from_sculpt(ts->gpencil_selectmode_sculpt);
}
else if (ob && ob->mode == OB_MODE_VERTEX_GPENCIL) {
else if (ob && ob->mode == OB_MODE_VERTEX_GPENCIL_LEGACY) {
selectmode = gpencil_select_mode_from_vertex(ts->gpencil_selectmode_vertex);
}
else {
@ -2436,11 +2436,11 @@ static int gpencil_select_exec(bContext *C, wmOperator *op)
}
/* if select mode is stroke, use whole stroke */
if ((ob) && (ob->mode == OB_MODE_SCULPT_GPENCIL)) {
if ((ob) && (ob->mode == OB_MODE_SCULPT_GPENCIL_LEGACY)) {
whole |= (bool)(gpencil_select_mode_from_sculpt(ts->gpencil_selectmode_sculpt) ==
GP_SELECTMODE_STROKE);
}
else if ((ob) && (ob->mode == OB_MODE_VERTEX_GPENCIL)) {
else if ((ob) && (ob->mode == OB_MODE_VERTEX_GPENCIL_LEGACY)) {
whole |= (bool)(gpencil_select_mode_from_vertex(ts->gpencil_selectmode_sculpt) ==
GP_SELECTMODE_STROKE);
}
@ -2602,10 +2602,10 @@ static int gpencil_select_exec(bContext *C, wmOperator *op)
/* expand selection to segment */
int selectmode;
if (ob && ob->mode == OB_MODE_SCULPT_GPENCIL) {
if (ob && ob->mode == OB_MODE_SCULPT_GPENCIL_LEGACY) {
selectmode = gpencil_select_mode_from_sculpt(ts->gpencil_selectmode_sculpt);
}
else if (ob && ob->mode == OB_MODE_VERTEX_GPENCIL) {
else if (ob && ob->mode == OB_MODE_VERTEX_GPENCIL_LEGACY) {
selectmode = gpencil_select_mode_from_vertex(ts->gpencil_selectmode_vertex);
}
else {

View File

@ -1789,7 +1789,7 @@ float ED_gpencil_radial_control_scale(bContext *C,
const int mval[2])
{
float scale_fac = 1.0f;
if ((brush && brush->gpencil_settings) && (brush->ob_mode == OB_MODE_PAINT_GPENCIL) &&
if ((brush && brush->gpencil_settings) && (brush->ob_mode == OB_MODE_PAINT_GPENCIL_LEGACY) &&
(brush->gpencil_tool == GPAINT_TOOL_DRAW))
{
float cursor_radius = ED_gpencil_cursor_radius(C, mval[0], mval[1]);
@ -2029,7 +2029,7 @@ void ED_gpencil_setup_modes(bContext *C, bGPdata *gpd, int newmode)
}
switch (newmode) {
case OB_MODE_EDIT_GPENCIL:
case OB_MODE_EDIT_GPENCIL_LEGACY:
gpd->flag |= GP_DATA_STROKE_EDITMODE;
gpd->flag &= ~GP_DATA_STROKE_PAINTMODE;
gpd->flag &= ~GP_DATA_STROKE_SCULPTMODE;
@ -2037,7 +2037,7 @@ void ED_gpencil_setup_modes(bContext *C, bGPdata *gpd, int newmode)
gpd->flag &= ~GP_DATA_STROKE_VERTEXMODE;
ED_gpencil_toggle_brush_cursor(C, false, NULL);
break;
case OB_MODE_PAINT_GPENCIL:
case OB_MODE_PAINT_GPENCIL_LEGACY:
gpd->flag &= ~GP_DATA_STROKE_EDITMODE;
gpd->flag |= GP_DATA_STROKE_PAINTMODE;
gpd->flag &= ~GP_DATA_STROKE_SCULPTMODE;
@ -2045,7 +2045,7 @@ void ED_gpencil_setup_modes(bContext *C, bGPdata *gpd, int newmode)
gpd->flag &= ~GP_DATA_STROKE_VERTEXMODE;
ED_gpencil_toggle_brush_cursor(C, true, NULL);
break;
case OB_MODE_SCULPT_GPENCIL:
case OB_MODE_SCULPT_GPENCIL_LEGACY:
gpd->flag &= ~GP_DATA_STROKE_EDITMODE;
gpd->flag &= ~GP_DATA_STROKE_PAINTMODE;
gpd->flag |= GP_DATA_STROKE_SCULPTMODE;
@ -2053,7 +2053,7 @@ void ED_gpencil_setup_modes(bContext *C, bGPdata *gpd, int newmode)
gpd->flag &= ~GP_DATA_STROKE_VERTEXMODE;
ED_gpencil_toggle_brush_cursor(C, true, NULL);
break;
case OB_MODE_WEIGHT_GPENCIL:
case OB_MODE_WEIGHT_GPENCIL_LEGACY:
gpd->flag &= ~GP_DATA_STROKE_EDITMODE;
gpd->flag &= ~GP_DATA_STROKE_PAINTMODE;
gpd->flag &= ~GP_DATA_STROKE_SCULPTMODE;
@ -2061,7 +2061,7 @@ void ED_gpencil_setup_modes(bContext *C, bGPdata *gpd, int newmode)
gpd->flag &= ~GP_DATA_STROKE_VERTEXMODE;
ED_gpencil_toggle_brush_cursor(C, true, NULL);
break;
case OB_MODE_VERTEX_GPENCIL:
case OB_MODE_VERTEX_GPENCIL_LEGACY:
gpd->flag &= ~GP_DATA_STROKE_EDITMODE;
gpd->flag &= ~GP_DATA_STROKE_PAINTMODE;
gpd->flag &= ~GP_DATA_STROKE_SCULPTMODE;

View File

@ -338,7 +338,7 @@ static bool gpencil_transform_fill_poll(bContext *C)
bGPDlayer *gpl = BKE_gpencil_layer_active_get(gpd);
if ((gpl == NULL) || (ob->mode != OB_MODE_EDIT_GPENCIL)) {
if ((gpl == NULL) || (ob->mode != OB_MODE_EDIT_GPENCIL_LEGACY)) {
return false;
}

View File

@ -702,8 +702,8 @@ static bool gpencil_vertexpaint_brush_init(bContext *C, wmOperator *op)
Scene *scene = CTX_data_scene(C);
ToolSettings *ts = CTX_data_tool_settings(C);
Object *ob = CTX_data_active_object(C);
Paint *paint = ob->mode == OB_MODE_VERTEX_GPENCIL ? &ts->gp_vertexpaint->paint :
&ts->gp_paint->paint;
Paint *paint = ob->mode == OB_MODE_VERTEX_GPENCIL_LEGACY ? &ts->gp_vertexpaint->paint :
&ts->gp_paint->paint;
/* set the brush using the tool */
tGP_BrushVertexpaintData *gso;
@ -990,8 +990,8 @@ static bool gpencil_vertexpaint_brush_do_frame(bContext *C,
const float bound_mat[4][4])
{
Object *ob = CTX_data_active_object(C);
const char tool = ob->mode == OB_MODE_VERTEX_GPENCIL ? gso->brush->gpencil_vertex_tool :
gso->brush->gpencil_tool;
const char tool = ob->mode == OB_MODE_VERTEX_GPENCIL_LEGACY ? gso->brush->gpencil_vertex_tool :
gso->brush->gpencil_tool;
const int radius = (gso->brush->flag & GP_BRUSH_USE_PRESSURE) ?
gso->brush->size * gso->pressure :
gso->brush->size;

View File

@ -2480,17 +2480,17 @@ int UI_icon_from_object_mode(const int mode)
case OB_MODE_OBJECT:
return ICON_OBJECT_DATAMODE;
case OB_MODE_EDIT:
case OB_MODE_EDIT_GPENCIL:
case OB_MODE_EDIT_GPENCIL_LEGACY:
return ICON_EDITMODE_HLT;
case OB_MODE_SCULPT:
case OB_MODE_SCULPT_GPENCIL:
case OB_MODE_SCULPT_GPENCIL_LEGACY:
case OB_MODE_SCULPT_CURVES:
return ICON_SCULPTMODE_HLT;
case OB_MODE_VERTEX_PAINT:
case OB_MODE_VERTEX_GPENCIL:
case OB_MODE_VERTEX_GPENCIL_LEGACY:
return ICON_VPAINT_HLT;
case OB_MODE_WEIGHT_PAINT:
case OB_MODE_WEIGHT_GPENCIL:
case OB_MODE_WEIGHT_GPENCIL_LEGACY:
return ICON_WPAINT_HLT;
case OB_MODE_TEXTURE_PAINT:
return ICON_TPAINT_HLT;
@ -2498,7 +2498,7 @@ int UI_icon_from_object_mode(const int mode)
return ICON_PARTICLEMODE;
case OB_MODE_POSE:
return ICON_POSE_HLT;
case OB_MODE_PAINT_GPENCIL:
case OB_MODE_PAINT_GPENCIL_LEGACY:
return ICON_GREASEPENCIL;
}
return ICON_NONE;

View File

@ -1760,7 +1760,7 @@ static int object_mode_set_exec(bContext *C, wmOperator *op)
/* by default the operator assume is a mesh, but if gp object change mode */
if ((ob->type == OB_GPENCIL_LEGACY) && (mode == OB_MODE_EDIT)) {
mode = OB_MODE_EDIT_GPENCIL;
mode = OB_MODE_EDIT_GPENCIL_LEGACY;
}
if (!ED_object_mode_compat_test(ob, mode)) {

View File

@ -81,24 +81,24 @@ static const char *object_mode_op_string(eObjectMode mode)
if (mode == OB_MODE_POSE) {
return "OBJECT_OT_posemode_toggle";
}
if (mode == OB_MODE_EDIT_GPENCIL) {
if (mode == OB_MODE_EDIT_GPENCIL_LEGACY) {
return "GPENCIL_OT_editmode_toggle";
}
if (U.experimental.use_grease_pencil_version3) {
if (mode == OB_MODE_PAINT_GPENCIL) {
if (mode == OB_MODE_PAINT_GPENCIL_LEGACY) {
return "GREASE_PENCIL_OT_draw_mode_toggle";
}
}
if (mode == OB_MODE_PAINT_GPENCIL) {
if (mode == OB_MODE_PAINT_GPENCIL_LEGACY) {
return "GPENCIL_OT_paintmode_toggle";
}
if (mode == OB_MODE_SCULPT_GPENCIL) {
if (mode == OB_MODE_SCULPT_GPENCIL_LEGACY) {
return "GPENCIL_OT_sculptmode_toggle";
}
if (mode == OB_MODE_WEIGHT_GPENCIL) {
if (mode == OB_MODE_WEIGHT_GPENCIL_LEGACY) {
return "GPENCIL_OT_weightmode_toggle";
}
if (mode == OB_MODE_VERTEX_GPENCIL) {
if (mode == OB_MODE_VERTEX_GPENCIL_LEGACY) {
return "GPENCIL_OT_vertexmode_toggle";
}
if (mode == OB_MODE_SCULPT_CURVES) {
@ -146,7 +146,7 @@ bool ED_object_mode_compat_test(const Object *ob, eObjectMode mode)
}
break;
case OB_GPENCIL_LEGACY:
if (mode & (OB_MODE_EDIT_GPENCIL | OB_MODE_ALL_PAINT_GPENCIL)) {
if (mode & (OB_MODE_EDIT_GPENCIL_LEGACY | OB_MODE_ALL_PAINT_GPENCIL)) {
return true;
}
break;
@ -156,7 +156,7 @@ bool ED_object_mode_compat_test(const Object *ob, eObjectMode mode)
}
break;
case OB_GREASE_PENCIL:
if (mode & (OB_MODE_EDIT | OB_MODE_PAINT_GPENCIL)) {
if (mode & (OB_MODE_EDIT | OB_MODE_PAINT_GPENCIL_LEGACY)) {
return true;
}
break;
@ -208,7 +208,7 @@ bool ED_object_mode_set_ex(bContext *C, eObjectMode mode, bool use_undo, ReportL
}
if ((ob->type == OB_GPENCIL_LEGACY) && (mode == OB_MODE_EDIT)) {
mode = OB_MODE_EDIT_GPENCIL;
mode = OB_MODE_EDIT_GPENCIL_LEGACY;
}
if (ob->mode == mode) {

View File

@ -188,7 +188,7 @@ static void grease_pencil_draw_mode_enter(bContext *C)
GpPaint *grease_pencil_paint = scene->toolsettings->gp_paint;
BKE_paint_ensure(scene->toolsettings, (Paint **)&grease_pencil_paint);
ob->mode = OB_MODE_PAINT_GPENCIL;
ob->mode = OB_MODE_PAINT_GPENCIL_LEGACY;
/* TODO: Setup cursor color. BKE_paint_init() could be used, but creates an additional brush. */
/* TODO: Call ED_paint_cursor_start(...) */
@ -212,10 +212,10 @@ static int grease_pencil_draw_mode_toggle_exec(bContext *C, wmOperator *op)
Object *ob = CTX_data_active_object(C);
wmMsgBus *mbus = CTX_wm_message_bus(C);
const bool is_mode_set = ob->mode == OB_MODE_PAINT_GPENCIL;
const bool is_mode_set = ob->mode == OB_MODE_PAINT_GPENCIL_LEGACY;
if (is_mode_set) {
if (!ED_object_mode_compat_set(C, ob, OB_MODE_PAINT_GPENCIL, op->reports)) {
if (!ED_object_mode_compat_set(C, ob, OB_MODE_PAINT_GPENCIL_LEGACY, op->reports)) {
return OPERATOR_CANCELLED;
}
}

View File

@ -90,7 +90,7 @@ static eGPBrush_Presets gpencil_get_brush_preset_from_tool(bToolRef *tool,
enum eContextObjectMode mode)
{
switch (mode) {
case CTX_MODE_PAINT_GPENCIL: {
case CTX_MODE_PAINT_GPENCIL_LEGACY: {
if (STREQ(tool->runtime->data_block, "DRAW")) {
return GP_BRUSH_PRESET_PENCIL;
}
@ -105,7 +105,7 @@ static eGPBrush_Presets gpencil_get_brush_preset_from_tool(bToolRef *tool,
}
break;
}
case CTX_MODE_SCULPT_GPENCIL: {
case CTX_MODE_SCULPT_GPENCIL_LEGACY: {
if (STREQ(tool->runtime->data_block, "SMOOTH")) {
return GP_BRUSH_PRESET_SMOOTH_STROKE;
}
@ -135,7 +135,7 @@ static eGPBrush_Presets gpencil_get_brush_preset_from_tool(bToolRef *tool,
}
break;
}
case CTX_MODE_WEIGHT_GPENCIL: {
case CTX_MODE_WEIGHT_GPENCIL_LEGACY: {
if (STREQ(tool->runtime->data_block, "DRAW")) {
return GP_BRUSH_PRESET_WEIGHT_DRAW;
}
@ -150,7 +150,7 @@ static eGPBrush_Presets gpencil_get_brush_preset_from_tool(bToolRef *tool,
}
break;
}
case CTX_MODE_VERTEX_GPENCIL: {
case CTX_MODE_VERTEX_GPENCIL_LEGACY: {
if (STREQ(tool->runtime->data_block, "DRAW")) {
return GP_BRUSH_PRESET_VERTEX_DRAW;
}
@ -208,19 +208,19 @@ static int brush_add_gpencil_exec(bContext *C, wmOperator * /*op*/)
/* Get Brush mode base on context mode. */
const enum eContextObjectMode mode = CTX_data_mode_enum(C);
eObjectMode obmode = OB_MODE_PAINT_GPENCIL;
eObjectMode obmode = OB_MODE_PAINT_GPENCIL_LEGACY;
switch (mode) {
case CTX_MODE_PAINT_GPENCIL:
obmode = OB_MODE_PAINT_GPENCIL;
case CTX_MODE_PAINT_GPENCIL_LEGACY:
obmode = OB_MODE_PAINT_GPENCIL_LEGACY;
break;
case CTX_MODE_SCULPT_GPENCIL:
obmode = OB_MODE_SCULPT_GPENCIL;
case CTX_MODE_SCULPT_GPENCIL_LEGACY:
obmode = OB_MODE_SCULPT_GPENCIL_LEGACY;
break;
case CTX_MODE_WEIGHT_GPENCIL:
obmode = OB_MODE_WEIGHT_GPENCIL;
case CTX_MODE_WEIGHT_GPENCIL_LEGACY:
obmode = OB_MODE_WEIGHT_GPENCIL_LEGACY;
break;
case CTX_MODE_VERTEX_GPENCIL:
obmode = OB_MODE_VERTEX_GPENCIL;
case CTX_MODE_VERTEX_GPENCIL_LEGACY:
obmode = OB_MODE_VERTEX_GPENCIL_LEGACY;
break;
default:
return OPERATOR_CANCELLED;

View File

@ -1753,16 +1753,16 @@ void ED_view3d_buttons_region_layout_ex(const bContext *C,
case CTX_MODE_OBJECT:
ARRAY_SET_ITEMS(contexts, ".objectmode");
break;
case CTX_MODE_PAINT_GPENCIL:
case CTX_MODE_PAINT_GPENCIL_LEGACY:
ARRAY_SET_ITEMS(contexts, ".greasepencil_paint");
break;
case CTX_MODE_SCULPT_GPENCIL:
case CTX_MODE_SCULPT_GPENCIL_LEGACY:
ARRAY_SET_ITEMS(contexts, ".greasepencil_sculpt");
break;
case CTX_MODE_WEIGHT_GPENCIL:
case CTX_MODE_WEIGHT_GPENCIL_LEGACY:
ARRAY_SET_ITEMS(contexts, ".greasepencil_weight");
break;
case CTX_MODE_VERTEX_GPENCIL:
case CTX_MODE_VERTEX_GPENCIL_LEGACY:
ARRAY_SET_ITEMS(contexts, ".greasepencil_vertex");
break;
case CTX_MODE_SCULPT_CURVES:
@ -1773,19 +1773,19 @@ void ED_view3d_buttons_region_layout_ex(const bContext *C,
}
switch (mode) {
case CTX_MODE_PAINT_GPENCIL:
case CTX_MODE_PAINT_GPENCIL_LEGACY:
ARRAY_SET_ITEMS(contexts, ".greasepencil_paint");
break;
case CTX_MODE_SCULPT_GPENCIL:
case CTX_MODE_SCULPT_GPENCIL_LEGACY:
ARRAY_SET_ITEMS(contexts, ".greasepencil_sculpt");
break;
case CTX_MODE_WEIGHT_GPENCIL:
case CTX_MODE_WEIGHT_GPENCIL_LEGACY:
ARRAY_SET_ITEMS(contexts, ".greasepencil_weight");
break;
case CTX_MODE_EDIT_GPENCIL_LEGACY:
ARRAY_SET_ITEMS(contexts, ".greasepencil_edit");
break;
case CTX_MODE_VERTEX_GPENCIL:
case CTX_MODE_VERTEX_GPENCIL_LEGACY:
ARRAY_SET_ITEMS(contexts, ".greasepencil_vertex");
break;
default:

View File

@ -148,7 +148,7 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
t->flag = 0;
if (obact && !(t->options & (CTX_CURSOR | CTX_TEXTURE_SPACE)) &&
ELEM(object_mode, OB_MODE_EDIT, OB_MODE_EDIT_GPENCIL))
ELEM(object_mode, OB_MODE_EDIT, OB_MODE_EDIT_GPENCIL_LEGACY))
{
t->obedit_type = obact->type;
}

View File

@ -142,7 +142,7 @@ static void gizmo_mesh_extrude_setup(const bContext *C, wmGizmoGroup *gzgroup)
{
const char *op_idname = NULL;
/* Grease pencil does not use `obedit`. */
/* GPXX: Remove if OB_MODE_EDIT_GPENCIL is merged with OB_MODE_EDIT */
/* GPXX: Remove if OB_MODE_EDIT_GPENCIL_LEGACY is merged with OB_MODE_EDIT */
const Object *obact = CTX_data_active_object(C);
if (obact->type == OB_GPENCIL_LEGACY) {
op_idname = "GPENCIL_OT_extrude_move";

View File

@ -24,11 +24,11 @@ typedef enum eObjectMode {
OB_MODE_TEXTURE_PAINT = 1 << 4,
OB_MODE_PARTICLE_EDIT = 1 << 5,
OB_MODE_POSE = 1 << 6,
OB_MODE_EDIT_GPENCIL = 1 << 7,
OB_MODE_PAINT_GPENCIL = 1 << 8,
OB_MODE_SCULPT_GPENCIL = 1 << 9,
OB_MODE_WEIGHT_GPENCIL = 1 << 10,
OB_MODE_VERTEX_GPENCIL = 1 << 11,
OB_MODE_EDIT_GPENCIL_LEGACY = 1 << 7,
OB_MODE_PAINT_GPENCIL_LEGACY = 1 << 8,
OB_MODE_SCULPT_GPENCIL_LEGACY = 1 << 9,
OB_MODE_WEIGHT_GPENCIL_LEGACY = 1 << 10,
OB_MODE_VERTEX_GPENCIL_LEGACY = 1 << 11,
OB_MODE_SCULPT_CURVES = 1 << 12,
} eObjectMode;
@ -47,14 +47,14 @@ typedef enum eDrawType {
(OB_MODE_SCULPT | OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT | OB_MODE_TEXTURE_PAINT)
#define OB_MODE_ALL_PAINT_GPENCIL \
(OB_MODE_PAINT_GPENCIL | OB_MODE_SCULPT_GPENCIL | OB_MODE_WEIGHT_GPENCIL | \
OB_MODE_VERTEX_GPENCIL)
(OB_MODE_PAINT_GPENCIL_LEGACY | OB_MODE_SCULPT_GPENCIL_LEGACY | OB_MODE_WEIGHT_GPENCIL_LEGACY | \
OB_MODE_VERTEX_GPENCIL_LEGACY)
/** Any mode that uses Object.sculpt. */
#define OB_MODE_ALL_SCULPT (OB_MODE_SCULPT | OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)
/** Any mode that uses weightpaint. */
#define OB_MODE_ALL_WEIGHT_PAINT (OB_MODE_WEIGHT_PAINT | OB_MODE_WEIGHT_GPENCIL)
#define OB_MODE_ALL_WEIGHT_PAINT (OB_MODE_WEIGHT_PAINT | OB_MODE_WEIGHT_GPENCIL_LEGACY)
/**
* Any mode that has data or for Grease Pencil modes, we need to free when switching modes,
@ -62,8 +62,8 @@ typedef enum eDrawType {
*/
#define OB_MODE_ALL_MODE_DATA \
(OB_MODE_EDIT | OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT | OB_MODE_SCULPT | OB_MODE_POSE | \
OB_MODE_PAINT_GPENCIL | OB_MODE_EDIT_GPENCIL | OB_MODE_SCULPT_GPENCIL | \
OB_MODE_WEIGHT_GPENCIL | OB_MODE_VERTEX_GPENCIL | OB_MODE_SCULPT_CURVES)
OB_MODE_PAINT_GPENCIL_LEGACY | OB_MODE_EDIT_GPENCIL_LEGACY | OB_MODE_SCULPT_GPENCIL_LEGACY | \
OB_MODE_WEIGHT_GPENCIL_LEGACY | OB_MODE_VERTEX_GPENCIL_LEGACY | OB_MODE_SCULPT_CURVES)
#ifdef __cplusplus
}

View File

@ -1060,7 +1060,7 @@ static void rna_BrushGpencilSettings_default_eraser_update(Main *bmain,
for (Brush *brush = static_cast<Brush *>(bmain->brushes.first); brush;
brush = static_cast<Brush *>(brush->id.next))
{
if ((brush != brush_cur) && (brush->ob_mode == OB_MODE_PAINT_GPENCIL) &&
if ((brush != brush_cur) && (brush->ob_mode == OB_MODE_PAINT_GPENCIL_LEGACY) &&
(brush->gpencil_tool == GPAINT_TOOL_ERASE))
{
brush->gpencil_settings->flag &= ~GP_BRUSH_DEFAULT_ERASER;
@ -3708,11 +3708,11 @@ static void rna_def_brush(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Texture", "Use this brush in texture paint mode");
prop = RNA_def_property(srna, "use_paint_grease_pencil", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, nullptr, "ob_mode", OB_MODE_PAINT_GPENCIL);
RNA_def_property_boolean_sdna(prop, nullptr, "ob_mode", OB_MODE_PAINT_GPENCIL_LEGACY);
RNA_def_property_ui_text(prop, "Use Paint", "Use this brush in grease pencil drawing mode");
prop = RNA_def_property(srna, "use_vertex_grease_pencil", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, nullptr, "ob_mode", OB_MODE_VERTEX_GPENCIL);
RNA_def_property_boolean_sdna(prop, nullptr, "ob_mode", OB_MODE_VERTEX_GPENCIL_LEGACY);
RNA_def_property_ui_text(
prop, "Use Vertex", "Use this brush in grease pencil vertex color mode");

View File

@ -39,11 +39,11 @@ const EnumPropertyItem rna_enum_context_mode_items[] = {
{CTX_MODE_PAINT_TEXTURE, "PAINT_TEXTURE", 0, "Texture Paint", ""},
{CTX_MODE_PARTICLE, "PARTICLE", 0, "Particle", ""},
{CTX_MODE_OBJECT, "OBJECT", 0, "Object", ""},
{CTX_MODE_PAINT_GPENCIL, "PAINT_GPENCIL", 0, "Grease Pencil Paint", ""},
{CTX_MODE_PAINT_GPENCIL_LEGACY, "PAINT_GPENCIL", 0, "Grease Pencil Paint", ""},
{CTX_MODE_EDIT_GPENCIL_LEGACY, "EDIT_GPENCIL", 0, "Grease Pencil Edit", ""},
{CTX_MODE_SCULPT_GPENCIL, "SCULPT_GPENCIL", 0, "Grease Pencil Sculpt", ""},
{CTX_MODE_WEIGHT_GPENCIL, "WEIGHT_GPENCIL", 0, "Grease Pencil Weight Paint", ""},
{CTX_MODE_VERTEX_GPENCIL, "VERTEX_GPENCIL", 0, "Grease Pencil Vertex Paint", ""},
{CTX_MODE_SCULPT_GPENCIL_LEGACY, "SCULPT_GPENCIL", 0, "Grease Pencil Sculpt", ""},
{CTX_MODE_WEIGHT_GPENCIL_LEGACY, "WEIGHT_GPENCIL", 0, "Grease Pencil Weight Paint", ""},
{CTX_MODE_VERTEX_GPENCIL_LEGACY, "VERTEX_GPENCIL", 0, "Grease Pencil Vertex Paint", ""},
{CTX_MODE_SCULPT_CURVES, "SCULPT_CURVES", 0, "Curves Sculpt", ""},
{0, nullptr, 0, nullptr, nullptr},
};

View File

@ -60,27 +60,27 @@ const EnumPropertyItem rna_enum_object_mode_items[] = {
{OB_MODE_WEIGHT_PAINT, "WEIGHT_PAINT", ICON_WPAINT_HLT, "Weight Paint", ""},
{OB_MODE_TEXTURE_PAINT, "TEXTURE_PAINT", ICON_TPAINT_HLT, "Texture Paint", ""},
{OB_MODE_PARTICLE_EDIT, "PARTICLE_EDIT", ICON_PARTICLEMODE, "Particle Edit", ""},
{OB_MODE_EDIT_GPENCIL,
{OB_MODE_EDIT_GPENCIL_LEGACY,
"EDIT_GPENCIL",
ICON_EDITMODE_HLT,
"Edit Mode",
"Edit Grease Pencil Strokes"},
{OB_MODE_SCULPT_GPENCIL,
{OB_MODE_SCULPT_GPENCIL_LEGACY,
"SCULPT_GPENCIL",
ICON_SCULPTMODE_HLT,
"Sculpt Mode",
"Sculpt Grease Pencil Strokes"},
{OB_MODE_PAINT_GPENCIL,
{OB_MODE_PAINT_GPENCIL_LEGACY,
"PAINT_GPENCIL",
ICON_GREASEPENCIL,
"Draw Mode",
"Paint Grease Pencil Strokes"},
{OB_MODE_WEIGHT_GPENCIL,
{OB_MODE_WEIGHT_GPENCIL_LEGACY,
"WEIGHT_GPENCIL",
ICON_WPAINT_HLT,
"Weight Paint",
"Grease Pencil Weight Paint Strokes"},
{OB_MODE_VERTEX_GPENCIL,
{OB_MODE_VERTEX_GPENCIL_LEGACY,
"VERTEX_GPENCIL",
ICON_VPAINT_HLT,
"Vertex Paint",
@ -98,27 +98,27 @@ const EnumPropertyItem rna_enum_workspace_object_mode_items[] = {
{OB_MODE_WEIGHT_PAINT, "WEIGHT_PAINT", ICON_WPAINT_HLT, "Weight Paint", ""},
{OB_MODE_TEXTURE_PAINT, "TEXTURE_PAINT", ICON_TPAINT_HLT, "Texture Paint", ""},
{OB_MODE_PARTICLE_EDIT, "PARTICLE_EDIT", ICON_PARTICLEMODE, "Particle Edit", ""},
{OB_MODE_EDIT_GPENCIL,
{OB_MODE_EDIT_GPENCIL_LEGACY,
"EDIT_GPENCIL",
ICON_EDITMODE_HLT,
"Grease Pencil Edit Mode",
"Edit Grease Pencil Strokes"},
{OB_MODE_SCULPT_GPENCIL,
{OB_MODE_SCULPT_GPENCIL_LEGACY,
"SCULPT_GPENCIL",
ICON_SCULPTMODE_HLT,
"Grease Pencil Sculpt Mode",
"Sculpt Grease Pencil Strokes"},
{OB_MODE_PAINT_GPENCIL,
{OB_MODE_PAINT_GPENCIL_LEGACY,
"PAINT_GPENCIL",
ICON_GREASEPENCIL,
"Grease Pencil Draw",
"Paint Grease Pencil Strokes"},
{OB_MODE_VERTEX_GPENCIL,
{OB_MODE_VERTEX_GPENCIL_LEGACY,
"VERTEX_GPENCIL",
ICON_VPAINT_HLT,
"Grease Pencil Vertex Paint",
"Grease Pencil Vertex Paint Strokes"},
{OB_MODE_WEIGHT_GPENCIL,
{OB_MODE_WEIGHT_GPENCIL_LEGACY,
"WEIGHT_GPENCIL",
ICON_WPAINT_HLT,
"Grease Pencil Weight Paint",

View File

@ -345,25 +345,25 @@ static bool rna_Brush_mode_with_tool_poll(PointerRNA *ptr, PointerRNA value)
if (slot_index != brush->gpencil_tool) {
return false;
}
mode = OB_MODE_PAINT_GPENCIL;
mode = OB_MODE_PAINT_GPENCIL_LEGACY;
}
else if (paint_contains_brush_slot(&ts->gp_vertexpaint->paint, tslot, &slot_index)) {
if (slot_index != brush->gpencil_vertex_tool) {
return false;
}
mode = OB_MODE_VERTEX_GPENCIL;
mode = OB_MODE_VERTEX_GPENCIL_LEGACY;
}
else if (paint_contains_brush_slot(&ts->gp_sculptpaint->paint, tslot, &slot_index)) {
if (slot_index != brush->gpencil_sculpt_tool) {
return false;
}
mode = OB_MODE_SCULPT_GPENCIL;
mode = OB_MODE_SCULPT_GPENCIL_LEGACY;
}
else if (paint_contains_brush_slot(&ts->gp_weightpaint->paint, tslot, &slot_index)) {
if (slot_index != brush->gpencil_weight_tool) {
return false;
}
mode = OB_MODE_WEIGHT_GPENCIL;
mode = OB_MODE_WEIGHT_GPENCIL_LEGACY;
}
else if (paint_contains_brush_slot(&ts->curves_sculpt->paint, tslot, &slot_index)) {
if (slot_index != brush->curves_sculpt_tool) {

View File

@ -133,19 +133,19 @@ wmKeyMap *WM_keymap_guess_from_context(const bContext *C)
case CTX_MODE_OBJECT:
km_id = "Object Mode";
break;
case CTX_MODE_PAINT_GPENCIL:
case CTX_MODE_PAINT_GPENCIL_LEGACY:
km_id = "Grease Pencil Stroke Paint Mode";
break;
case CTX_MODE_EDIT_GPENCIL_LEGACY:
km_id = "Grease Pencil Stroke Edit Mode";
break;
case CTX_MODE_SCULPT_GPENCIL:
case CTX_MODE_SCULPT_GPENCIL_LEGACY:
km_id = "Grease Pencil Stroke Sculpt Mode";
break;
case CTX_MODE_WEIGHT_GPENCIL:
case CTX_MODE_WEIGHT_GPENCIL_LEGACY:
km_id = "Grease Pencil Stroke Weight Mode";
break;
case CTX_MODE_VERTEX_GPENCIL:
case CTX_MODE_VERTEX_GPENCIL_LEGACY:
km_id = "Grease Pencil Stroke Vertex Mode";
break;
case CTX_MODE_SCULPT_CURVES:

View File

@ -717,13 +717,13 @@ static const char *toolsystem_default_tool(const bToolKey *tkey)
case CTX_MODE_PAINT_VERTEX:
case CTX_MODE_PAINT_WEIGHT:
case CTX_MODE_PAINT_TEXTURE:
case CTX_MODE_PAINT_GPENCIL:
case CTX_MODE_PAINT_GPENCIL_LEGACY:
return "builtin_brush.Draw";
case CTX_MODE_SCULPT_GPENCIL:
case CTX_MODE_SCULPT_GPENCIL_LEGACY:
return "builtin_brush.Push";
case CTX_MODE_WEIGHT_GPENCIL:
case CTX_MODE_WEIGHT_GPENCIL_LEGACY:
return "builtin_brush.Weight";
case CTX_MODE_VERTEX_GPENCIL:
case CTX_MODE_VERTEX_GPENCIL_LEGACY:
return "builtin_brush.Draw";
case CTX_MODE_SCULPT_CURVES:
return "builtin_brush.Density";

View File

@ -45,6 +45,8 @@ author_table = {
"unclezeiv": "Davide Vercelli",
"dilithjay": "Dilith Jayakody",
"gaiaclary": "Gaia Clary",
"DESKTOP-ON14TH5\Sonny Campbell": "Sonny Campbell",
"demeterdzadik@gmail.com": "Demeter Dzadik",
"Diego Hernan Borghetti": "Diego Borghetti",
"Dotsnov Valentin": "Dontsov Valentin",
"Eitan": "Eitan Traurig",