Skip to content
Snippets Groups Projects

Fix bug where the picking result was ignored

Merged Julius Nehring-Wirxel requested to merge jn/develop into develop
1 file
+ 8
10
Compare changes
  • Side-by-side
  • Inline
@@ -505,7 +505,7 @@ protected:
}
public:
line_ref(array_view<line> lines, canvas_data& canvas) : _lines(lines), _canvas(canvas) {}
line_ref(array_view<line> lines, canvas_data& canvas) : _canvas(canvas), _lines(lines) {}
line_ref(line_ref const&) = delete;
line_ref(line_ref&&) = delete;
@@ -642,7 +642,7 @@ protected:
}
public:
triangle_ref(array_view<triangle> triangles, canvas_data& canvas) : _triangles(triangles), _canvas(canvas) {}
triangle_ref(array_view<triangle> triangles, canvas_data& canvas) : _canvas(canvas), _triangles(triangles) {}
triangle_ref(triangle_ref const&) = delete;
triangle_ref(triangle_ref&&) = delete;
@@ -912,7 +912,7 @@ public:
auto prev_p = s.center + d1;
for (auto i = 1; i <= _state.resolution; ++i)
{
auto [si, co] = tg::sin_cos(360_deg * i / _state.resolution);
auto [si, co] = tg::sin_cos(360_deg * float(i) / float(_state.resolution));
auto curr_p = s.center + d0 * si + d1 * co;
_add_line(prev_p, curr_p, mat);
prev_p = curr_p;
@@ -1116,8 +1116,7 @@ public:
void add_data(canvas_data const& data)
{
auto add_range = [](auto& dest, auto const& src)
{
auto add_range = [](auto& dest, auto const& src) {
for (auto&& d : src)
dest.push_back(d);
};
@@ -1256,14 +1255,13 @@ protected:
template <class F>
std::function<picking_result(tg::pos3, tg::vec3)> _internal_make_pick_function(F&& f)
{
if constexpr (std::is_invocable_r_v<void, F, tg::pos3, tg::vec3>)
return [f = std::forward<F>(f)](tg::pos3 p, tg::vec3 n) -> picking_result
{
if constexpr (std::is_invocable_r_v<picking_result, F, tg::pos3, tg::vec3>)
return std::forward<F>(f);
else if constexpr (std::is_invocable_r_v<void, F, tg::pos3, tg::vec3>)
return [f = std::forward<F>(f)](tg::pos3 p, tg::vec3 n) -> picking_result {
f(p, n);
return {};
};
else if constexpr (std::is_invocable_r_v<picking_result, F, tg::pos3, tg::vec3>)
return std::forward<F>(f);
else
static_assert(tg::always_false<F> && "Invalid function signature");
}
Loading