diff options
author | Germano Cavalcante <germano.costa@ig.com.br> | 2021-04-01 18:32:59 +0300 |
---|---|---|
committer | Germano Cavalcante <germano.costa@ig.com.br> | 2021-04-01 18:32:59 +0300 |
commit | 76cdcc2bcadc8a8fecd2254ec767169b34893c6d (patch) | |
tree | 51537809f0eeaf5837e255cc7ec0de204d787dc9 /source/blender/editors/gizmo_library | |
parent | 5da5fb31db199e9aa0a661dcb8ed5b0e2442455d (diff) |
Cleanup/Refactor: Use flags instead of bool to configure the snap gizmo
This simplifies the addition of future improvements.
Also make it more practical to expose as a parameter of gizmo for Python.
Diffstat (limited to 'source/blender/editors/gizmo_library')
-rw-r--r-- | source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c | 48 |
1 files changed, 21 insertions, 27 deletions
diff --git a/source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c index c21535de4d5..1d18c82d896 100644 --- a/source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c +++ b/source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c @@ -78,9 +78,9 @@ typedef struct SnapGizmo3D { #endif /* Setup. */ + eSnapGizmo flag; float *prevpoint; float prevpoint_stack[3]; - int use_snap_override; short snap_elem_force; /* Return values. */ @@ -286,26 +286,32 @@ SnapObjectContext *ED_gizmotypes_snap_3d_context_ensure(Scene *scene, return snap_gizmo->snap_context_v3d; } -bool ED_gizmotypes_snap_3d_invert_snap_get(struct wmGizmo *gz) +void ED_gizmotypes_snap_3d_flag_set(struct wmGizmo *gz, eSnapGizmo flag) { -#ifdef USE_SNAP_DETECT_FROM_KEYMAP_HACK SnapGizmo3D *snap_gizmo = (SnapGizmo3D *)gz; - return snap_gizmo->invert_snap; -#else - return false; -#endif + snap_gizmo->flag |= flag; } -void ED_gizmotypes_snap_3d_toggle_set(wmGizmo *gz, bool enable) +void ED_gizmotypes_snap_3d_flag_clear(struct wmGizmo *gz, eSnapGizmo flag) { SnapGizmo3D *snap_gizmo = (SnapGizmo3D *)gz; - snap_gizmo->use_snap_override = (int)enable; + snap_gizmo->flag &= ~flag; } -void ED_gizmotypes_snap_3d_toggle_clear(wmGizmo *gz) +bool ED_gizmotypes_snap_3d_flag_test(struct wmGizmo *gz, eSnapGizmo flag) { SnapGizmo3D *snap_gizmo = (SnapGizmo3D *)gz; - snap_gizmo->use_snap_override = -1; + return (snap_gizmo->flag & flag) != 0; +} + +bool ED_gizmotypes_snap_3d_invert_snap_get(struct wmGizmo *gz) +{ +#ifdef USE_SNAP_DETECT_FROM_KEYMAP_HACK + SnapGizmo3D *snap_gizmo = (SnapGizmo3D *)gz; + return snap_gizmo->invert_snap; +#else + return false; +#endif } bool ED_gizmotypes_snap_3d_is_enabled(wmGizmo *gz) @@ -324,22 +330,11 @@ short ED_gizmotypes_snap_3d_update(wmGizmo *gz, SnapGizmo3D *snap_gizmo = (SnapGizmo3D *)gz; snap_gizmo->is_enabled = false; - if (snap_gizmo->use_snap_override != -1) { - if (snap_gizmo->use_snap_override == false) { - snap_gizmo->snap_elem = 0; - return 0; - } - } - -#ifdef USE_SNAP_DETECT_FROM_KEYMAP_HACK - snap_gizmo->invert_snap = invert_snap(snap_gizmo, wm); -#endif - - eventstate_save(snap_gizmo, wm); Scene *scene = DEG_get_input_scene(depsgraph); #ifdef USE_SNAP_DETECT_FROM_KEYMAP_HACK - if (snap_gizmo->use_snap_override == -1) { + if ((snap_gizmo->flag & ED_SNAPGIZMO_TOGGLE_ALWAYS_TRUE) == 0) { + snap_gizmo->invert_snap = invert_snap(snap_gizmo, wm); const ToolSettings *ts = scene->toolsettings; if (snap_gizmo->invert_snap != !(ts->snap_flag & SCE_SNAP)) { snap_gizmo->snap_elem = 0; @@ -348,6 +343,8 @@ short ED_gizmotypes_snap_3d_update(wmGizmo *gz, } #endif + eventstate_save(snap_gizmo, wm); + snap_gizmo->is_enabled = true; float co[3], no[3]; @@ -555,9 +552,6 @@ static void gizmo_snap_rna_snap_elem_index_get_fn(struct PointerRNA *ptr, static void snap_gizmo_setup(wmGizmo *gz) { - SnapGizmo3D *snap_gizmo = (SnapGizmo3D *)gz; - snap_gizmo->use_snap_override = -1; - /* Flags. */ gz->flag |= WM_GIZMO_NO_TOOLTIP; } |