diff --git a/common/include/vecmat.h b/common/include/vecmat.h index 7b5008e05..fb602981b 100644 --- a/common/include/vecmat.h +++ b/common/include/vecmat.h @@ -38,6 +38,8 @@ struct vms_vector fix x, y, z; }; +class vm_distance_squared; + class vm_distance { public: @@ -107,6 +109,7 @@ public: { return vm_distance{0}; } + constexpr vm_distance_squared operator*(const vm_distance &) const; }; class vm_magnitude : public vm_distance @@ -174,9 +177,9 @@ public: } }; -static constexpr vm_distance_squared operator*(const vm_distance &a, const vm_distance &b) +constexpr vm_distance_squared vm_distance::operator*(const vm_distance &rhs) const { - return vm_distance_squared{static_cast(static_cast(a)) * static_cast(static_cast(b))}; + return vm_distance_squared{static_cast(static_cast(*this)) * static_cast(static_cast(rhs))}; } #define DEFINE_SERIAL_VMS_VECTOR_TO_MESSAGE() \