From 17208cca79769286374316707c74483713598c76 Mon Sep 17 00:00:00 2001 From: Kp Date: Sat, 11 Feb 2017 21:42:43 +0000 Subject: [PATCH] Disallow int for vm_distance_squared --- common/include/vecmat.h | 5 +++-- similar/main/fvi.cpp | 4 ++-- similar/main/render.cpp | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/common/include/vecmat.h b/common/include/vecmat.h index 26f037992..6481c8d7c 100644 --- a/common/include/vecmat.h +++ b/common/include/vecmat.h @@ -127,6 +127,7 @@ class vm_distance_squared { public: fix64 d2; + vm_distance_squared(const fix &) = delete; constexpr explicit vm_distance_squared(const fix64 &f2) : d2(f2) { @@ -166,7 +167,7 @@ public: } static constexpr vm_distance_squared minimum_value() { - return vm_distance_squared{0}; + return vm_distance_squared{static_cast(0)}; } }; @@ -174,7 +175,7 @@ class vm_magnitude_squared : public vm_distance_squared { public: constexpr explicit vm_magnitude_squared(const uint64_t &f2) : - vm_distance_squared(f2) + vm_distance_squared(static_cast(f2)) { } }; diff --git a/similar/main/fvi.cpp b/similar/main/fvi.cpp index b8c34e27d..19b04a393 100644 --- a/similar/main/fvi.cpp +++ b/similar/main/fvi.cpp @@ -453,14 +453,14 @@ static vm_distance_squared check_vector_to_sphere_1(vms_vector &intp,const vms_v if (vm_vec_dist2(p0, sphere_pos) < sphere_rad_squared) { intp = p0; //don't move at all - return vm_distance_squared{1}; // note that we do not calculate a valid collision point. This is up to collision handling. + return vm_distance_squared{static_cast(1)}; // note that we do not calculate a valid collision point. This is up to collision handling. } else { return vm_distance_squared::minimum_value(); } } vm_vec_scale_add(intp,p0,dn,int_dist); //calc intersection point - return vm_distance_squared{int_dist * int_dist}; + return vm_distance_squared{static_cast(int_dist) * int_dist}; } else return vm_distance_squared::minimum_value(); diff --git a/similar/main/render.cpp b/similar/main/render.cpp index b49433cc6..3c46f0619 100644 --- a/similar/main/render.cpp +++ b/similar/main/render.cpp @@ -1050,7 +1050,7 @@ bool render_compare_context_t::operator()(const distant_object &a, const distant * First check without squaring. If true, the square can be * skipped. */ - if (abs_delta_dist_squared < combined_size || abs_delta_dist_squared < (combined_size * combined_size)) + if (abs_delta_dist_squared < combined_size || abs_delta_dist_squared < (static_cast(combined_size) * combined_size)) { //same position //these two objects are in the same position. see if one is a fireball