diff options
Diffstat (limited to 'source/blender/draw/modes/object_mode.c')
-rw-r--r-- | source/blender/draw/modes/object_mode.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c index db906714dd5..675a2a02db8 100644 --- a/source/blender/draw/modes/object_mode.c +++ b/source/blender/draw/modes/object_mode.c @@ -165,6 +165,9 @@ typedef struct OBJECT_PrivateData { DRWShadingGroup *field_tube_limit; DRWShadingGroup *field_cone_limit; + /* Grease Pencil */ + DRWShadingGroup *gpencil_axes; + /* Speaker */ DRWShadingGroup *speaker; @@ -1136,6 +1139,10 @@ static void OBJECT_cache_init(void *vedata) geom = DRW_cache_screenspace_circle_get(); stl->g_data->field_curve_sta = shgroup_instance_screen_aligned(psl->non_meshes, geom); + /* Grease Pencil */ + geom = DRW_cache_gpencil_axes_get(); + stl->g_data->gpencil_axes = shgroup_instance(psl->non_meshes, geom); + /* Speaker */ geom = DRW_cache_speaker_get(); stl->g_data->speaker = shgroup_instance(psl->non_meshes, geom); @@ -1820,6 +1827,14 @@ static void volumes_free_smoke_textures(void) BLI_freelistN(&e_data.smoke_domains); } +static void DRW_shgroup_gpencil(OBJECT_StorageList *stl, Object *ob, ViewLayer *view_layer) +{ + float *color; + DRW_object_wire_theme_get(ob, view_layer, &color); + + DRW_shgroup_call_dynamic_add(stl->g_data->gpencil_axes, color, &ob->empty_drawsize, ob->obmat); +} + static void DRW_shgroup_speaker(OBJECT_StorageList *stl, Object *ob, ViewLayer *view_layer) { float *color; @@ -2445,6 +2460,9 @@ static void OBJECT_cache_populate(void *vedata, Object *ob) } DRW_shgroup_empty(stl, psl, ob, view_layer); break; + case OB_GPENCIL: + DRW_shgroup_gpencil(stl, ob, view_layer); + break; case OB_SPEAKER: if (hide_object_extra) { break; |