Cleanup: deduplicate snapping parameters
The members `align`, `project`, `peel` and `use_backface_culling` already have a corresponding value in `TransSnap::flag`. Keeping values that represent the same thing is error prone.
This commit is contained in:
@@ -1645,7 +1645,7 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
|
||||
|
||||
if ((prop = RNA_struct_find_property(op->ptr, "snap_elements"))) {
|
||||
RNA_property_enum_set(op->ptr, prop, t->tsnap.mode);
|
||||
RNA_boolean_set(op->ptr, "use_snap_project", t->tsnap.project);
|
||||
RNA_boolean_set(op->ptr, "use_snap_project", (t->tsnap.flag & SCE_SNAP_PROJECT) != 0);
|
||||
RNA_enum_set(op->ptr, "snap_target", t->tsnap.source_operation);
|
||||
|
||||
eSnapTargetOP target = t->tsnap.target_operation;
|
||||
|
||||
@@ -290,10 +290,6 @@ typedef struct TransSnap {
|
||||
eSnapSourceOP source_operation;
|
||||
/* Determines which objects are possible target */
|
||||
eSnapTargetOP target_operation;
|
||||
bool align;
|
||||
bool project;
|
||||
bool peel;
|
||||
bool use_backface_culling;
|
||||
short face_nearest_steps;
|
||||
eTSnap status;
|
||||
/* Snapped Element Type (currently for objects only). */
|
||||
|
||||
@@ -354,7 +354,7 @@ static bool applyFaceProject(TransInfo *t, TransDataContainer *tc, TransData *td
|
||||
snap_object_params.snap_target_select = t->tsnap.target_operation;
|
||||
snap_object_params.edit_mode_type = (t->flag & T_EDIT) != 0 ? SNAP_GEOM_EDIT : SNAP_GEOM_FINAL;
|
||||
snap_object_params.use_occlusion_test = false;
|
||||
snap_object_params.use_backface_culling = t->tsnap.use_backface_culling;
|
||||
snap_object_params.use_backface_culling = (t->tsnap.flag & SCE_SNAP_BACKFACE_CULLING) != 0;
|
||||
|
||||
eSnapMode hit = ED_transform_snap_object_project_view3d(t->tsnap.object_context,
|
||||
t->depsgraph,
|
||||
@@ -379,7 +379,7 @@ static bool applyFaceProject(TransInfo *t, TransDataContainer *tc, TransData *td
|
||||
|
||||
add_v3_v3(td->loc, tvec);
|
||||
|
||||
if (t->tsnap.align && (t->options & CTX_OBJECT)) {
|
||||
if ((t->tsnap.flag & SCE_SNAP_ROTATE) && (t->options & CTX_OBJECT)) {
|
||||
/* handle alignment as well */
|
||||
const float *original_normal;
|
||||
float mat[3][3];
|
||||
@@ -460,7 +460,7 @@ bool transform_snap_project_individual_is_active(const TransInfo *t)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!(t->tsnap.project || (t->tsnap.mode & SCE_SNAP_MODE_FACE_NEAREST))) {
|
||||
if (!((t->tsnap.flag & SCE_SNAP_PROJECT) || (t->tsnap.mode & SCE_SNAP_MODE_FACE_NEAREST))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -508,7 +508,7 @@ static bool transform_snap_mixed_is_active(const TransInfo *t)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (t->tsnap.mode == SCE_SNAP_MODE_FACE_RAYCAST && t->tsnap.project) {
|
||||
if ((t->tsnap.mode == SCE_SNAP_MODE_FACE_RAYCAST) && (t->tsnap.flag & SCE_SNAP_PROJECT)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -555,8 +555,6 @@ void resetSnapping(TransInfo *t)
|
||||
{
|
||||
t->tsnap.status = SNAP_RESETTED;
|
||||
t->tsnap.snapElem = SCE_SNAP_MODE_NONE;
|
||||
t->tsnap.align = false;
|
||||
t->tsnap.project = false;
|
||||
t->tsnap.mode = SCE_SNAP_MODE_NONE;
|
||||
t->tsnap.target_operation = SCE_SNAP_TARGET_ALL;
|
||||
t->tsnap.source_operation = SCE_SNAP_SOURCE_CLOSEST;
|
||||
@@ -571,7 +569,7 @@ void resetSnapping(TransInfo *t)
|
||||
|
||||
bool usingSnappingNormal(const TransInfo *t)
|
||||
{
|
||||
return t->tsnap.align;
|
||||
return (t->tsnap.flag & SCE_SNAP_ROTATE) != 0;
|
||||
}
|
||||
|
||||
bool validSnappingNormal(const TransInfo *t)
|
||||
@@ -737,14 +735,14 @@ static void initSnappingMode(TransInfo *t)
|
||||
{
|
||||
if ((t->spacetype != SPACE_VIEW3D) || !(t->tsnap.mode & SCE_SNAP_MODE_FACE_RAYCAST)) {
|
||||
/* Force project off when not supported. */
|
||||
t->tsnap.project = false;
|
||||
t->tsnap.flag &= ~SCE_SNAP_PROJECT;
|
||||
}
|
||||
|
||||
setSnappingCallback(t);
|
||||
|
||||
if (t->spacetype == SPACE_VIEW3D) {
|
||||
if (t->tsnap.object_context == nullptr) {
|
||||
t->tsnap.use_backface_culling = snap_use_backface_culling(t);
|
||||
SET_FLAG_FROM_TEST(t->tsnap.flag, snap_use_backface_culling(t), SCE_SNAP_BACKFACE_CULLING);
|
||||
t->tsnap.object_context = ED_transform_snap_object_context_create(t->scene, 0);
|
||||
|
||||
if (t->data_type == &TransConvertType_Mesh) {
|
||||
@@ -815,14 +813,17 @@ void initSnapping(TransInfo *t, wmOperator *op)
|
||||
/* snap align only defined in specific cases */
|
||||
if ((prop = RNA_struct_find_property(op->ptr, "snap_align")) &&
|
||||
RNA_property_is_set(op->ptr, prop)) {
|
||||
t->tsnap.align = RNA_property_boolean_get(op->ptr, prop);
|
||||
SET_FLAG_FROM_TEST(
|
||||
t->tsnap.flag, RNA_property_boolean_get(op->ptr, prop), SCE_SNAP_ROTATE);
|
||||
|
||||
RNA_float_get_array(op->ptr, "snap_normal", t->tsnap.snapNormal);
|
||||
normalize_v3(t->tsnap.snapNormal);
|
||||
}
|
||||
|
||||
if ((prop = RNA_struct_find_property(op->ptr, "use_snap_project")) &&
|
||||
RNA_property_is_set(op->ptr, prop)) {
|
||||
t->tsnap.project = RNA_property_boolean_get(op->ptr, prop);
|
||||
SET_FLAG_FROM_TEST(
|
||||
t->tsnap.flag, RNA_property_boolean_get(op->ptr, prop), SCE_SNAP_PROJECT);
|
||||
}
|
||||
|
||||
/* use_snap_self is misnamed and should be use_snap_active */
|
||||
@@ -861,9 +862,6 @@ void initSnapping(TransInfo *t, wmOperator *op)
|
||||
t->modifiers |= MOD_SNAP;
|
||||
}
|
||||
|
||||
t->tsnap.align = ((t->tsnap.flag & SCE_SNAP_ROTATE) != 0);
|
||||
t->tsnap.project = ((t->tsnap.flag & SCE_SNAP_PROJECT) != 0);
|
||||
t->tsnap.peel = ((t->tsnap.flag & SCE_SNAP_PROJECT) != 0);
|
||||
SET_FLAG_FROM_TEST(t->tsnap.target_operation,
|
||||
(ts->snap_flag & SCE_SNAP_NOT_TO_ACTIVE),
|
||||
SCE_SNAP_TARGET_NOT_ACTIVE);
|
||||
@@ -1353,7 +1351,7 @@ eSnapMode snapObjectsTransform(
|
||||
snap_object_params.snap_target_select = t->tsnap.target_operation;
|
||||
snap_object_params.edit_mode_type = (t->flag & T_EDIT) != 0 ? SNAP_GEOM_EDIT : SNAP_GEOM_FINAL;
|
||||
snap_object_params.use_occlusion_test = t->settings->snap_mode != SCE_SNAP_MODE_FACE_RAYCAST;
|
||||
snap_object_params.use_backface_culling = t->tsnap.use_backface_culling;
|
||||
snap_object_params.use_backface_culling = (t->tsnap.flag & SCE_SNAP_BACKFACE_CULLING) != 0;
|
||||
|
||||
float *target = (t->tsnap.status & SNAP_SOURCE_FOUND) ? t->tsnap.snap_source : t->center_global;
|
||||
return ED_transform_snap_object_project_view3d(t->tsnap.object_context,
|
||||
|
||||
Reference in New Issue
Block a user