Disallow int for vm_distance_squared

This commit is contained in:
Kp 2017-02-11 21:42:43 +00:00
parent d8638c6c89
commit 17208cca79
3 changed files with 6 additions and 5 deletions

View file

@ -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<fix64>(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<fix64>(f2))
{
}
};

View file

@ -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<fix64>(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<fix64>(int_dist) * int_dist};
}
else
return vm_distance_squared::minimum_value();

View file

@ -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<fix64>(combined_size) * combined_size))
{ //same position
//these two objects are in the same position. see if one is a fireball