mirror of
https://github.com/godotengine/godot.git
synced 2024-11-14 08:03:05 +00:00
Merge duplicate branch conditions to one.
Use SWAP template for swapping values.
This commit is contained in:
parent
9293c76636
commit
41e43e0959
@ -96,37 +96,25 @@ float SkeletonModification2D::clamp_angle(float p_angle, float p_min_bound, floa
|
||||
p_max_bound = Math_TAU + p_max_bound;
|
||||
}
|
||||
if (p_min_bound > p_max_bound) {
|
||||
float tmp = p_min_bound;
|
||||
p_min_bound = p_max_bound;
|
||||
p_max_bound = tmp;
|
||||
SWAP(p_min_bound, p_max_bound);
|
||||
}
|
||||
|
||||
bool is_beyond_bounds = (p_angle < p_min_bound || p_angle > p_max_bound);
|
||||
bool is_within_bounds = (p_angle > p_min_bound && p_angle < p_max_bound);
|
||||
|
||||
// Note: May not be the most optimal way to clamp, but it always constraints to the nearest angle.
|
||||
if (p_invert == false) {
|
||||
if (p_angle < p_min_bound || p_angle > p_max_bound) {
|
||||
Vector2 min_bound_vec = Vector2(Math::cos(p_min_bound), Math::sin(p_min_bound));
|
||||
Vector2 max_bound_vec = Vector2(Math::cos(p_max_bound), Math::sin(p_max_bound));
|
||||
Vector2 angle_vec = Vector2(Math::cos(p_angle), Math::sin(p_angle));
|
||||
if ((!p_invert && is_beyond_bounds) || (p_invert && is_within_bounds)) {
|
||||
Vector2 min_bound_vec = Vector2(Math::cos(p_min_bound), Math::sin(p_min_bound));
|
||||
Vector2 max_bound_vec = Vector2(Math::cos(p_max_bound), Math::sin(p_max_bound));
|
||||
Vector2 angle_vec = Vector2(Math::cos(p_angle), Math::sin(p_angle));
|
||||
|
||||
if (angle_vec.distance_squared_to(min_bound_vec) <= angle_vec.distance_squared_to(max_bound_vec)) {
|
||||
p_angle = p_min_bound;
|
||||
} else {
|
||||
p_angle = p_max_bound;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (p_angle > p_min_bound && p_angle < p_max_bound) {
|
||||
Vector2 min_bound_vec = Vector2(Math::cos(p_min_bound), Math::sin(p_min_bound));
|
||||
Vector2 max_bound_vec = Vector2(Math::cos(p_max_bound), Math::sin(p_max_bound));
|
||||
Vector2 angle_vec = Vector2(Math::cos(p_angle), Math::sin(p_angle));
|
||||
|
||||
if (angle_vec.distance_squared_to(min_bound_vec) <= angle_vec.distance_squared_to(max_bound_vec)) {
|
||||
p_angle = p_min_bound;
|
||||
} else {
|
||||
p_angle = p_max_bound;
|
||||
}
|
||||
if (angle_vec.distance_squared_to(min_bound_vec) <= angle_vec.distance_squared_to(max_bound_vec)) {
|
||||
p_angle = p_min_bound;
|
||||
} else {
|
||||
p_angle = p_max_bound;
|
||||
}
|
||||
}
|
||||
|
||||
return p_angle;
|
||||
}
|
||||
|
||||
@ -152,9 +140,7 @@ void SkeletonModification2D::editor_draw_angle_constraints(Bone2D *p_operation_b
|
||||
arc_angle_max = (Math_PI * 2) + arc_angle_max;
|
||||
}
|
||||
if (arc_angle_min > arc_angle_max) {
|
||||
float tmp = arc_angle_min;
|
||||
arc_angle_min = arc_angle_max;
|
||||
arc_angle_max = tmp;
|
||||
SWAP(arc_angle_min, arc_angle_max);
|
||||
}
|
||||
arc_angle_min += p_operation_bone->get_bone_angle();
|
||||
arc_angle_max += p_operation_bone->get_bone_angle();
|
||||
|
@ -72,37 +72,25 @@ real_t SkeletonModification3D::clamp_angle(real_t p_angle, real_t p_min_bound, r
|
||||
p_max_bound = Math_TAU + p_max_bound;
|
||||
}
|
||||
if (p_min_bound > p_max_bound) {
|
||||
real_t tmp = p_min_bound;
|
||||
p_min_bound = p_max_bound;
|
||||
p_max_bound = tmp;
|
||||
SWAP(p_min_bound, p_max_bound);
|
||||
}
|
||||
|
||||
bool is_beyond_bounds = (p_angle < p_min_bound || p_angle > p_max_bound);
|
||||
bool is_within_bounds = (p_angle > p_min_bound && p_angle < p_max_bound);
|
||||
|
||||
// Note: May not be the most optimal way to clamp, but it always constraints to the nearest angle.
|
||||
if (p_invert == false) {
|
||||
if (p_angle < p_min_bound || p_angle > p_max_bound) {
|
||||
Vector2 min_bound_vec = Vector2(Math::cos(p_min_bound), Math::sin(p_min_bound));
|
||||
Vector2 max_bound_vec = Vector2(Math::cos(p_max_bound), Math::sin(p_max_bound));
|
||||
Vector2 angle_vec = Vector2(Math::cos(p_angle), Math::sin(p_angle));
|
||||
if ((!p_invert && is_beyond_bounds) || (p_invert && is_within_bounds)) {
|
||||
Vector2 min_bound_vec = Vector2(Math::cos(p_min_bound), Math::sin(p_min_bound));
|
||||
Vector2 max_bound_vec = Vector2(Math::cos(p_max_bound), Math::sin(p_max_bound));
|
||||
Vector2 angle_vec = Vector2(Math::cos(p_angle), Math::sin(p_angle));
|
||||
|
||||
if (angle_vec.distance_squared_to(min_bound_vec) <= angle_vec.distance_squared_to(max_bound_vec)) {
|
||||
p_angle = p_min_bound;
|
||||
} else {
|
||||
p_angle = p_max_bound;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (p_angle > p_min_bound && p_angle < p_max_bound) {
|
||||
Vector2 min_bound_vec = Vector2(Math::cos(p_min_bound), Math::sin(p_min_bound));
|
||||
Vector2 max_bound_vec = Vector2(Math::cos(p_max_bound), Math::sin(p_max_bound));
|
||||
Vector2 angle_vec = Vector2(Math::cos(p_angle), Math::sin(p_angle));
|
||||
|
||||
if (angle_vec.distance_squared_to(min_bound_vec) <= angle_vec.distance_squared_to(max_bound_vec)) {
|
||||
p_angle = p_min_bound;
|
||||
} else {
|
||||
p_angle = p_max_bound;
|
||||
}
|
||||
if (angle_vec.distance_squared_to(min_bound_vec) <= angle_vec.distance_squared_to(max_bound_vec)) {
|
||||
p_angle = p_min_bound;
|
||||
} else {
|
||||
p_angle = p_max_bound;
|
||||
}
|
||||
}
|
||||
|
||||
return p_angle;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user