Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGermano Cavalcante <germano.costa@ig.com.br>2021-04-01 18:32:59 +0300
committerGermano Cavalcante <germano.costa@ig.com.br>2021-04-01 18:32:59 +0300
commit76cdcc2bcadc8a8fecd2254ec767169b34893c6d (patch)
tree51537809f0eeaf5837e255cc7ec0de204d787dc9 /source/blender/editors/gizmo_library
parent5da5fb31db199e9aa0a661dcb8ed5b0e2442455d (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.c48
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;
}